@payloadcms/ui 3.0.0-canary.ef0a8d0 → 3.0.0-canary.f1f97ff
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 +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +1 -1
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +1 -1
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +53 -28
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Collapsible/index.d.ts +1 -1
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +1 -1
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/DatePicker/index.scss +3 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +7 -3
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +4 -2
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +5 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +0 -6
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts +1 -2
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +46 -48
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +3 -0
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/Drawer/index.scss +2 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +10 -6
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts +1 -2
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.d.ts +3 -6
- package/dist/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/elements/EditUpload/index.js +20 -25
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.d.ts +1 -2
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +1 -2
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +38 -3
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/Localizer/index.d.ts.map +1 -1
- package/dist/elements/Localizer/index.js +6 -13
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +6 -3
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/SearchFilter/index.d.ts +5 -3
- package/dist/elements/SearchFilter/index.d.ts.map +1 -1
- package/dist/elements/SearchFilter/index.js +14 -53
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/SortColumn/index.d.ts +2 -2
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +4 -4
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +6 -2
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +2 -2
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +5 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/index.d.ts +1 -2
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts.map +1 -1
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +13 -28
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +11 -5
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +4 -2
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +7 -4
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.js +3 -3
- package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
- package/dist/elements/WhereBuilder/types.d.ts +1 -2
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/elements/withMergedProps/index.js +8 -2
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +6 -7
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +19 -18
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts +2 -3
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts +2 -15
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +25 -8
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +2 -3
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +5 -1
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts +2 -3
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -3
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts +1 -14
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +22 -9
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +1 -1
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +1 -1
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +2 -2
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts +1 -9
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +2 -2
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts +1 -7
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +2 -2
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts +1 -9
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +2 -2
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts +1 -9
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +2 -2
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.d.ts +2 -2
- package/dist/fields/FieldDescription/index.d.ts.map +1 -1
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.d.ts +2 -2
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.d.ts +2 -2
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts +2 -10
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js +2 -2
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.d.ts +2 -9
- package/dist/fields/Hidden/index.d.ts.map +1 -1
- package/dist/fields/Hidden/index.js +2 -2
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +1 -9
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +2 -2
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts +1 -14
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +2 -2
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts +1 -2
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +2 -2
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts +2 -9
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +2 -2
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.d.ts +2 -3
- package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts +1 -12
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +2 -2
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts +1 -2
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +2 -2
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +1 -11
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/RichText/index.d.ts +2 -8
- package/dist/fields/RichText/index.d.ts.map +1 -1
- package/dist/fields/RichText/index.js.map +1 -1
- package/dist/fields/Row/index.d.ts +1 -2
- package/dist/fields/Row/index.d.ts.map +1 -1
- package/dist/fields/Row/index.js +2 -2
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Row/index.scss +1 -5
- package/dist/fields/Select/Input.d.ts +1 -2
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts +1 -13
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +2 -2
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts +1 -9
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +24 -24
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/index.d.ts +3 -2
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +2 -2
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +1 -15
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts +3 -2
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +2 -2
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.d.ts +1 -11
- package/dist/fields/Textarea/types.d.ts.map +1 -1
- package/dist/fields/Textarea/types.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts +5 -2
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +2 -2
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +20 -5
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/shared/index.d.ts +1 -25
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.d.ts +1 -2
- package/dist/forms/Form/createNestedFieldPath.d.ts.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +11 -38
- 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 +5 -15
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/rowHelpers.d.ts +17 -0
- package/dist/forms/Form/rowHelpers.d.ts.map +1 -0
- package/dist/forms/Form/rowHelpers.js +24 -0
- package/dist/forms/Form/rowHelpers.js.map +1 -0
- package/dist/forms/Form/types.d.ts +3 -10
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts +4 -3
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/types.d.ts +1 -2
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +39 -18
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +5 -1
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +5 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/useUseAsTitle.d.ts +1 -2
- package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/providers/Auth/index.d.ts +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +47 -76
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +1 -2
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +128 -95
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +1 -55
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
- package/dist/providers/ComponentMap/index.d.ts +2 -1
- package/dist/providers/ComponentMap/index.d.ts.map +1 -1
- package/dist/providers/ComponentMap/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +58 -16
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts +16 -9
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +8 -6
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/UploadEdits/index.d.ts +12 -0
- package/dist/providers/UploadEdits/index.d.ts.map +1 -0
- package/dist/providers/UploadEdits/index.js +30 -0
- package/dist/providers/UploadEdits/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +3 -2
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/flattenFieldMap.d.ts +1 -1
- package/dist/utilities/flattenFieldMap.d.ts.map +1 -1
- package/dist/utilities/flattenFieldMap.js.map +1 -1
- package/dist/utilities/formatAdminURL.d.ts +8 -0
- package/dist/utilities/formatAdminURL.d.ts.map +1 -0
- package/dist/utilities/formatAdminURL.js +15 -0
- package/dist/utilities/formatAdminURL.js.map +1 -0
- package/package.json +4 -4
- package/dist/fields/Checkbox/types.d.ts +0 -12
- package/dist/fields/Checkbox/types.d.ts.map +0 -1
- package/dist/fields/Checkbox/types.js +0 -3
- package/dist/fields/Checkbox/types.js.map +0 -1
- package/dist/fields/Row/types.d.ts +0 -12
- package/dist/fields/Row/types.d.ts.map +0 -1
- package/dist/fields/Row/types.js +0 -3
- package/dist/fields/Row/types.js.map +0 -1
- package/dist/fields/Upload/types.d.ts +0 -10
- package/dist/fields/Upload/types.d.ts.map +0 -1
- package/dist/fields/Upload/types.js +0 -3
- package/dist/fields/Upload/types.js.map +0 -1
- package/dist/providers/FormQueryParams/index.d.ts +0 -13
- package/dist/providers/FormQueryParams/index.d.ts.map +0 -1
- package/dist/providers/FormQueryParams/index.js +0 -53
- package/dist/providers/FormQueryParams/index.js.map +0 -1
- package/dist/providers/FormQueryParams/types.d.ts +0 -16
- package/dist/providers/FormQueryParams/types.d.ts.map +0 -1
- package/dist/providers/FormQueryParams/types.js +0 -3
- package/dist/providers/FormQueryParams/types.js.map +0 -1
|
@@ -229,15 +229,29 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
|
229
229
|
}
|
|
230
230
|
case 'relationship':
|
|
231
231
|
{
|
|
232
|
-
if (
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
232
|
+
if (field.filterOptions) {
|
|
233
|
+
if (typeof field.filterOptions === 'object') {
|
|
234
|
+
if (typeof field.relationTo === 'string') {
|
|
235
|
+
fieldState.filterOptions = {
|
|
236
|
+
[field.relationTo]: field.filterOptions
|
|
237
|
+
};
|
|
238
|
+
} else {
|
|
239
|
+
fieldState.filterOptions = field.relationTo.reduce((acc, relation)=>{
|
|
240
|
+
acc[relation] = field.filterOptions;
|
|
241
|
+
return acc;
|
|
242
|
+
}, {});
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (typeof field.filterOptions === 'function') {
|
|
246
|
+
const query = await getFilterOptionsQuery(field.filterOptions, {
|
|
247
|
+
id,
|
|
248
|
+
data: fullData,
|
|
249
|
+
relationTo: field.relationTo,
|
|
250
|
+
siblingData: data,
|
|
251
|
+
user: req.user
|
|
252
|
+
});
|
|
253
|
+
fieldState.filterOptions = query;
|
|
254
|
+
}
|
|
241
255
|
}
|
|
242
256
|
if (field.hasMany) {
|
|
243
257
|
const relationshipValue = Array.isArray(data[field.name]) ? data[field.name].map((relationship)=>{
|
|
@@ -276,15 +290,22 @@ const ObjectId = ObjectIdImport.default || ObjectIdImport;
|
|
|
276
290
|
}
|
|
277
291
|
case 'upload':
|
|
278
292
|
{
|
|
279
|
-
if (
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
293
|
+
if (field.filterOptions) {
|
|
294
|
+
if (typeof field.filterOptions === 'object') {
|
|
295
|
+
fieldState.filterOptions = {
|
|
296
|
+
[field.relationTo]: field.filterOptions
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
if (typeof field.filterOptions === 'function') {
|
|
300
|
+
const query = await getFilterOptionsQuery(field.filterOptions, {
|
|
301
|
+
id,
|
|
302
|
+
data: fullData,
|
|
303
|
+
relationTo: field.relationTo,
|
|
304
|
+
siblingData: data,
|
|
305
|
+
user: req.user
|
|
306
|
+
});
|
|
307
|
+
fieldState.filterOptions = query;
|
|
308
|
+
}
|
|
288
309
|
}
|
|
289
310
|
const relationshipValue = data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name] ? data[field.name].id : data[field.name];
|
|
290
311
|
fieldState.value = relationshipValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field,\n FormField,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared'\n\nimport { getFilterOptionsQuery } from './getFilterOptionsQuery.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (path: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n data: Data\n field: Field\n fieldIndex: number\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = field.validate\n\n const fieldState: FormField = {\n errorPaths: [],\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n data: fullData,\n operation,\n req,\n siblingData: data,\n // @ts-expect-error-next-line\n jsonError,\n preferences,\n })\n }\n\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[`${path}${field.name}`] = fieldState\n }\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n\n await iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) => {\n const isNamedTab = tabHasName(tab)\n\n return iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: isNamedTab ? data?.[tab.name] || {} : data,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: isNamedTab ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n })\n\n await Promise.all(promises)\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getFilterOptionsQuery","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","data","field","fieldIndex","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","fieldState","errorPaths","fieldSchema","undefined","initialValue","valid","value","validationResult","jsonError","type","name","JSON","parse","e","siblingData","errorPath","includes","push","errorMessage","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","filterOptions","query","relationTo","user","hasMany","relationshipValue","map","relationship","tabs","tab","isNamedTab"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/forms/buildStateFromSchema/addFieldStatePromise.ts"],"sourcesContent":["import type {\n Data,\n DocumentPreferences,\n Field,\n FilterOptionsResult,\n FormField,\n FormState,\n PayloadRequest,\n} from 'payload'\n\nimport ObjectIdImport from 'bson-objectid'\nimport { fieldAffectsData, fieldHasSubFields, tabHasName } from 'payload/shared'\n\nimport { getFilterOptionsQuery } from './getFilterOptionsQuery.js'\nimport { iterateFields } from './iterateFields.js'\n\nconst ObjectId = (ObjectIdImport.default ||\n ObjectIdImport) as unknown as typeof ObjectIdImport.default\n\nexport type AddFieldStatePromiseArgs = {\n addErrorPathToParent: (path: string) => void\n /**\n * if all parents are localized, then the field is localized\n */\n anyParentLocalized?: boolean\n data: Data\n field: Field\n fieldIndex: number\n /**\n * You can use this to filter down to only `localized` fields that require translation (type: text, textarea, etc.). Another plugin might want to look for only `point` type fields to do some GIS function. With the filter function you can go in like a surgeon.\n */\n filter?: (args: AddFieldStatePromiseArgs) => boolean\n /**\n * Force the value of fields like arrays or blocks to be the full value instead of the length @default false\n */\n forceFullValue?: boolean\n fullData: Data\n id: number | string\n /**\n * Whether the field schema should be included in the state\n */\n includeSchema?: boolean\n /**\n * Whether to omit parent fields in the state. @default false\n */\n omitParents?: boolean\n operation: 'create' | 'update'\n passesCondition: boolean\n path: string\n preferences: DocumentPreferences\n\n /**\n * Req is used for validation and defaultValue calculation. If you don't need validation,\n * just create your own req and pass in the locale and the user\n */\n req: PayloadRequest\n /**\n * Whether to skip checking the field's condition. @default false\n */\n skipConditionChecks?: boolean\n /**\n * Whether to skip validating the field. @default false\n */\n skipValidation?: boolean\n state: FormState\n}\n\n/**\n * Flattens the fields schema and fields data.\n * The output is the field path (e.g. array.0.name) mapped to a FormField object.\n */\nexport const addFieldStatePromise = async (args: AddFieldStatePromiseArgs): Promise<void> => {\n const {\n id,\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized = false,\n data,\n field,\n fieldIndex,\n filter,\n forceFullValue = false,\n fullData,\n includeSchema = false,\n omitParents = false,\n operation,\n passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks = false,\n skipValidation = false,\n state,\n } = args\n\n if (fieldAffectsData(field)) {\n const validate = field.validate\n\n const fieldState: FormField = {\n errorPaths: [],\n fieldSchema: includeSchema ? field : undefined,\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n\n let validationResult: string | true = true\n\n if (typeof validate === 'function' && !skipValidation && passesCondition) {\n let jsonError\n\n if (field.type === 'json' && typeof data[field.name] === 'string') {\n try {\n JSON.parse(data[field.name] as string)\n } catch (e) {\n jsonError = e\n }\n }\n\n validationResult = await validate(data?.[field.name], {\n ...field,\n id,\n data: fullData,\n operation,\n req,\n siblingData: data,\n // @ts-expect-error-next-line\n jsonError,\n preferences,\n })\n }\n\n const addErrorPathToParent = (errorPath: string) => {\n if (typeof addErrorPathToParentArg === 'function') {\n addErrorPathToParentArg(errorPath)\n }\n\n if (!fieldState.errorPaths.includes(errorPath)) {\n fieldState.errorPaths.push(errorPath)\n fieldState.valid = false\n }\n }\n\n if (typeof validationResult === 'string') {\n fieldState.errorMessage = validationResult\n fieldState.valid = false\n addErrorPathToParent(`${path}${field.name}`)\n } else {\n fieldState.valid = true\n }\n\n switch (field.type) {\n case 'array': {\n const arrayValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = arrayValue.reduce(\n (acc, row, i) => {\n const rowPath = `${path}${field.name}.${i}.`\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? field.fields.find((field) => 'name' in field && field.name === 'id')\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? arrayValue : arrayValue.length\n fieldState.initialValue = forceFullValue ? arrayValue : arrayValue.length\n\n if (arrayValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'blocks': {\n const blocksValue = Array.isArray(data[field.name]) ? data[field.name] : []\n\n const { promises, rowMetadata } = blocksValue.reduce(\n (acc, row, i) => {\n const block = field.blocks.find((blockType) => blockType.slug === row.blockType)\n const rowPath = `${path}${field.name}.${i}.`\n\n if (block) {\n row.id = row?.id || new ObjectId().toHexString()\n\n if (!omitParents && (!filter || filter(args))) {\n state[`${rowPath}id`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'id',\n )\n : undefined,\n initialValue: row.id,\n valid: true,\n value: row.id,\n }\n\n state[`${rowPath}blockType`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockType',\n )\n : undefined,\n initialValue: row.blockType,\n valid: true,\n value: row.blockType,\n }\n\n state[`${rowPath}blockName`] = {\n fieldSchema: includeSchema\n ? block.fields.find(\n (blockField) => 'name' in blockField && blockField.name === 'blockName',\n )\n : undefined,\n initialValue: row.blockName,\n valid: true,\n value: row.blockName,\n }\n }\n\n acc.promises.push(\n iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: row,\n fields: block.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: rowPath,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n }),\n )\n\n const collapsedRowIDs = preferences?.fields?.[`${path}${field.name}`]?.collapsed\n\n acc.rowMetadata.push({\n id: row.id,\n blockType: row.blockType,\n collapsed:\n collapsedRowIDs === undefined\n ? field.admin.initCollapsed\n : collapsedRowIDs.includes(row.id),\n })\n }\n\n return acc\n },\n {\n promises: [],\n rowMetadata: [],\n },\n )\n\n await Promise.all(promises)\n\n // Add values to field state\n if (data[field.name] === null) {\n fieldState.value = null\n fieldState.initialValue = null\n } else {\n fieldState.value = forceFullValue ? blocksValue : blocksValue.length\n fieldState.initialValue = forceFullValue ? blocksValue : blocksValue.length\n\n if (blocksValue.length > 0) {\n fieldState.disableFormData = true\n }\n }\n\n fieldState.rows = rowMetadata\n\n // Add field to state\n if (!omitParents && (!filter || filter(args))) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'group': {\n if (!filter || filter(args)) {\n fieldState.disableFormData = true\n state[`${path}${field.name}`] = fieldState\n }\n\n await iterateFields({\n id,\n addErrorPathToParent,\n anyParentLocalized: field.localized || anyParentLocalized,\n data: data?.[field.name] || {},\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: `${path}${field.name}.`,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n\n break\n }\n\n case 'relationship': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n if (typeof field.relationTo === 'string') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n } else {\n fieldState.filterOptions = field.relationTo.reduce((acc, relation) => {\n acc[relation] = field.filterOptions\n return acc\n }, {})\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n if (field.hasMany) {\n const relationshipValue = Array.isArray(data[field.name])\n ? data[field.name].map((relationship) => {\n if (Array.isArray(field.relationTo)) {\n return {\n relationTo: relationship.relationTo,\n value:\n relationship.value && typeof relationship.value === 'object'\n ? relationship.value?.id\n : relationship.value,\n }\n }\n if (typeof relationship === 'object' && relationship !== null) {\n return relationship.id\n }\n return relationship\n })\n : undefined\n\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n if (\n data[field.name] &&\n typeof data[field.name] === 'object' &&\n 'relationTo' in data[field.name] &&\n 'value' in data[field.name]\n ) {\n const value =\n typeof data[field.name]?.value === 'object' &&\n data[field.name]?.value &&\n 'id' in data[field.name].value\n ? data[field.name].value.id\n : data[field.name].value\n const relationshipValue = {\n relationTo: data[field.name]?.relationTo,\n value,\n }\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n } else {\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n }\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n case 'upload': {\n if (field.filterOptions) {\n if (typeof field.filterOptions === 'object') {\n fieldState.filterOptions = {\n [field.relationTo]: field.filterOptions,\n }\n }\n\n if (typeof field.filterOptions === 'function') {\n const query = await getFilterOptionsQuery(field.filterOptions, {\n id,\n data: fullData,\n relationTo: field.relationTo,\n siblingData: data,\n user: req.user,\n })\n\n fieldState.filterOptions = query\n }\n }\n\n const relationshipValue =\n data[field.name] && typeof data[field.name] === 'object' && 'id' in data[field.name]\n ? data[field.name].id\n : data[field.name]\n fieldState.value = relationshipValue\n fieldState.initialValue = relationshipValue\n\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n\n default: {\n fieldState.value = data[field.name]\n fieldState.initialValue = data[field.name]\n\n // Add field to state\n if (!filter || filter(args)) {\n state[`${path}${field.name}`] = fieldState\n }\n\n break\n }\n }\n } else if (fieldHasSubFields(field)) {\n // Handle field types that do not use names (row, etc)\n\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n\n await iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: field.localized || anyParentLocalized,\n data,\n fields: field.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n } else if (field.type === 'tabs') {\n const promises = field.tabs.map((tab) => {\n const isNamedTab = tabHasName(tab)\n\n return iterateFields({\n id,\n // passthrough parent functionality\n addErrorPathToParent: addErrorPathToParentArg,\n anyParentLocalized: tab.localized || anyParentLocalized,\n data: isNamedTab ? data?.[tab.name] || {} : data,\n fields: tab.fields,\n filter,\n forceFullValue,\n fullData,\n includeSchema,\n omitParents,\n operation,\n parentPassesCondition: passesCondition,\n path: isNamedTab ? `${path}${tab.name}.` : path,\n preferences,\n req,\n skipConditionChecks,\n skipValidation,\n state,\n })\n })\n\n await Promise.all(promises)\n } else if (field.type === 'ui') {\n if (!filter || filter(args)) {\n state[`${path}_index-${fieldIndex}`] = {\n disableFormData: true,\n errorPaths: [],\n initialValue: undefined,\n passesCondition,\n valid: true,\n value: undefined,\n }\n }\n }\n}\n"],"names":["ObjectIdImport","fieldAffectsData","fieldHasSubFields","tabHasName","getFilterOptionsQuery","iterateFields","ObjectId","default","addFieldStatePromise","args","id","addErrorPathToParent","addErrorPathToParentArg","anyParentLocalized","data","field","fieldIndex","filter","forceFullValue","fullData","includeSchema","omitParents","operation","passesCondition","path","preferences","req","skipConditionChecks","skipValidation","state","validate","fieldState","errorPaths","fieldSchema","undefined","initialValue","valid","value","validationResult","jsonError","type","name","JSON","parse","e","siblingData","errorPath","includes","push","errorMessage","arrayValue","Array","isArray","promises","rowMetadata","reduce","acc","row","i","rowPath","toHexString","fields","find","localized","parentPassesCondition","collapsedRowIDs","collapsed","admin","initCollapsed","Promise","all","length","disableFormData","rows","blocksValue","block","blocks","blockType","slug","blockField","blockName","filterOptions","relationTo","relation","query","user","hasMany","relationshipValue","map","relationship","tabs","tab","isNamedTab"],"mappings":"AAUA,OAAOA,oBAAoB,gBAAe;AAC1C,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,UAAU,QAAQ,iBAAgB;AAEhF,SAASC,qBAAqB,QAAQ,6BAA4B;AAClE,SAASC,aAAa,QAAQ,qBAAoB;AAElD,MAAMC,WAAYN,eAAeO,OAAO,IACtCP;AAkDF;;;CAGC,GACD,OAAO,MAAMQ,uBAAuB,OAAOC;IACzC,MAAM,EACJC,EAAE,EACFC,sBAAsBC,uBAAuB,EAC7CC,qBAAqB,KAAK,EAC1BC,IAAI,EACJC,KAAK,EACLC,UAAU,EACVC,MAAM,EACNC,iBAAiB,KAAK,EACtBC,QAAQ,EACRC,gBAAgB,KAAK,EACrBC,cAAc,KAAK,EACnBC,SAAS,EACTC,eAAe,EACfC,IAAI,EACJC,WAAW,EACXC,GAAG,EACHC,sBAAsB,KAAK,EAC3BC,iBAAiB,KAAK,EACtBC,KAAK,EACN,GAAGpB;IAEJ,IAAIR,iBAAiBc,QAAQ;QAC3B,MAAMe,WAAWf,MAAMe,QAAQ;QAE/B,MAAMC,aAAwB;YAC5BC,YAAY,EAAE;YACdC,aAAab,gBAAgBL,QAAQmB;YACrCC,cAAcD;YACdX;YACAa,OAAO;YACPC,OAAOH;QACT;QAEA,IAAII,mBAAkC;QAEtC,IAAI,OAAOR,aAAa,cAAc,CAACF,kBAAkBL,iBAAiB;YACxE,IAAIgB;YAEJ,IAAIxB,MAAMyB,IAAI,KAAK,UAAU,OAAO1B,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,UAAU;gBACjE,IAAI;oBACFC,KAAKC,KAAK,CAAC7B,IAAI,CAACC,MAAM0B,IAAI,CAAC;gBAC7B,EAAE,OAAOG,GAAG;oBACVL,YAAYK;gBACd;YACF;YAEAN,mBAAmB,MAAMR,SAAShB,MAAM,CAACC,MAAM0B,IAAI,CAAC,EAAE;gBACpD,GAAG1B,KAAK;gBACRL;gBACAI,MAAMK;gBACNG;gBACAI;gBACAmB,aAAa/B;gBACb,6BAA6B;gBAC7ByB;gBACAd;YACF;QACF;QAEA,MAAMd,uBAAuB,CAACmC;YAC5B,IAAI,OAAOlC,4BAA4B,YAAY;gBACjDA,wBAAwBkC;YAC1B;YAEA,IAAI,CAACf,WAAWC,UAAU,CAACe,QAAQ,CAACD,YAAY;gBAC9Cf,WAAWC,UAAU,CAACgB,IAAI,CAACF;gBAC3Bf,WAAWK,KAAK,GAAG;YACrB;QACF;QAEA,IAAI,OAAOE,qBAAqB,UAAU;YACxCP,WAAWkB,YAAY,GAAGX;YAC1BP,WAAWK,KAAK,GAAG;YACnBzB,qBAAqB,CAAC,EAAEa,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC;QAC7C,OAAO;YACLV,WAAWK,KAAK,GAAG;QACrB;QAEA,OAAQrB,MAAMyB,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMU,aAAaC,MAAMC,OAAO,CAACtC,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAAI3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,GAAG,EAAE;oBAE1E,MAAM,EAAEY,QAAQ,EAAEC,WAAW,EAAE,GAAGJ,WAAWK,MAAM,CACjD,CAACC,KAAKC,KAAKC;wBACT,MAAMC,UAAU,CAAC,EAAEnC,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,EAAEiB,EAAE,CAAC,CAAC;wBAC5CD,IAAI/C,EAAE,GAAG+C,KAAK/C,MAAM,IAAIJ,WAAWsD,WAAW;wBAE9C,IAAI,CAACvC,eAAgB,CAAA,CAACJ,UAAUA,OAAOR,KAAI,GAAI;4BAC7CoB,KAAK,CAAC,CAAC,EAAE8B,QAAQ,EAAE,CAAC,CAAC,GAAG;gCACtB1B,aAAab,gBACTL,MAAM8C,MAAM,CAACC,IAAI,CAAC,CAAC/C,QAAU,UAAUA,SAASA,MAAM0B,IAAI,KAAK,QAC/DP;gCACJC,cAAcsB,IAAI/C,EAAE;gCACpB0B,OAAO;gCACPC,OAAOoB,IAAI/C,EAAE;4BACf;wBACF;wBAEA8C,IAAIH,QAAQ,CAACL,IAAI,CACf3C,cAAc;4BACZK;4BACAC;4BACAE,oBAAoBE,MAAMgD,SAAS,IAAIlD;4BACvCC,MAAM2C;4BACNI,QAAQ9C,MAAM8C,MAAM;4BACpB5C;4BACAC;4BACAC;4BACAC;4BACAC;4BACAC;4BACA0C,uBAAuBzC;4BACvBC,MAAMmC;4BACNlC;4BACAC;4BACAC;4BACAC;4BACAC;wBACF;wBAGF,MAAMoC,kBAAkBxC,aAAaoC,QAAQ,CAAC,CAAC,EAAErC,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,EAAEyB;wBAEvEV,IAAIF,WAAW,CAACN,IAAI,CAAC;4BACnBtC,IAAI+C,IAAI/C,EAAE;4BACVwD,WACED,oBAAoB/B,YAChBnB,MAAMoD,KAAK,CAACC,aAAa,GACzBH,gBAAgBlB,QAAQ,CAACU,IAAI/C,EAAE;wBACvC;wBAEA,OAAO8C;oBACT,GACA;wBACEH,UAAU,EAAE;wBACZC,aAAa,EAAE;oBACjB;oBAGF,MAAMe,QAAQC,GAAG,CAACjB;oBAElB,4BAA4B;oBAC5B,IAAIvC,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,MAAM;wBAC7BV,WAAWM,KAAK,GAAG;wBACnBN,WAAWI,YAAY,GAAG;oBAC5B,OAAO;wBACLJ,WAAWM,KAAK,GAAGnB,iBAAiBgC,aAAaA,WAAWqB,MAAM;wBAClExC,WAAWI,YAAY,GAAGjB,iBAAiBgC,aAAaA,WAAWqB,MAAM;wBAEzE,IAAIrB,WAAWqB,MAAM,GAAG,GAAG;4BACzBxC,WAAWyC,eAAe,GAAG;wBAC/B;oBACF;oBAEAzC,WAAW0C,IAAI,GAAGnB;oBAElB,qBAAqB;oBACrB,IAAI,CAACjC,eAAgB,CAAA,CAACJ,UAAUA,OAAOR,KAAI,GAAI;wBAC7CoB,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,MAAM2C,cAAcvB,MAAMC,OAAO,CAACtC,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAAI3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,GAAG,EAAE;oBAE3E,MAAM,EAAEY,QAAQ,EAAEC,WAAW,EAAE,GAAGoB,YAAYnB,MAAM,CAClD,CAACC,KAAKC,KAAKC;wBACT,MAAMiB,QAAQ5D,MAAM6D,MAAM,CAACd,IAAI,CAAC,CAACe,YAAcA,UAAUC,IAAI,KAAKrB,IAAIoB,SAAS;wBAC/E,MAAMlB,UAAU,CAAC,EAAEnC,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,EAAEiB,EAAE,CAAC,CAAC;wBAE5C,IAAIiB,OAAO;4BACTlB,IAAI/C,EAAE,GAAG+C,KAAK/C,MAAM,IAAIJ,WAAWsD,WAAW;4BAE9C,IAAI,CAACvC,eAAgB,CAAA,CAACJ,UAAUA,OAAOR,KAAI,GAAI;gCAC7CoB,KAAK,CAAC,CAAC,EAAE8B,QAAQ,EAAE,CAAC,CAAC,GAAG;oCACtB1B,aAAab,gBACTuD,MAAMd,MAAM,CAACC,IAAI,CACf,CAACiB,aAAe,UAAUA,cAAcA,WAAWtC,IAAI,KAAK,QAE9DP;oCACJC,cAAcsB,IAAI/C,EAAE;oCACpB0B,OAAO;oCACPC,OAAOoB,IAAI/C,EAAE;gCACf;gCAEAmB,KAAK,CAAC,CAAC,EAAE8B,QAAQ,SAAS,CAAC,CAAC,GAAG;oCAC7B1B,aAAab,gBACTuD,MAAMd,MAAM,CAACC,IAAI,CACf,CAACiB,aAAe,UAAUA,cAAcA,WAAWtC,IAAI,KAAK,eAE9DP;oCACJC,cAAcsB,IAAIoB,SAAS;oCAC3BzC,OAAO;oCACPC,OAAOoB,IAAIoB,SAAS;gCACtB;gCAEAhD,KAAK,CAAC,CAAC,EAAE8B,QAAQ,SAAS,CAAC,CAAC,GAAG;oCAC7B1B,aAAab,gBACTuD,MAAMd,MAAM,CAACC,IAAI,CACf,CAACiB,aAAe,UAAUA,cAAcA,WAAWtC,IAAI,KAAK,eAE9DP;oCACJC,cAAcsB,IAAIuB,SAAS;oCAC3B5C,OAAO;oCACPC,OAAOoB,IAAIuB,SAAS;gCACtB;4BACF;4BAEAxB,IAAIH,QAAQ,CAACL,IAAI,CACf3C,cAAc;gCACZK;gCACAC;gCACAE,oBAAoBE,MAAMgD,SAAS,IAAIlD;gCACvCC,MAAM2C;gCACNI,QAAQc,MAAMd,MAAM;gCACpB5C;gCACAC;gCACAC;gCACAC;gCACAC;gCACAC;gCACA0C,uBAAuBzC;gCACvBC,MAAMmC;gCACNlC;gCACAC;gCACAC;gCACAC;gCACAC;4BACF;4BAGF,MAAMoC,kBAAkBxC,aAAaoC,QAAQ,CAAC,CAAC,EAAErC,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,EAAEyB;4BAEvEV,IAAIF,WAAW,CAACN,IAAI,CAAC;gCACnBtC,IAAI+C,IAAI/C,EAAE;gCACVmE,WAAWpB,IAAIoB,SAAS;gCACxBX,WACED,oBAAoB/B,YAChBnB,MAAMoD,KAAK,CAACC,aAAa,GACzBH,gBAAgBlB,QAAQ,CAACU,IAAI/C,EAAE;4BACvC;wBACF;wBAEA,OAAO8C;oBACT,GACA;wBACEH,UAAU,EAAE;wBACZC,aAAa,EAAE;oBACjB;oBAGF,MAAMe,QAAQC,GAAG,CAACjB;oBAElB,4BAA4B;oBAC5B,IAAIvC,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,MAAM;wBAC7BV,WAAWM,KAAK,GAAG;wBACnBN,WAAWI,YAAY,GAAG;oBAC5B,OAAO;wBACLJ,WAAWM,KAAK,GAAGnB,iBAAiBwD,cAAcA,YAAYH,MAAM;wBACpExC,WAAWI,YAAY,GAAGjB,iBAAiBwD,cAAcA,YAAYH,MAAM;wBAE3E,IAAIG,YAAYH,MAAM,GAAG,GAAG;4BAC1BxC,WAAWyC,eAAe,GAAG;wBAC/B;oBACF;oBAEAzC,WAAW0C,IAAI,GAAGnB;oBAElB,qBAAqB;oBACrB,IAAI,CAACjC,eAAgB,CAAA,CAACJ,UAAUA,OAAOR,KAAI,GAAI;wBAC7CoB,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA;gBACF;YAEA,KAAK;gBAAS;oBACZ,IAAI,CAACd,UAAUA,OAAOR,OAAO;wBAC3BsB,WAAWyC,eAAe,GAAG;wBAC7B3C,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA,MAAM1B,cAAc;wBAClBK;wBACAC;wBACAE,oBAAoBE,MAAMgD,SAAS,IAAIlD;wBACvCC,MAAMA,MAAM,CAACC,MAAM0B,IAAI,CAAC,IAAI,CAAC;wBAC7BoB,QAAQ9C,MAAM8C,MAAM;wBACpB5C;wBACAC;wBACAC;wBACAC;wBACAC;wBACAC;wBACA0C,uBAAuBzC;wBACvBC,MAAM,CAAC,EAAEA,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC;wBAC7BhB;wBACAC;wBACAC;wBACAC;wBACAC;oBACF;oBAEA;gBACF;YAEA,KAAK;gBAAgB;oBACnB,IAAId,MAAMkE,aAAa,EAAE;wBACvB,IAAI,OAAOlE,MAAMkE,aAAa,KAAK,UAAU;4BAC3C,IAAI,OAAOlE,MAAMmE,UAAU,KAAK,UAAU;gCACxCnD,WAAWkD,aAAa,GAAG;oCACzB,CAAClE,MAAMmE,UAAU,CAAC,EAAEnE,MAAMkE,aAAa;gCACzC;4BACF,OAAO;gCACLlD,WAAWkD,aAAa,GAAGlE,MAAMmE,UAAU,CAAC3B,MAAM,CAAC,CAACC,KAAK2B;oCACvD3B,GAAG,CAAC2B,SAAS,GAAGpE,MAAMkE,aAAa;oCACnC,OAAOzB;gCACT,GAAG,CAAC;4BACN;wBACF;wBAEA,IAAI,OAAOzC,MAAMkE,aAAa,KAAK,YAAY;4BAC7C,MAAMG,QAAQ,MAAMhF,sBAAsBW,MAAMkE,aAAa,EAAE;gCAC7DvE;gCACAI,MAAMK;gCACN+D,YAAYnE,MAAMmE,UAAU;gCAC5BrC,aAAa/B;gCACbuE,MAAM3D,IAAI2D,IAAI;4BAChB;4BAEAtD,WAAWkD,aAAa,GAAGG;wBAC7B;oBACF;oBAEA,IAAIrE,MAAMuE,OAAO,EAAE;wBACjB,MAAMC,oBAAoBpC,MAAMC,OAAO,CAACtC,IAAI,CAACC,MAAM0B,IAAI,CAAC,IACpD3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAAC+C,GAAG,CAAC,CAACC;4BACpB,IAAItC,MAAMC,OAAO,CAACrC,MAAMmE,UAAU,GAAG;gCACnC,OAAO;oCACLA,YAAYO,aAAaP,UAAU;oCACnC7C,OACEoD,aAAapD,KAAK,IAAI,OAAOoD,aAAapD,KAAK,KAAK,WAChDoD,aAAapD,KAAK,EAAE3B,KACpB+E,aAAapD,KAAK;gCAC1B;4BACF;4BACA,IAAI,OAAOoD,iBAAiB,YAAYA,iBAAiB,MAAM;gCAC7D,OAAOA,aAAa/E,EAAE;4BACxB;4BACA,OAAO+E;wBACT,KACAvD;wBAEJH,WAAWM,KAAK,GAAGkD;wBACnBxD,WAAWI,YAAY,GAAGoD;oBAC5B,OAAO,IAAIpC,MAAMC,OAAO,CAACrC,MAAMmE,UAAU,GAAG;wBAC1C,IACEpE,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAChB,OAAO3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,YAC5B,gBAAgB3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAChC,WAAW3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,EAC3B;4BACA,MAAMJ,QACJ,OAAOvB,IAAI,CAACC,MAAM0B,IAAI,CAAC,EAAEJ,UAAU,YACnCvB,IAAI,CAACC,MAAM0B,IAAI,CAAC,EAAEJ,SAClB,QAAQvB,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAACJ,KAAK,GAC1BvB,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAACJ,KAAK,CAAC3B,EAAE,GACzBI,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAACJ,KAAK;4BAC5B,MAAMkD,oBAAoB;gCACxBL,YAAYpE,IAAI,CAACC,MAAM0B,IAAI,CAAC,EAAEyC;gCAC9B7C;4BACF;4BACAN,WAAWM,KAAK,GAAGkD;4BACnBxD,WAAWI,YAAY,GAAGoD;wBAC5B;oBACF,OAAO;wBACL,MAAMA,oBACJzE,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAAI,OAAO3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,YAAY,QAAQ3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,GAChF3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAAC/B,EAAE,GACnBI,IAAI,CAACC,MAAM0B,IAAI,CAAC;wBACtBV,WAAWM,KAAK,GAAGkD;wBACnBxD,WAAWI,YAAY,GAAGoD;oBAC5B;oBAEA,IAAI,CAACtE,UAAUA,OAAOR,OAAO;wBAC3BoB,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,IAAIhB,MAAMkE,aAAa,EAAE;wBACvB,IAAI,OAAOlE,MAAMkE,aAAa,KAAK,UAAU;4BAC3ClD,WAAWkD,aAAa,GAAG;gCACzB,CAAClE,MAAMmE,UAAU,CAAC,EAAEnE,MAAMkE,aAAa;4BACzC;wBACF;wBAEA,IAAI,OAAOlE,MAAMkE,aAAa,KAAK,YAAY;4BAC7C,MAAMG,QAAQ,MAAMhF,sBAAsBW,MAAMkE,aAAa,EAAE;gCAC7DvE;gCACAI,MAAMK;gCACN+D,YAAYnE,MAAMmE,UAAU;gCAC5BrC,aAAa/B;gCACbuE,MAAM3D,IAAI2D,IAAI;4BAChB;4BAEAtD,WAAWkD,aAAa,GAAGG;wBAC7B;oBACF;oBAEA,MAAMG,oBACJzE,IAAI,CAACC,MAAM0B,IAAI,CAAC,IAAI,OAAO3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,KAAK,YAAY,QAAQ3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,GAChF3B,IAAI,CAACC,MAAM0B,IAAI,CAAC,CAAC/B,EAAE,GACnBI,IAAI,CAACC,MAAM0B,IAAI,CAAC;oBACtBV,WAAWM,KAAK,GAAGkD;oBACnBxD,WAAWI,YAAY,GAAGoD;oBAE1B,IAAI,CAACtE,UAAUA,OAAOR,OAAO;wBAC3BoB,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA;gBACF;YAEA;gBAAS;oBACPA,WAAWM,KAAK,GAAGvB,IAAI,CAACC,MAAM0B,IAAI,CAAC;oBACnCV,WAAWI,YAAY,GAAGrB,IAAI,CAACC,MAAM0B,IAAI,CAAC;oBAE1C,qBAAqB;oBACrB,IAAI,CAACxB,UAAUA,OAAOR,OAAO;wBAC3BoB,KAAK,CAAC,CAAC,EAAEL,KAAK,EAAET,MAAM0B,IAAI,CAAC,CAAC,CAAC,GAAGV;oBAClC;oBAEA;gBACF;QACF;IACF,OAAO,IAAI7B,kBAAkBa,QAAQ;QACnC,sDAAsD;QAEtD,IAAI,CAACE,UAAUA,OAAOR,OAAO;YAC3BoB,KAAK,CAAC,CAAC,EAAEL,KAAK,OAAO,EAAER,WAAW,CAAC,CAAC,GAAG;gBACrCwD,iBAAiB;gBACjBxC,YAAY,EAAE;gBACdG,cAAcD;gBACdX;gBACAa,OAAO;gBACPC,OAAOH;YACT;QACF;QAEA,MAAM7B,cAAc;YAClBK;YACA,mCAAmC;YACnCC,sBAAsBC;YACtBC,oBAAoBE,MAAMgD,SAAS,IAAIlD;YACvCC;YACA+C,QAAQ9C,MAAM8C,MAAM;YACpB5C;YACAC;YACAC;YACAC;YACAC;YACAC;YACA0C,uBAAuBzC;YACvBC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IACF,OAAO,IAAId,MAAMyB,IAAI,KAAK,QAAQ;QAChC,MAAMa,WAAWtC,MAAM2E,IAAI,CAACF,GAAG,CAAC,CAACG;YAC/B,MAAMC,aAAazF,WAAWwF;YAE9B,OAAOtF,cAAc;gBACnBK;gBACA,mCAAmC;gBACnCC,sBAAsBC;gBACtBC,oBAAoB8E,IAAI5B,SAAS,IAAIlD;gBACrCC,MAAM8E,aAAa9E,MAAM,CAAC6E,IAAIlD,IAAI,CAAC,IAAI,CAAC,IAAI3B;gBAC5C+C,QAAQ8B,IAAI9B,MAAM;gBAClB5C;gBACAC;gBACAC;gBACAC;gBACAC;gBACAC;gBACA0C,uBAAuBzC;gBACvBC,MAAMoE,aAAa,CAAC,EAAEpE,KAAK,EAAEmE,IAAIlD,IAAI,CAAC,CAAC,CAAC,GAAGjB;gBAC3CC;gBACAC;gBACAC;gBACAC;gBACAC;YACF;QACF;QAEA,MAAMwC,QAAQC,GAAG,CAACjB;IACpB,OAAO,IAAItC,MAAMyB,IAAI,KAAK,MAAM;QAC9B,IAAI,CAACvB,UAAUA,OAAOR,OAAO;YAC3BoB,KAAK,CAAC,CAAC,EAAEL,KAAK,OAAO,EAAER,WAAW,CAAC,CAAC,GAAG;gBACrCwD,iBAAiB;gBACjBxC,YAAY,EAAE;gBACdG,cAAcD;gBACdX;gBACAa,OAAO;gBACPC,OAAOH;YACT;QACF;IACF;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphics/Account/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphics/Account/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,eAAO,MAAM,OAAO,yBAenB,CAAA"}
|
|
@@ -4,13 +4,17 @@ import { usePathname } from 'next/navigation.js';
|
|
|
4
4
|
import React from 'react';
|
|
5
5
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
6
6
|
import { useConfig } from '../../providers/Config/index.js';
|
|
7
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
7
8
|
import { DefaultAccountIcon } from './Default/index.js';
|
|
8
9
|
import { GravatarAccountIcon } from './Gravatar/index.js';
|
|
9
10
|
export const Account = ()=>{
|
|
10
11
|
const { admin: { avatar: Avatar }, admin: { routes: { account: accountRoute } }, routes: { admin: adminRoute } } = useConfig();
|
|
11
12
|
const { user } = useAuth();
|
|
12
13
|
const pathname = usePathname();
|
|
13
|
-
const isOnAccountPage = pathname ===
|
|
14
|
+
const isOnAccountPage = pathname === formatAdminURL({
|
|
15
|
+
adminRoute,
|
|
16
|
+
path: accountRoute
|
|
17
|
+
});
|
|
14
18
|
if (!user?.email || Avatar === 'default') return /*#__PURE__*/ _jsx(DefaultAccountIcon, {
|
|
15
19
|
active: isOnAccountPage
|
|
16
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/graphics/Account/index.tsx"],"sourcesContent":["'use client'\nimport { usePathname } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DefaultAccountIcon } from './Default/index.js'\nimport { GravatarAccountIcon } from './Gravatar/index.js'\n\nexport const Account = () => {\n const {\n admin: { avatar: Avatar },\n admin: {\n routes: { account: accountRoute },\n },\n routes: { admin: adminRoute },\n } = useConfig()\n\n const { user } = useAuth()\n const pathname = usePathname()\n
|
|
1
|
+
{"version":3,"sources":["../../../src/graphics/Account/index.tsx"],"sourcesContent":["'use client'\nimport { usePathname } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { DefaultAccountIcon } from './Default/index.js'\nimport { GravatarAccountIcon } from './Gravatar/index.js'\n\nexport const Account = () => {\n const {\n admin: { avatar: Avatar },\n admin: {\n routes: { account: accountRoute },\n },\n routes: { admin: adminRoute },\n } = useConfig()\n\n const { user } = useAuth()\n const pathname = usePathname()\n const isOnAccountPage = pathname === formatAdminURL({ adminRoute, path: accountRoute })\n if (!user?.email || Avatar === 'default') return <DefaultAccountIcon active={isOnAccountPage} />\n if (Avatar === 'gravatar') return <GravatarAccountIcon />\n if (Avatar) return <Avatar active={isOnAccountPage} />\n}\n"],"names":["usePathname","React","useAuth","useConfig","formatAdminURL","DefaultAccountIcon","GravatarAccountIcon","Account","admin","avatar","Avatar","routes","account","accountRoute","adminRoute","user","pathname","isOnAccountPage","path","email","active"],"mappings":"AAAA;;AACA,SAASA,WAAW,QAAQ,qBAAoB;AAChD,OAAOC,WAAW,QAAO;AAEzB,SAASC,OAAO,QAAQ,gCAA+B;AACvD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,kBAAkB,QAAQ,qBAAoB;AACvD,SAASC,mBAAmB,QAAQ,sBAAqB;AAEzD,OAAO,MAAMC,UAAU;IACrB,MAAM,EACJC,OAAO,EAAEC,QAAQC,MAAM,EAAE,EACzBF,OAAO,EACLG,QAAQ,EAAEC,SAASC,YAAY,EAAE,EAClC,EACDF,QAAQ,EAAEH,OAAOM,UAAU,EAAE,EAC9B,GAAGX;IAEJ,MAAM,EAAEY,IAAI,EAAE,GAAGb;IACjB,MAAMc,WAAWhB;IACjB,MAAMiB,kBAAkBD,aAAaZ,eAAe;QAAEU;QAAYI,MAAML;IAAa;IACrF,IAAI,CAACE,MAAMI,SAAST,WAAW,WAAW,qBAAO,KAACL;QAAmBe,QAAQH;;IAC7E,IAAIP,WAAW,YAAY,qBAAO,KAACJ;IACnC,IAAII,QAAQ,qBAAO,KAACA;QAAOU,QAAQH;;AACrC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePayloadAPI.d.ts","sourceRoot":"","sources":["../../src/hooks/usePayloadAPI.ts"],"names":[],"mappings":"AAQA,KAAK,MAAM,GAAG;IACZ;QACE,IAAI,EAAE,GAAG,CAAA;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;KACnB;IACD;QACE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;KACnC;CACF,CAAA;AAED,KAAK,OAAO,GAAG;IACb,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;AAE/D,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"usePayloadAPI.d.ts","sourceRoot":"","sources":["../../src/hooks/usePayloadAPI.ts"],"names":[],"mappings":"AAQA,KAAK,MAAM,GAAG;IACZ;QACE,IAAI,EAAE,GAAG,CAAA;QACT,OAAO,EAAE,OAAO,CAAA;QAChB,SAAS,EAAE,OAAO,CAAA;KACnB;IACD;QACE,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;KACnC;CACF,CAAA;AAED,KAAK,OAAO,GAAG;IACb,WAAW,CAAC,EAAE,GAAG,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,KAAK,aAAa,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA;AAE/D,eAAO,MAAM,aAAa,EAAE,aAiF3B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n abortController.abort()\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"names":["qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","options","initialData","initialParams","i18n","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","search","stringify","addQueryPrefix","current","abortController","AbortController","fetchData","response","get","headers","language","signal","status","json","error","aborted","abort"],"mappings":"AAAA;AACA,YAAYA,QAAQ,SAAQ;AAC5B,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEnD,SAASC,SAAS,QAAQ,+BAA8B;AACxD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,QAAQ,QAAQ,sBAAqB;AAoB9C,OAAO,MAAMC,gBAA+B,CAACC,KAAKC,UAAU,CAAC,CAAC;IAC5D,MAAM,EAAEC,WAAW,EAAEC,gBAAgB,CAAC,CAAC,EAAE,GAAGF;IAE5C,MAAM,EAAEG,IAAI,EAAE,GAAGP;IACjB,MAAM,CAACQ,MAAMC,QAAQ,GAAGX,SAASO,eAAe,CAAC;IACjD,MAAM,CAACK,QAAQC,UAAU,GAAGb,SAASQ;IACrC,MAAM,CAACM,WAAWC,aAAa,GAAGf,SAAS,CAACO;IAC5C,MAAM,CAACS,SAASC,WAAW,GAAGjB,SAAS;IACvC,MAAM,EAAEkB,MAAMC,MAAM,EAAE,GAAGlB;IACzB,MAAMmB,iBAAiBrB,OAAO;IAE9B,MAAMsB,SAASxB,GAAGyB,SAAS,CACzB;QACEH;QACA,GAAI,OAAOP,WAAW,WAAWA,SAAS,CAAC,CAAC;IAC9C,GACA;QACEW,gBAAgB;IAClB;IAGF,8CAA8C;IAC9CzB,UAAU;QACR,IAAIS,eAAe,CAACa,eAAeI,OAAO,EAAE;YAC1CJ,eAAeI,OAAO,GAAG;YACzB;QACF;QAEA,MAAMC,kBAAkB,IAAIC;QAE5B,MAAMC,YAAY;YAChBV,WAAW;YACXF,aAAa;YAEb,IAAI;gBACF,MAAMa,WAAW,MAAMzB,SAAS0B,GAAG,CAAC,CAAC,EAAExB,IAAI,EAAEgB,OAAO,CAAC,EAAE;oBACrDS,SAAS;wBACP,mBAAmBrB,KAAKsB,QAAQ;oBAClC;oBACAC,QAAQP,gBAAgBO,MAAM;gBAChC;gBAEA,IAAIJ,SAASK,MAAM,GAAG,KAAK;oBACzBhB,WAAW;gBACb;gBAEA,MAAMiB,OAAO,MAAMN,SAASM,IAAI;gBAChCvB,QAAQuB;gBACRnB,aAAa;YACf,EAAE,OAAOoB,OAAO;gBACd,IAAI,CAACV,gBAAgBO,MAAM,CAACI,OAAO,EAAE;oBACnCnB,WAAW;oBACXF,aAAa;gBACf;YACF;QACF;QAEA,IAAIV,KAAK;YACP,KAAKsB;QACP,OAAO;YACLV,WAAW;YACXF,aAAa;QACf;QAEA,OAAO;
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (error) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"names":["qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","options","initialData","initialParams","i18n","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","search","stringify","addQueryPrefix","current","abortController","AbortController","fetchData","response","get","headers","language","signal","status","json","error","aborted","abort"],"mappings":"AAAA;AACA,YAAYA,QAAQ,SAAQ;AAC5B,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAO;AAEnD,SAASC,SAAS,QAAQ,+BAA8B;AACxD,SAASC,cAAc,QAAQ,oCAAmC;AAClE,SAASC,QAAQ,QAAQ,sBAAqB;AAoB9C,OAAO,MAAMC,gBAA+B,CAACC,KAAKC,UAAU,CAAC,CAAC;IAC5D,MAAM,EAAEC,WAAW,EAAEC,gBAAgB,CAAC,CAAC,EAAE,GAAGF;IAE5C,MAAM,EAAEG,IAAI,EAAE,GAAGP;IACjB,MAAM,CAACQ,MAAMC,QAAQ,GAAGX,SAASO,eAAe,CAAC;IACjD,MAAM,CAACK,QAAQC,UAAU,GAAGb,SAASQ;IACrC,MAAM,CAACM,WAAWC,aAAa,GAAGf,SAAS,CAACO;IAC5C,MAAM,CAACS,SAASC,WAAW,GAAGjB,SAAS;IACvC,MAAM,EAAEkB,MAAMC,MAAM,EAAE,GAAGlB;IACzB,MAAMmB,iBAAiBrB,OAAO;IAE9B,MAAMsB,SAASxB,GAAGyB,SAAS,CACzB;QACEH;QACA,GAAI,OAAOP,WAAW,WAAWA,SAAS,CAAC,CAAC;IAC9C,GACA;QACEW,gBAAgB;IAClB;IAGF,8CAA8C;IAC9CzB,UAAU;QACR,IAAIS,eAAe,CAACa,eAAeI,OAAO,EAAE;YAC1CJ,eAAeI,OAAO,GAAG;YACzB;QACF;QAEA,MAAMC,kBAAkB,IAAIC;QAE5B,MAAMC,YAAY;YAChBV,WAAW;YACXF,aAAa;YAEb,IAAI;gBACF,MAAMa,WAAW,MAAMzB,SAAS0B,GAAG,CAAC,CAAC,EAAExB,IAAI,EAAEgB,OAAO,CAAC,EAAE;oBACrDS,SAAS;wBACP,mBAAmBrB,KAAKsB,QAAQ;oBAClC;oBACAC,QAAQP,gBAAgBO,MAAM;gBAChC;gBAEA,IAAIJ,SAASK,MAAM,GAAG,KAAK;oBACzBhB,WAAW;gBACb;gBAEA,MAAMiB,OAAO,MAAMN,SAASM,IAAI;gBAChCvB,QAAQuB;gBACRnB,aAAa;YACf,EAAE,OAAOoB,OAAO;gBACd,IAAI,CAACV,gBAAgBO,MAAM,CAACI,OAAO,EAAE;oBACnCnB,WAAW;oBACXF,aAAa;gBACf;YACF;QACF;QAEA,IAAIV,KAAK;YACP,KAAKsB;QACP,OAAO;YACLV,WAAW;YACXF,aAAa;QACf;QAEA,OAAO;YACL,IAAI;gBACFU,gBAAgBY,KAAK;YACvB,EAAE,OAAOF,OAAO;YACd,gBAAgB;YAClB;QACF;IACF,GAAG;QAAC9B;QAAKc;QAAQE;QAAQZ,KAAKsB,QAAQ;QAAExB;KAAY;IAEpD,4CAA4C;IAC5CT,UAAU;QACR,IAAIS,eAAea,eAAeI,OAAO,EAAE;YACzCb,QAAQJ;QACV;IACF,GAAG;QAACA;KAAY;IAEhB,OAAO;QAAC;YAAEG;YAAMM;YAASF;QAAU;QAAG;YAAED;QAAU;KAAE;AACtD,EAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { ClientCollectionConfig } from 'payload';
|
|
2
|
-
import type { FieldMap, MappedField } from '../providers/ComponentMap/buildComponentMap/types.js';
|
|
1
|
+
import type { ClientCollectionConfig, FieldMap, MappedField } from 'payload';
|
|
3
2
|
export declare const useUseTitleField: (collection: ClientCollectionConfig, fieldMap: FieldMap) => MappedField;
|
|
4
3
|
//# sourceMappingURL=useUseAsTitle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUseAsTitle.d.ts","sourceRoot":"","sources":["../../src/hooks/useUseAsTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"useUseAsTitle.d.ts","sourceRoot":"","sources":["../../src/hooks/useUseAsTitle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI5E,eAAO,MAAM,gBAAgB,eACf,sBAAsB,YACxB,QAAQ,KACjB,WAOF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useUseAsTitle.ts"],"sourcesContent":["import type { ClientCollectionConfig
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useUseAsTitle.ts"],"sourcesContent":["import type { ClientCollectionConfig, FieldMap, MappedField } from 'payload'\n\nimport { flattenFieldMap } from '../utilities/flattenFieldMap.js'\n\nexport const useUseTitleField = (\n collection: ClientCollectionConfig,\n fieldMap: FieldMap,\n): MappedField => {\n const {\n admin: { useAsTitle },\n } = collection\n\n const topLevelFields = flattenFieldMap(fieldMap)\n return topLevelFields.find((field) => field.name === useAsTitle)\n}\n"],"names":["flattenFieldMap","useUseTitleField","collection","fieldMap","admin","useAsTitle","topLevelFields","find","field","name"],"mappings":"AAEA,SAASA,eAAe,QAAQ,kCAAiC;AAEjE,OAAO,MAAMC,mBAAmB,CAC9BC,YACAC;IAEA,MAAM,EACJC,OAAO,EAAEC,UAAU,EAAE,EACtB,GAAGH;IAEJ,MAAMI,iBAAiBN,gBAAgBG;IACvC,OAAOG,eAAeC,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKJ;AACvD,EAAC"}
|
|
@@ -2,7 +2,7 @@ import type { ClientUser, Permissions } from 'payload';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export type AuthContext<T = ClientUser> = {
|
|
4
4
|
fetchFullUser: () => Promise<void>;
|
|
5
|
-
logOut: () => void
|
|
5
|
+
logOut: () => Promise<void>;
|
|
6
6
|
permissions?: Permissions;
|
|
7
7
|
refreshCookie: (forceRefresh?: boolean) => void;
|
|
8
8
|
refreshCookieAsync: () => Promise<ClientUser>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,SAAS,CAAA;AAKzE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,SAAS,CAAA;AAKzE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;CAChB,CAAA;AAMD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA2RhE,CAAA;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
|
|
@@ -9,23 +9,18 @@ import { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js';
|
|
|
9
9
|
import { useDebounce } from '../../hooks/useDebounce.js';
|
|
10
10
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
11
11
|
import { requests } from '../../utilities/api.js';
|
|
12
|
+
import { formatAdminURL } from '../../utilities/formatAdminURL.js';
|
|
12
13
|
import { useConfig } from '../Config/index.js';
|
|
13
|
-
import { useSearchParams } from '../SearchParams/index.js';
|
|
14
14
|
const Context = /*#__PURE__*/ createContext({});
|
|
15
15
|
const maxTimeoutTime = 2147483647;
|
|
16
16
|
export const AuthProvider = ({ children })=>{
|
|
17
|
-
const { searchParams } = useSearchParams();
|
|
18
17
|
const [user, setUser] = useState();
|
|
19
18
|
const [tokenInMemory, setTokenInMemory] = useState();
|
|
20
19
|
const [tokenExpiration, setTokenExpiration] = useState();
|
|
21
|
-
const [strategy, setStrategy] = useState();
|
|
22
20
|
const pathname = usePathname();
|
|
23
21
|
const router = useRouter();
|
|
24
|
-
// const { code } = useLocale()
|
|
25
|
-
const code = 'en' // TODO: re-enable i18n asap
|
|
26
|
-
;
|
|
27
22
|
const config = useConfig();
|
|
28
|
-
const { admin: {
|
|
23
|
+
const { admin: { routes: { inactivity: logoutInactivityRoute }, user: userSlug }, routes: { admin: adminRoute, api: apiRoute }, serverURL } = config;
|
|
29
24
|
const [permissions, setPermissions] = useState();
|
|
30
25
|
const { i18n } = useTranslation();
|
|
31
26
|
const { closeAllModals, openModal } = useModal();
|
|
@@ -33,30 +28,34 @@ export const AuthProvider = ({ children })=>{
|
|
|
33
28
|
const debouncedLocationChange = useDebounce(lastLocationChange, 10000);
|
|
34
29
|
const id = user?.id;
|
|
35
30
|
const redirectToInactivityRoute = useCallback(()=>{
|
|
36
|
-
if (window.location.pathname.startsWith(
|
|
31
|
+
if (window.location.pathname.startsWith(adminRoute)) {
|
|
37
32
|
const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`;
|
|
38
|
-
router.replace(
|
|
33
|
+
router.replace(formatAdminURL({
|
|
34
|
+
adminRoute,
|
|
35
|
+
path: `${logoutInactivityRoute}${redirectParam}`
|
|
36
|
+
}));
|
|
39
37
|
} else {
|
|
40
|
-
router.replace(
|
|
38
|
+
router.replace(formatAdminURL({
|
|
39
|
+
adminRoute,
|
|
40
|
+
path: logoutInactivityRoute
|
|
41
|
+
}));
|
|
41
42
|
}
|
|
42
43
|
closeAllModals();
|
|
43
44
|
}, [
|
|
44
45
|
router,
|
|
45
|
-
|
|
46
|
+
adminRoute,
|
|
46
47
|
logoutInactivityRoute,
|
|
47
48
|
closeAllModals
|
|
48
49
|
]);
|
|
49
50
|
const revokeTokenAndExpire = useCallback(()=>{
|
|
50
51
|
setTokenInMemory(undefined);
|
|
51
52
|
setTokenExpiration(undefined);
|
|
52
|
-
setStrategy(undefined);
|
|
53
53
|
}, []);
|
|
54
54
|
const setTokenAndExpiration = useCallback((json)=>{
|
|
55
55
|
const token = json?.token || json?.refreshedToken;
|
|
56
56
|
if (token && json?.exp) {
|
|
57
57
|
setTokenInMemory(token);
|
|
58
58
|
setTokenExpiration(json.exp);
|
|
59
|
-
if (json.strategy) setStrategy(json.strategy);
|
|
60
59
|
} else {
|
|
61
60
|
revokeTokenAndExpire();
|
|
62
61
|
}
|
|
@@ -67,30 +66,33 @@ export const AuthProvider = ({ children })=>{
|
|
|
67
66
|
const now = Math.round(new Date().getTime() / 1000);
|
|
68
67
|
const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now;
|
|
69
68
|
if (forceRefresh || tokenExpiration && remainingTime < 120) {
|
|
70
|
-
setTimeout(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
setTimeout(()=>{
|
|
70
|
+
async function refresh() {
|
|
71
|
+
try {
|
|
72
|
+
const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
|
|
73
|
+
headers: {
|
|
74
|
+
'Accept-Language': i18n.language
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (request.status === 200) {
|
|
78
|
+
const json = await request.json();
|
|
79
|
+
setUser(json.user);
|
|
80
|
+
setTokenAndExpiration(json);
|
|
81
|
+
} else {
|
|
82
|
+
setUser(null);
|
|
83
|
+
redirectToInactivityRoute();
|
|
75
84
|
}
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
const json = await request.json();
|
|
79
|
-
setUser(json.user);
|
|
80
|
-
setTokenAndExpiration(json);
|
|
81
|
-
} else {
|
|
82
|
-
setUser(null);
|
|
83
|
-
redirectToInactivityRoute();
|
|
85
|
+
} catch (e) {
|
|
86
|
+
toast.error(e.message);
|
|
84
87
|
}
|
|
85
|
-
} catch (e) {
|
|
86
|
-
toast.error(e.message);
|
|
87
88
|
}
|
|
89
|
+
void refresh();
|
|
88
90
|
}, 1000);
|
|
89
91
|
}
|
|
90
92
|
}, [
|
|
91
93
|
tokenExpiration,
|
|
92
94
|
serverURL,
|
|
93
|
-
|
|
95
|
+
apiRoute,
|
|
94
96
|
userSlug,
|
|
95
97
|
i18n,
|
|
96
98
|
redirectToInactivityRoute,
|
|
@@ -98,7 +100,7 @@ export const AuthProvider = ({ children })=>{
|
|
|
98
100
|
]);
|
|
99
101
|
const refreshCookieAsync = useCallback(async (skipSetUser)=>{
|
|
100
102
|
try {
|
|
101
|
-
const request = await requests.post(`${serverURL}${
|
|
103
|
+
const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
|
|
102
104
|
headers: {
|
|
103
105
|
'Accept-Language': i18n.language
|
|
104
106
|
}
|
|
@@ -120,7 +122,7 @@ export const AuthProvider = ({ children })=>{
|
|
|
120
122
|
}
|
|
121
123
|
}, [
|
|
122
124
|
serverURL,
|
|
123
|
-
|
|
125
|
+
apiRoute,
|
|
124
126
|
userSlug,
|
|
125
127
|
i18n,
|
|
126
128
|
redirectToInactivityRoute,
|
|
@@ -130,22 +132,24 @@ export const AuthProvider = ({ children })=>{
|
|
|
130
132
|
setUser(null);
|
|
131
133
|
revokeTokenAndExpire();
|
|
132
134
|
try {
|
|
133
|
-
await requests.post(`${serverURL}${
|
|
135
|
+
await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`);
|
|
134
136
|
} catch (e) {
|
|
135
137
|
toast.error(`Logging out failed: ${e.message}`);
|
|
136
138
|
}
|
|
137
139
|
}, [
|
|
138
140
|
serverURL,
|
|
139
|
-
|
|
141
|
+
apiRoute,
|
|
140
142
|
userSlug,
|
|
141
143
|
revokeTokenAndExpire
|
|
142
144
|
]);
|
|
143
|
-
const refreshPermissions = useCallback(async ()=>{
|
|
144
|
-
const params = {
|
|
145
|
-
locale
|
|
146
|
-
}
|
|
145
|
+
const refreshPermissions = useCallback(async ({ locale } = {})=>{
|
|
146
|
+
const params = qs.stringify({
|
|
147
|
+
locale
|
|
148
|
+
}, {
|
|
149
|
+
addQueryPrefix: true
|
|
150
|
+
});
|
|
147
151
|
try {
|
|
148
|
-
const request = await requests.get(`${serverURL}${
|
|
152
|
+
const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {
|
|
149
153
|
headers: {
|
|
150
154
|
'Accept-Language': i18n.language
|
|
151
155
|
}
|
|
@@ -161,13 +165,12 @@ export const AuthProvider = ({ children })=>{
|
|
|
161
165
|
}
|
|
162
166
|
}, [
|
|
163
167
|
serverURL,
|
|
164
|
-
|
|
165
|
-
i18n
|
|
166
|
-
code
|
|
168
|
+
apiRoute,
|
|
169
|
+
i18n
|
|
167
170
|
]);
|
|
168
171
|
const fetchFullUser = React.useCallback(async ()=>{
|
|
169
172
|
try {
|
|
170
|
-
const request = await requests.get(`${serverURL}${
|
|
173
|
+
const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {
|
|
171
174
|
headers: {
|
|
172
175
|
'Accept-Language': i18n.language
|
|
173
176
|
}
|
|
@@ -179,31 +182,6 @@ export const AuthProvider = ({ children })=>{
|
|
|
179
182
|
if (json?.token) {
|
|
180
183
|
setTokenAndExpiration(json);
|
|
181
184
|
}
|
|
182
|
-
} else if (autoLogin && autoLogin.prefillOnly !== true) {
|
|
183
|
-
// auto log-in with the provided autoLogin credentials. This is used in dev mode
|
|
184
|
-
// so you don't have to log in over and over again
|
|
185
|
-
const autoLoginResult = await requests.post(`${serverURL}${api}/${userSlug}${loginRoute}`, {
|
|
186
|
-
body: JSON.stringify({
|
|
187
|
-
email: autoLogin.email,
|
|
188
|
-
password: autoLogin.password,
|
|
189
|
-
username: autoLogin.username
|
|
190
|
-
}),
|
|
191
|
-
headers: {
|
|
192
|
-
'Accept-Language': i18n.language,
|
|
193
|
-
'Content-Type': 'application/json'
|
|
194
|
-
}
|
|
195
|
-
});
|
|
196
|
-
if (autoLoginResult.status === 200) {
|
|
197
|
-
const autoLoginJson = await autoLoginResult.json();
|
|
198
|
-
setUser(autoLoginJson.user);
|
|
199
|
-
if (autoLoginJson?.token) {
|
|
200
|
-
setTokenAndExpiration(autoLoginJson);
|
|
201
|
-
}
|
|
202
|
-
router.replace(typeof searchParams['redirect'] === 'string' ? searchParams['redirect'] : admin);
|
|
203
|
-
} else {
|
|
204
|
-
setUser(null);
|
|
205
|
-
revokeTokenAndExpire();
|
|
206
|
-
}
|
|
207
185
|
} else {
|
|
208
186
|
setUser(null);
|
|
209
187
|
revokeTokenAndExpire();
|
|
@@ -214,18 +192,11 @@ export const AuthProvider = ({ children })=>{
|
|
|
214
192
|
}
|
|
215
193
|
}, [
|
|
216
194
|
serverURL,
|
|
217
|
-
|
|
195
|
+
apiRoute,
|
|
218
196
|
userSlug,
|
|
219
197
|
i18n.language,
|
|
220
|
-
autoLogin,
|
|
221
198
|
setTokenAndExpiration,
|
|
222
|
-
|
|
223
|
-
searchParams,
|
|
224
|
-
admin,
|
|
225
|
-
revokeTokenAndExpire,
|
|
226
|
-
strategy,
|
|
227
|
-
tokenExpiration,
|
|
228
|
-
loginRoute
|
|
199
|
+
revokeTokenAndExpire
|
|
229
200
|
]);
|
|
230
201
|
// On mount, get user and set
|
|
231
202
|
useEffect(()=>{
|