@payloadcms/ui 3.0.0-canary.67aae47 → 3.0.0-canary.6b9e4be
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/Banner/index.d.ts.map +1 -1
- package/dist/elements/Banner/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js +2 -2
- package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js +13 -2
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/reducer.js +14 -14
- package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +44 -30
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +155 -247
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/RenderServerComponent/index.d.ts +0 -6
- package/dist/elements/RenderServerComponent/index.d.ts.map +1 -1
- package/dist/elements/RenderServerComponent/index.js +1 -24
- package/dist/elements/RenderServerComponent/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +2 -2
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/reducer.js +16 -16
- package/dist/elements/Table/RelationshipProvider/reducer.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +4 -4
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +7 -7
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js.map +1 -1
- package/dist/exports/client/index.js +10 -10
- 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/Relationship/optionsReducer.js +42 -42
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/forms/Form/fieldReducer.js +170 -170
- 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 +7 -29
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +6 -6
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +17 -17
- package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +0 -2
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +16 -67
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/utilities/abortAndIgnore.d.ts +2 -0
- package/dist/utilities/abortAndIgnore.d.ts.map +1 -0
- package/dist/utilities/abortAndIgnore.js +10 -0
- package/dist/utilities/abortAndIgnore.js.map +1 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +12 -12
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts +0 -4
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +1 -15
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/buildTableState.d.ts +2 -1
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js +6 -3
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
- package/dist/utilities/handleFormStateLocking.js +2 -0
- package/dist/utilities/handleFormStateLocking.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +11 -18
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +41 -52
- package/dist/views/List/index.js.map +1 -1
- package/license.md +22 -0
- package/package.json +15 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderField.js","names":["getTranslation","createClientField","deepCopyObjectSimple","MissingEditorProp","fieldAffectsData","RenderServerComponent","FieldDescription","renderField","data","fieldConfig","fieldSchemaMap","fieldState","formState","indexPath","operation","parentPath","parentSchemaPath","path","permissions","incomingPermissions","req","schemaPath","siblingData","clientField","defaultIDType","payload","config","db","field","i18n","name","clientProps","customComponents","readOnly","permission","serverProps","user","type","rows","forEach","row","rowIndex","admin","components","RowLabels","_jsx","Component","RowLabel","importMap","rowLabel","labels","singular","String","padStart","rowNumber","editor","Error","FieldComponent","Field","Fallback","undefined","Description","description","t","AfterInput","afterInput","BeforeInput","beforeInput","Label"],"sources":["../../../src/forms/fieldSchemasToFormState/renderField.tsx"],"sourcesContent":["import type {\n ClientComponentProps,\n ClientField,\n FieldPermissions,\n PayloadComponent,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { createClientField, deepCopyObjectSimple, MissingEditorProp } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\n\nexport const renderField: RenderFieldMethod = ({\n data,\n fieldConfig,\n fieldSchemaMap,\n fieldState,\n formState,\n indexPath,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: incomingPermissions,\n req,\n schemaPath,\n siblingData,\n}) => {\n // TODO (ALESSIO): why are we passing the fieldConfig twice?\n // and especially, why are we deepCopyObject -here- instead of inside the createClientField func,\n // so no one screws this up in the future?\n const clientField = createClientField({\n clientField: deepCopyObjectSimple(fieldConfig) as ClientField,\n defaultIDType: req.payload.config.db.defaultIDType,\n field: fieldConfig,\n i18n: req.i18n,\n })\n\n const permissions = fieldAffectsData(fieldConfig)\n ? incomingPermissions?.[fieldConfig.name]\n : ({} as FieldPermissions)\n\n const clientProps: ClientComponentProps = {\n customComponents: fieldState?.customComponents || {},\n field: clientField,\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n readOnly: permissions?.[operation]?.permission === false,\n schemaPath,\n }\n\n const serverProps: ServerComponentProps = {\n clientField,\n data,\n field: fieldConfig,\n fieldSchemaMap,\n permissions,\n // TODO: Should we pass explicit values? initialValue, value, valid\n // value and initialValue should be typed\n formState,\n i18n: req.i18n,\n payload: req.payload,\n siblingData,\n user: req.user,\n }\n\n if (!fieldState?.customComponents) {\n fieldState.customComponents = {}\n }\n\n switch (fieldConfig.type) {\n // TODO: handle block row labels as well in a similar fashion\n case 'array': {\n fieldState?.rows?.forEach((row, rowIndex) => {\n if (fieldConfig.admin?.components && 'RowLabel' in fieldConfig.admin.components) {\n if (!fieldState.customComponents.RowLabels) {\n fieldState.customComponents.RowLabels = []\n }\n\n fieldState.customComponents.RowLabels[rowIndex] = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.RowLabel}\n importMap={req.payload.importMap}\n serverProps={{\n ...serverProps,\n rowLabel: `${getTranslation(fieldConfig.labels.singular, req.i18n)} ${String(\n rowIndex + 1,\n ).padStart(2, '0')}`,\n rowNumber: rowIndex + 1,\n }}\n />\n )\n }\n })\n\n break\n }\n\n case 'richText': {\n if (!fieldConfig?.editor) {\n throw new MissingEditorProp(fieldConfig) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof fieldConfig?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!fieldConfig.admin) {\n fieldConfig.admin = {}\n }\n\n if (!fieldConfig.admin.components) {\n fieldConfig.admin.components = {}\n }\n\n /**\n * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).\n * That way, every editor's field / cell props we send to the client have their own object references.\n *\n * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields\n * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since\n * a newer Next.js update that made it break when sending the same object reference to the client twice.\n *\n * We can use deepCopyObjectSimple as client props should be JSON-serializable.\n */\n const FieldComponent: PayloadComponent = fieldConfig.editor.FieldComponent\n if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {\n FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps)\n }\n\n fieldState.customComponents.Field = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={FieldComponent}\n Fallback={undefined}\n importMap={req.payload.importMap}\n serverProps={serverProps}\n />\n )\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldConfig.admin) {\n if ('description' in fieldConfig.admin) {\n // @TODO move this to client, only render if it is a function\n fieldState.customComponents.Description = (\n <FieldDescription\n description={\n typeof fieldConfig.admin?.description === 'string' ||\n typeof fieldConfig.admin?.description === 'object'\n ? fieldConfig.admin.description\n : typeof fieldConfig.admin?.description === 'function'\n ? fieldConfig.admin?.description({ t: req.i18n.t })\n : ''\n }\n path={path}\n />\n )\n }\n\n if (fieldConfig.admin?.components) {\n if ('afterInput' in fieldConfig.admin.components) {\n fieldState.customComponents.AfterInput = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.afterInput}\n importMap={req.payload.importMap}\n key=\"field.admin.components.afterInput\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('beforeInput' in fieldConfig.admin.components) {\n fieldState.customComponents.BeforeInput = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.beforeInput}\n importMap={req.payload.importMap}\n key=\"field.admin.components.beforeInput\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Description' in fieldConfig.admin.components) {\n fieldState.customComponents.Description = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Description}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Description\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Error' in fieldConfig.admin.components) {\n fieldState.customComponents.Error = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Error}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Error\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Label' in fieldConfig.admin.components) {\n fieldState.customComponents.Label = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Label}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Label\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Field' in fieldConfig.admin.components) {\n fieldState.customComponents.Field = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Field}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Field\"\n serverProps={serverProps}\n />\n )\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"renderField.js","names":["getTranslation","createClientField","deepCopyObjectSimple","MissingEditorProp","fieldAffectsData","RenderServerComponent","FieldDescription","renderField","data","fieldConfig","fieldSchemaMap","fieldState","formState","indexPath","operation","parentPath","parentSchemaPath","path","permissions","incomingPermissions","req","schemaPath","siblingData","clientField","defaultIDType","payload","config","db","field","i18n","importMap","name","clientProps","customComponents","readOnly","permission","serverProps","user","type","rows","forEach","row","rowIndex","admin","components","RowLabels","_jsx","Component","RowLabel","rowLabel","labels","singular","String","padStart","rowNumber","editor","Error","FieldComponent","Field","Fallback","undefined","Description","description","t","AfterInput","afterInput","BeforeInput","beforeInput","Label"],"sources":["../../../src/forms/fieldSchemasToFormState/renderField.tsx"],"sourcesContent":["import type {\n ClientComponentProps,\n ClientField,\n FieldPermissions,\n PayloadComponent,\n ServerComponentProps,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { createClientField, deepCopyObjectSimple, MissingEditorProp } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { RenderFieldMethod } from './types.js'\n\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\n\nexport const renderField: RenderFieldMethod = ({\n data,\n fieldConfig,\n fieldSchemaMap,\n fieldState,\n formState,\n indexPath,\n operation,\n parentPath,\n parentSchemaPath,\n path,\n permissions: incomingPermissions,\n req,\n schemaPath,\n siblingData,\n}) => {\n // TODO (ALESSIO): why are we passing the fieldConfig twice?\n // and especially, why are we deepCopyObject -here- instead of inside the createClientField func,\n // so no one screws this up in the future?\n const clientField = createClientField({\n clientField: deepCopyObjectSimple(fieldConfig) as ClientField,\n defaultIDType: req.payload.config.db.defaultIDType,\n field: fieldConfig,\n i18n: req.i18n,\n importMap: req.payload.importMap,\n })\n\n const permissions = fieldAffectsData(fieldConfig)\n ? incomingPermissions?.[fieldConfig.name]\n : ({} as FieldPermissions)\n\n const clientProps: ClientComponentProps = {\n customComponents: fieldState?.customComponents || {},\n field: clientField,\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n readOnly: permissions?.[operation]?.permission === false,\n schemaPath,\n }\n\n const serverProps: ServerComponentProps = {\n clientField,\n data,\n field: fieldConfig,\n fieldSchemaMap,\n permissions,\n // TODO: Should we pass explicit values? initialValue, value, valid\n // value and initialValue should be typed\n formState,\n i18n: req.i18n,\n payload: req.payload,\n siblingData,\n user: req.user,\n }\n\n if (!fieldState?.customComponents) {\n fieldState.customComponents = {}\n }\n\n switch (fieldConfig.type) {\n // TODO: handle block row labels as well in a similar fashion\n case 'array': {\n fieldState?.rows?.forEach((row, rowIndex) => {\n if (fieldConfig.admin?.components && 'RowLabel' in fieldConfig.admin.components) {\n if (!fieldState.customComponents.RowLabels) {\n fieldState.customComponents.RowLabels = []\n }\n\n fieldState.customComponents.RowLabels[rowIndex] = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.RowLabel}\n importMap={req.payload.importMap}\n serverProps={{\n ...serverProps,\n rowLabel: `${getTranslation(fieldConfig.labels.singular, req.i18n)} ${String(\n rowIndex + 1,\n ).padStart(2, '0')}`,\n rowNumber: rowIndex + 1,\n }}\n />\n )\n }\n })\n\n break\n }\n\n case 'richText': {\n if (!fieldConfig?.editor) {\n throw new MissingEditorProp(fieldConfig) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof fieldConfig?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!fieldConfig.admin) {\n fieldConfig.admin = {}\n }\n\n if (!fieldConfig.admin.components) {\n fieldConfig.admin.components = {}\n }\n\n /**\n * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).\n * That way, every editor's field / cell props we send to the client have their own object references.\n *\n * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields\n * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since\n * a newer Next.js update that made it break when sending the same object reference to the client twice.\n *\n * We can use deepCopyObjectSimple as client props should be JSON-serializable.\n */\n const FieldComponent: PayloadComponent = fieldConfig.editor.FieldComponent\n if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {\n FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps)\n }\n\n fieldState.customComponents.Field = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={FieldComponent}\n Fallback={undefined}\n importMap={req.payload.importMap}\n serverProps={serverProps}\n />\n )\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldConfig.admin) {\n if ('description' in fieldConfig.admin) {\n // @TODO move this to client, only render if it is a function\n fieldState.customComponents.Description = (\n <FieldDescription\n description={\n typeof fieldConfig.admin?.description === 'string' ||\n typeof fieldConfig.admin?.description === 'object'\n ? fieldConfig.admin.description\n : typeof fieldConfig.admin?.description === 'function'\n ? fieldConfig.admin?.description({ t: req.i18n.t })\n : ''\n }\n path={path}\n />\n )\n }\n\n if (fieldConfig.admin?.components) {\n if ('afterInput' in fieldConfig.admin.components) {\n fieldState.customComponents.AfterInput = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.afterInput}\n importMap={req.payload.importMap}\n key=\"field.admin.components.afterInput\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('beforeInput' in fieldConfig.admin.components) {\n fieldState.customComponents.BeforeInput = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.beforeInput}\n importMap={req.payload.importMap}\n key=\"field.admin.components.beforeInput\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Description' in fieldConfig.admin.components) {\n fieldState.customComponents.Description = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Description}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Description\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Error' in fieldConfig.admin.components) {\n fieldState.customComponents.Error = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Error}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Error\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Label' in fieldConfig.admin.components) {\n fieldState.customComponents.Label = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Label}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Label\"\n serverProps={serverProps}\n />\n )\n }\n\n if ('Field' in fieldConfig.admin.components) {\n fieldState.customComponents.Field = (\n <RenderServerComponent\n clientProps={clientProps}\n Component={fieldConfig.admin.components.Field}\n importMap={req.payload.importMap}\n key=\"field.admin.components.Field\"\n serverProps={serverProps}\n />\n )\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,7 +3,6 @@ import React from 'react';
|
|
|
3
3
|
import type { buildFormStateHandler } from '../../utilities/buildFormState.js';
|
|
4
4
|
import type { buildTableStateHandler } from '../../utilities/buildTableState.js';
|
|
5
5
|
type GetFormStateClient = (args: {
|
|
6
|
-
doNotAbort?: boolean;
|
|
7
6
|
signal?: AbortSignal;
|
|
8
7
|
} & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>) => ReturnType<typeof buildFormStateHandler>;
|
|
9
8
|
type GetTableStateClient = (args: {
|
|
@@ -13,7 +12,6 @@ type RenderDocument = (args: {
|
|
|
13
12
|
collectionSlug: string;
|
|
14
13
|
disableActions?: boolean;
|
|
15
14
|
docID?: number | string;
|
|
16
|
-
doNotAbort?: boolean;
|
|
17
15
|
drawerSlug?: string;
|
|
18
16
|
initialData?: Data;
|
|
19
17
|
redirectAfterDelete?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAqC,MAAM,OAAO,CAAA;AAEzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAEhF,KAAK,kBAAkB,GAAG,CACxB,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GAAG,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,KAAK,CAAC,KACjD,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAE7C,KAAK,mBAAmB,GAAG,CACzB,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,KAAK,CAAC,KAClD,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAE9C,KAAK,cAAc,GAAG,CAAC,IAAI,EAAE;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAAC,CAAA;AAE3D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;AAE5B,KAAK,0BAA0B,GAAG;IAChC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,YAAY,EAAE,kBAAkB,CAAA;IAChC,aAAa,EAAE,mBAAmB,CAAA;IAClC,cAAc,EAAE,cAAc,CAAA;IAC9B,cAAc,EAAE,oBAAoB,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,sBAAsB,2CAElC,CAAA;AAED,eAAO,MAAM,kBAAkB,kCAM9B,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,cAAc,EAAE,oBAAoB,CAAA;CACrC,CAiGA,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import React, { createContext, useCallback
|
|
2
|
+
import React, { createContext, useCallback } from 'react';
|
|
3
3
|
export const ServerFunctionsContext = /*#__PURE__*/createContext(undefined);
|
|
4
4
|
export const useServerFunctions = () => {
|
|
5
5
|
const context = React.useContext(ServerFunctionsContext);
|
|
@@ -15,48 +15,23 @@ export const ServerFunctionsProvider = ({
|
|
|
15
15
|
if (!serverFunction) {
|
|
16
16
|
throw new Error('ServerFunctionsProvider requires a serverFunction prop');
|
|
17
17
|
}
|
|
18
|
-
// This is the local abort controller, to abort requests when the _provider_ itself unmounts, etc.
|
|
19
|
-
// Each callback also accept a remote signal, to abort requests when each _component_ unmounts, etc.
|
|
20
|
-
const abortControllerRef = useRef(new AbortController());
|
|
21
18
|
const getDocumentSlots = useCallback(async args => await serverFunction({
|
|
22
19
|
name: 'render-document-slots',
|
|
23
20
|
args
|
|
24
21
|
}), [serverFunction]);
|
|
25
22
|
const getFormState = useCallback(async args => {
|
|
26
|
-
if (args?.doNotAbort) {
|
|
27
|
-
try {
|
|
28
|
-
const result = await serverFunction({
|
|
29
|
-
name: 'form-state',
|
|
30
|
-
args
|
|
31
|
-
});
|
|
32
|
-
// TODO: infer this type when `strictNullChecks` is enabled
|
|
33
|
-
return result;
|
|
34
|
-
} catch (_err) {
|
|
35
|
-
console.error(_err) // eslint-disable-line no-console
|
|
36
|
-
;
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
state: null
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
if (abortControllerRef.current) {
|
|
43
|
-
abortControllerRef.current.abort();
|
|
44
|
-
}
|
|
45
|
-
const abortController = new AbortController();
|
|
46
|
-
abortControllerRef.current = abortController;
|
|
47
|
-
const localSignal = abortController.signal;
|
|
48
23
|
const {
|
|
49
24
|
signal: remoteSignal,
|
|
50
25
|
...rest
|
|
51
26
|
} = args || {};
|
|
52
27
|
try {
|
|
53
|
-
if (!remoteSignal?.aborted
|
|
28
|
+
if (!remoteSignal?.aborted) {
|
|
54
29
|
const result = await serverFunction({
|
|
55
30
|
name: 'form-state',
|
|
56
31
|
args: rest
|
|
57
32
|
});
|
|
58
33
|
// TODO: infer this type when `strictNullChecks` is enabled
|
|
59
|
-
if (!remoteSignal?.aborted
|
|
34
|
+
if (!remoteSignal?.aborted) {
|
|
60
35
|
return result;
|
|
61
36
|
}
|
|
62
37
|
}
|
|
@@ -70,15 +45,20 @@ export const ServerFunctionsProvider = ({
|
|
|
70
45
|
}, [serverFunction]);
|
|
71
46
|
const getTableState = useCallback(async args => {
|
|
72
47
|
const {
|
|
48
|
+
signal: remoteSignal,
|
|
73
49
|
...rest
|
|
74
50
|
} = args || {};
|
|
75
51
|
try {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
52
|
+
if (!remoteSignal?.aborted) {
|
|
53
|
+
const result = await serverFunction({
|
|
54
|
+
name: 'table-state',
|
|
55
|
+
args: rest
|
|
56
|
+
});
|
|
57
|
+
// TODO: infer this type when `strictNullChecks` is enabled
|
|
58
|
+
if (!remoteSignal?.aborted) {
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
82
62
|
} catch (_err) {
|
|
83
63
|
console.error(_err) // eslint-disable-line no-console
|
|
84
64
|
;
|
|
@@ -86,36 +66,17 @@ export const ServerFunctionsProvider = ({
|
|
|
86
66
|
// return { state: args.formState }
|
|
87
67
|
}, [serverFunction]);
|
|
88
68
|
const renderDocument = useCallback(async args => {
|
|
89
|
-
if (args?.doNotAbort) {
|
|
90
|
-
try {
|
|
91
|
-
const result = await serverFunction({
|
|
92
|
-
name: 'render-document',
|
|
93
|
-
args
|
|
94
|
-
});
|
|
95
|
-
return result;
|
|
96
|
-
} catch (_err) {
|
|
97
|
-
console.error(_err) // eslint-disable-line no-console
|
|
98
|
-
;
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
if (abortControllerRef.current) {
|
|
103
|
-
abortControllerRef.current.abort();
|
|
104
|
-
}
|
|
105
|
-
const abortController = new AbortController();
|
|
106
|
-
abortControllerRef.current = abortController;
|
|
107
|
-
const localSignal = abortController.signal;
|
|
108
69
|
const {
|
|
109
70
|
signal: remoteSignal,
|
|
110
71
|
...rest
|
|
111
72
|
} = args || {};
|
|
112
73
|
try {
|
|
113
|
-
if (!remoteSignal?.aborted
|
|
74
|
+
if (!remoteSignal?.aborted) {
|
|
114
75
|
const result = await serverFunction({
|
|
115
76
|
name: 'render-document',
|
|
116
77
|
args: rest
|
|
117
78
|
});
|
|
118
|
-
if (!remoteSignal?.aborted
|
|
79
|
+
if (!remoteSignal?.aborted) {
|
|
119
80
|
return result;
|
|
120
81
|
}
|
|
121
82
|
}
|
|
@@ -124,18 +85,6 @@ export const ServerFunctionsProvider = ({
|
|
|
124
85
|
;
|
|
125
86
|
}
|
|
126
87
|
}, [serverFunction]);
|
|
127
|
-
useEffect(() => {
|
|
128
|
-
const controller = abortControllerRef.current;
|
|
129
|
-
return () => {
|
|
130
|
-
if (controller) {
|
|
131
|
-
try {
|
|
132
|
-
// controller.abort()
|
|
133
|
-
} catch (_err) {
|
|
134
|
-
// swallow error
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
};
|
|
138
|
-
}, []);
|
|
139
88
|
return /*#__PURE__*/_jsx(ServerFunctionsContext.Provider, {
|
|
140
89
|
value: {
|
|
141
90
|
getDocumentSlots,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","createContext","useCallback","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","createContext","useCallback","ServerFunctionsContext","undefined","useServerFunctions","context","useContext","Error","ServerFunctionsProvider","children","serverFunction","getDocumentSlots","args","name","getFormState","signal","remoteSignal","rest","aborted","result","_err","console","error","state","getTableState","renderDocument","_jsx","Provider","value"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentSlots,\n ServerFunctionClient,\n} from 'payload'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\ntype RenderDocument = (args: {\n collectionSlug: string\n disableActions?: boolean\n docID?: number | string\n drawerSlug?: string\n initialData?: Data\n redirectAfterDelete?: boolean\n redirectAfterDuplicate?: boolean\n signal?: AbortSignal\n}) => Promise<{ docID: string; Document: React.ReactNode }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype ServerFunctionsContextType = {\n getDocumentSlots: GetDocumentSlots\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocument\n serverFunction: ServerFunctionClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.useContext(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: rest,\n })) as ReturnType<typeof buildFormStateHandler> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: rest,\n })) as ReturnType<typeof buildTableStateHandler> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocument>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'render-document',\n args: rest,\n })) as { docID: string; Document: React.ReactNode }\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext.Provider\n value={{\n getDocumentSlots,\n getFormState,\n getTableState,\n renderDocument,\n serverFunction,\n }}\n >\n {children}\n </ServerFunctionsContext.Provider>\n )\n}\n"],"mappings":";AAQA,OAAOA,KAAA,IAASC,aAAa,EAAEC,WAAW,QAAQ;AAyClD,OAAO,MAAMC,sBAAA,gBAAyBF,aAAA,CACpCG,SAAA;AAGF,OAAO,MAAMC,kBAAA,GAAqBA,CAAA;EAChC,MAAMC,OAAA,GAAUN,KAAA,CAAMO,UAAU,CAACJ,sBAAA;EACjC,IAAIG,OAAA,KAAYF,SAAA,EAAW;IACzB,MAAM,IAAII,KAAA,CAAM;EAClB;EACA,OAAOF,OAAA;AACT;AAEA,OAAO,MAAMG,uBAAA,GAGRA,CAAC;EAAEC,QAAQ;EAAEC;AAAc,CAAE;EAChC,IAAI,CAACA,cAAA,EAAgB;IACnB,MAAM,IAAIH,KAAA,CAAM;EAClB;EAEA,MAAMI,gBAAA,GAAmBV,WAAA,CACvB,MAAOW,IAAA,IACL,MAAMF,cAAA,CAAe;IACnBG,IAAA,EAAM;IACND;EACF,IACF,CAACF,cAAA,CAAe;EAGlB,MAAMI,YAAA,GAAeb,WAAA,CACnB,MAAOW,IAAA;IACL,MAAM;MAAEG,MAAA,EAAQC,YAAY;MAAE,GAAGC;IAAA,CAAM,GAAGL,IAAA,IAAQ,CAAC;IAEnD,IAAI;MACF,IAAI,CAACI,YAAA,EAAcE,OAAA,EAAS;QAC1B,MAAMC,MAAA,GAAU,MAAMT,cAAA,CAAe;UACnCG,IAAA,EAAM;UACND,IAAA,EAAMK;QACR;QAAgD;QAEhD,IAAI,CAACD,YAAA,EAAcE,OAAA,EAAS;UAC1B,OAAOC,MAAA;QACT;MACF;IACF,EAAE,OAAOC,IAAA,EAAM;MACbC,OAAA,CAAQC,KAAK,CAACF,IAAA,EAAM;MAAA;IACtB;IAEA,OAAO;MAAEG,KAAA,EAAO;IAAK;EACvB,GACA,CAACb,cAAA,CAAe;EAGlB,MAAMc,aAAA,GAAgBvB,WAAA,CACpB,MAAOW,IAAA;IACL,MAAM;MAAEG,MAAA,EAAQC,YAAY;MAAE,GAAGC;IAAA,CAAM,GAAGL,IAAA,IAAQ,CAAC;IAEnD,IAAI;MACF,IAAI,CAACI,YAAA,EAAcE,OAAA,EAAS;QAC1B,MAAMC,MAAA,GAAU,MAAMT,cAAA,CAAe;UACnCG,IAAA,EAAM;UACND,IAAA,EAAMK;QACR;QAAiD;QAEjD,IAAI,CAACD,YAAA,EAAcE,OAAA,EAAS;UAC1B,OAAOC,MAAA;QACT;MACF;IACF,EAAE,OAAOC,IAAA,EAAM;MACbC,OAAA,CAAQC,KAAK,CAACF,IAAA,EAAM;MAAA;IACtB;IAEA;EACF,GACA,CAACV,cAAA,CAAe;EAGlB,MAAMe,cAAA,GAAiBxB,WAAA,CACrB,MAAOW,IAAA;IACL,MAAM;MAAEG,MAAA,EAAQC,YAAY;MAAE,GAAGC;IAAA,CAAM,GAAGL,IAAA,IAAQ,CAAC;IAEnD,IAAI;MACF,IAAI,CAACI,YAAA,EAAcE,OAAA,EAAS;QAC1B,MAAMC,MAAA,GAAU,MAAMT,cAAA,CAAe;UACnCG,IAAA,EAAM;UACND,IAAA,EAAMK;QACR;QAEA,IAAI,CAACD,YAAA,EAAcE,OAAA,EAAS;UAC1B,OAAOC,MAAA;QACT;MACF;IACF,EAAE,OAAOC,IAAA,EAAM;MACbC,OAAA,CAAQC,KAAK,CAACF,IAAA,EAAM;MAAA;IACtB;EACF,GACA,CAACV,cAAA,CAAe;EAGlB,oBACEgB,IAAA,CAACxB,sBAAA,CAAuByB,QAAQ;IAC9BC,KAAA,EAAO;MACLjB,gBAAA;MACAG,YAAA;MACAU,aAAA;MACAC,cAAA;MACAf;IACF;cAECD;;AAGP","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abortAndIgnore.d.ts","sourceRoot":"","sources":["../../src/utilities/abortAndIgnore.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,QAQzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abortAndIgnore.js","names":["abortAndIgnore","controller","abort","_err"],"sources":["../../src/utilities/abortAndIgnore.ts"],"sourcesContent":["export function abortAndIgnore(controller: AbortController) {\n if (controller) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n}\n"],"mappings":"AAAA,OAAO,SAASA,eAAeC,UAA2B;EACxD,IAAIA,UAAA,EAAY;IACd,IAAI;MACFA,UAAA,CAAWC,KAAK;IAClB,EAAE,OAAOC,IAAA,EAAM;MACb;IAAA;EAEJ;AACF","ignoreList":[]}
|
|
@@ -21,8 +21,8 @@ export const traverseFields = ({
|
|
|
21
21
|
});
|
|
22
22
|
schemaMap.set(schemaPath, field);
|
|
23
23
|
switch (field.type) {
|
|
24
|
-
case 'group':
|
|
25
24
|
case 'array':
|
|
25
|
+
case 'group':
|
|
26
26
|
traverseFields({
|
|
27
27
|
config,
|
|
28
28
|
fields: field.fields,
|
|
@@ -32,17 +32,6 @@ export const traverseFields = ({
|
|
|
32
32
|
schemaMap
|
|
33
33
|
});
|
|
34
34
|
break;
|
|
35
|
-
case 'collapsible':
|
|
36
|
-
case 'row':
|
|
37
|
-
traverseFields({
|
|
38
|
-
config,
|
|
39
|
-
fields: field.fields,
|
|
40
|
-
i18n,
|
|
41
|
-
parentIndexPath: indexPath,
|
|
42
|
-
parentSchemaPath,
|
|
43
|
-
schemaMap
|
|
44
|
-
});
|
|
45
|
-
break;
|
|
46
35
|
case 'blocks':
|
|
47
36
|
field.blocks.map(block => {
|
|
48
37
|
const blockSchemaPath = `${schemaPath}.${block.slug}`;
|
|
@@ -57,6 +46,17 @@ export const traverseFields = ({
|
|
|
57
46
|
});
|
|
58
47
|
});
|
|
59
48
|
break;
|
|
49
|
+
case 'collapsible':
|
|
50
|
+
case 'row':
|
|
51
|
+
traverseFields({
|
|
52
|
+
config,
|
|
53
|
+
fields: field.fields,
|
|
54
|
+
i18n,
|
|
55
|
+
parentIndexPath: indexPath,
|
|
56
|
+
parentSchemaPath,
|
|
57
|
+
schemaMap
|
|
58
|
+
});
|
|
59
|
+
break;
|
|
60
60
|
case 'richText':
|
|
61
61
|
if (!field?.editor) {
|
|
62
62
|
throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.js","names":["MissingEditorProp","getFieldPaths","tabHasName","traverseFields","config","fields","i18n","parentIndexPath","parentSchemaPath","schemaMap","index","field","entries","indexPath","schemaPath","parentPath","set","type","blocks","map","block","blockSchemaPath","slug","editor","Error","generateSchemaMap","tabs","tab","tabIndex","tabIndexPath","tabSchemaPath"],"sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Field, FieldSchemaMap, SanitizedConfig } from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport { getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath: '',\n parentSchemaPath,\n })\n\n schemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case '
|
|
1
|
+
{"version":3,"file":"traverseFields.js","names":["MissingEditorProp","getFieldPaths","tabHasName","traverseFields","config","fields","i18n","parentIndexPath","parentSchemaPath","schemaMap","index","field","entries","indexPath","schemaPath","parentPath","set","type","blocks","map","block","blockSchemaPath","slug","editor","Error","generateSchemaMap","tabs","tab","tabIndex","tabIndexPath","tabSchemaPath"],"sources":["../../../src/utilities/buildFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { Field, FieldSchemaMap, SanitizedConfig } from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport { getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n config: SanitizedConfig\n fields: Field[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath: '',\n parentSchemaPath,\n })\n\n schemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case 'array':\n case 'group':\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n schemaMap,\n })\n\n break\n\n case 'blocks':\n field.blocks.map((block) => {\n const blockSchemaPath = `${schemaPath}.${block.slug}`\n\n schemaMap.set(blockSchemaPath, block)\n traverseFields({\n config,\n fields: block.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: blockSchemaPath,\n schemaMap,\n })\n })\n\n break\n case 'collapsible':\n\n case 'row':\n traverseFields({\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath,\n schemaMap,\n })\n\n break\n\n case 'richText':\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof field.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (typeof field.editor.generateSchemaMap === 'function') {\n field.editor.generateSchemaMap({\n config,\n field,\n i18n,\n schemaMap,\n schemaPath,\n })\n }\n\n break\n\n case 'tabs':\n field.tabs.map((tab, tabIndex) => {\n const { indexPath: tabIndexPath, schemaPath: tabSchemaPath } = getFieldPaths({\n field: {\n ...tab,\n type: 'tab',\n },\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath: '',\n parentSchemaPath,\n })\n\n schemaMap.set(tabSchemaPath, tab)\n\n traverseFields({\n config,\n fields: tab.fields,\n i18n,\n parentIndexPath: tabHasName(tab) ? '' : tabIndexPath,\n parentSchemaPath: tabHasName(tab) ? tabSchemaPath : parentSchemaPath,\n schemaMap,\n })\n })\n\n break\n }\n }\n}\n"],"mappings":"AAGA,SAASA,iBAAiB,QAAQ;AAClC,SAASC,aAAa,EAAEC,UAAU,QAAQ;AAW1C,OAAO,MAAMC,cAAA,GAAiBA,CAAC;EAC7BC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,eAAe;EACfC,gBAAgB;EAChBC;AAAS,CACJ;EACL,KAAK,MAAM,CAACC,KAAA,EAAOC,KAAA,CAAM,IAAIN,MAAA,CAAOO,OAAO,IAAI;IAC7C,MAAM;MAAEC,SAAS;MAAEC;IAAU,CAAE,GAAGb,aAAA,CAAc;MAC9CU,KAAA;MACAD,KAAA;MACAH,eAAA,EAAiB,UAAUI,KAAA,GAAQ,KAAKJ,eAAA;MACxCQ,UAAA,EAAY;MACZP;IACF;IAEAC,SAAA,CAAUO,GAAG,CAACF,UAAA,EAAYH,KAAA;IAE1B,QAAQA,KAAA,CAAMM,IAAI;MAChB,KAAK;MACL,KAAK;QACHd,cAAA,CAAe;UACbC,MAAA;UACAC,MAAA,EAAQM,KAAA,CAAMN,MAAM;UACpBC,IAAA;UACAC,eAAA,EAAiB;UACjBC,gBAAA,EAAkBM,UAAA;UAClBL;QACF;QAEA;MAEF,KAAK;QACHE,KAAA,CAAMO,MAAM,CAACC,GAAG,CAAEC,KAAA;UAChB,MAAMC,eAAA,GAAkB,GAAGP,UAAA,IAAcM,KAAA,CAAME,IAAI,EAAE;UAErDb,SAAA,CAAUO,GAAG,CAACK,eAAA,EAAiBD,KAAA;UAC/BjB,cAAA,CAAe;YACbC,MAAA;YACAC,MAAA,EAAQe,KAAA,CAAMf,MAAM;YACpBC,IAAA;YACAC,eAAA,EAAiB;YACjBC,gBAAA,EAAkBa,eAAA;YAClBZ;UACF;QACF;QAEA;MACF,KAAK;MAEL,KAAK;QACHN,cAAA,CAAe;UACbC,MAAA;UACAC,MAAA,EAAQM,KAAA,CAAMN,MAAM;UACpBC,IAAA;UACAC,eAAA,EAAiBM,SAAA;UACjBL,gBAAA;UACAC;QACF;QAEA;MAEF,KAAK;QACH,IAAI,CAACE,KAAA,EAAOY,MAAA,EAAQ;UAClB,MAAM,IAAIvB,iBAAA,CAAkBW,KAAA,EAAO;UAAA;QACrC;QAEA,IAAI,OAAOA,KAAA,CAAMY,MAAM,KAAK,YAAY;UACtC,MAAM,IAAIC,KAAA,CAAM;QAClB;QAEA,IAAI,OAAOb,KAAA,CAAMY,MAAM,CAACE,iBAAiB,KAAK,YAAY;UACxDd,KAAA,CAAMY,MAAM,CAACE,iBAAiB,CAAC;YAC7BrB,MAAA;YACAO,KAAA;YACAL,IAAA;YACAG,SAAA;YACAK;UACF;QACF;QAEA;MAEF,KAAK;QACHH,KAAA,CAAMe,IAAI,CAACP,GAAG,CAAC,CAACQ,GAAA,EAAKC,QAAA;UACnB,MAAM;YAAEf,SAAA,EAAWgB,YAAY;YAAEf,UAAA,EAAYgB;UAAa,CAAE,GAAG7B,aAAA,CAAc;YAC3EU,KAAA,EAAO;cACL,GAAGgB,GAAG;cACNV,IAAA,EAAM;YACR;YACAP,KAAA,EAAOkB,QAAA;YACPrB,eAAA,EAAiBM,SAAA;YACjBE,UAAA,EAAY;YACZP;UACF;UAEAC,SAAA,CAAUO,GAAG,CAACc,aAAA,EAAeH,GAAA;UAE7BxB,cAAA,CAAe;YACbC,MAAA;YACAC,MAAA,EAAQsB,GAAA,CAAItB,MAAM;YAClBC,IAAA;YACAC,eAAA,EAAiBL,UAAA,CAAWyB,GAAA,IAAO,KAAKE,YAAA;YACxCrB,gBAAA,EAAkBN,UAAA,CAAWyB,GAAA,IAAOG,aAAA,GAAgBtB,gBAAA;YACpDC;UACF;QACF;QAEA;IACJ;EACF;AACF","ignoreList":[]}
|
|
@@ -6,10 +6,6 @@ export declare const getFieldSchemaMap: (args: {
|
|
|
6
6
|
globalSlug?: string;
|
|
7
7
|
i18n: I18nClient;
|
|
8
8
|
}) => FieldSchemaMap;
|
|
9
|
-
export declare const getClientConfig: (args: {
|
|
10
|
-
config: SanitizedConfig;
|
|
11
|
-
i18n: I18nClient;
|
|
12
|
-
}) => ClientConfig;
|
|
13
9
|
type BuildFormStateSuccessResult = {
|
|
14
10
|
clientConfig?: ClientConfig;
|
|
15
11
|
errors?: never;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAA;AAqBhB,eAAO,MAAM,iBAAiB,SAAU;IACtC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,UAAU,CAAA;CACjB,KAAG,cAyBH,CAAA;AAED,
|
|
1
|
+
{"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,eAAe,EAChB,MAAM,SAAS,CAAA;AAqBhB,eAAO,MAAM,iBAAiB,SAAU;IACtC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,UAAU,CAAA;CACjB,KAAG,cAyBH,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC7F,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,SAC1B,kBAAkB,KACvB,OAAO,CAAC,oBAAoB,CAqD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAkHrC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { formatErrors } from 'payload';
|
|
2
2
|
import { reduceFieldsToValues } from 'payload/shared';
|
|
3
3
|
import { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js';
|
|
4
4
|
import { renderField } from '../forms/fieldSchemasToFormState/renderField.js';
|
|
@@ -41,20 +41,6 @@ export const getFieldSchemaMap = args => {
|
|
|
41
41
|
}
|
|
42
42
|
return entityFieldMap;
|
|
43
43
|
};
|
|
44
|
-
export const getClientConfig = args => {
|
|
45
|
-
const {
|
|
46
|
-
config,
|
|
47
|
-
i18n
|
|
48
|
-
} = args;
|
|
49
|
-
if (cachedClientConfig && process.env.NODE_ENV !== 'development') {
|
|
50
|
-
return cachedClientConfig;
|
|
51
|
-
}
|
|
52
|
-
cachedClientConfig = createClientConfig({
|
|
53
|
-
config,
|
|
54
|
-
i18n
|
|
55
|
-
});
|
|
56
|
-
return cachedClientConfig;
|
|
57
|
-
};
|
|
58
44
|
export const buildFormStateHandler = async args => {
|
|
59
45
|
const {
|
|
60
46
|
req
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildFormState.js","names":["createClientConfig","formatErrors","reduceFieldsToValues","fieldSchemasToFormState","renderField","buildFieldSchemaMap","handleFormStateLocking","cachedFieldMap","global","_payload_fieldMap","cachedClientConfig","_payload_clientConfig","getFieldSchemaMap","args","collectionSlug","config","globalSlug","i18n","process","env","NODE_ENV","Map","cachedEntityFieldMap","get","fieldSchemaMap","entityFieldMap","set","getClientConfig","buildFormStateHandler","req","incomingUserSlug","user","collection","adminUserSlug","payload","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","data","incomingData","docPermissions","docPreferences","formState","operation","renderAllFields","returnLockStatus","schemaPath","updateLastEdited","undefined","fieldOrEntityConfig","fields","type","Array","isArray","formStateResult","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type { I18n, I18nClient } from '@payloadcms/translations'\nimport type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FieldSchemaMap,\n FormState,\n SanitizedConfig,\n} from 'payload'\n\nimport { createClientConfig, formatErrors } from 'payload'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { buildFieldSchemaMap } from './buildFieldSchemaMap/index.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nlet cachedFieldMap = global._payload_fieldMap\nlet cachedClientConfig = global._payload_clientConfig\n\nif (!cachedFieldMap) {\n cachedFieldMap = global._payload_fieldMap = null\n}\n\nif (!cachedClientConfig) {\n cachedClientConfig = global._payload_clientConfig = null\n}\n\nexport const getFieldSchemaMap = (args: {\n collectionSlug?: string\n config: SanitizedConfig\n globalSlug?: string\n i18n: I18nClient\n}): FieldSchemaMap => {\n const { collectionSlug, config, globalSlug, i18n } = args\n\n if (process.env.NODE_ENV !== 'development') {\n if (!cachedFieldMap) {\n cachedFieldMap = new Map()\n }\n const cachedEntityFieldMap = cachedFieldMap.get(collectionSlug || globalSlug)\n if (cachedEntityFieldMap) {\n return cachedEntityFieldMap\n }\n }\n\n const { fieldSchemaMap: entityFieldMap } = buildFieldSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n: i18n as I18n,\n })\n\n if (process.env.NODE_ENV !== 'development') {\n cachedFieldMap.set(collectionSlug || globalSlug, entityFieldMap)\n }\n\n return entityFieldMap\n}\n\nexport const getClientConfig = (args: {\n config: SanitizedConfig\n i18n: I18nClient\n}): ClientConfig => {\n const { config, i18n } = args\n\n if (cachedClientConfig && process.env.NODE_ENV !== 'development') {\n return cachedClientConfig\n }\n\n cachedClientConfig = createClientConfig({\n config,\n i18n,\n })\n\n return cachedClientConfig\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: { isLocked: boolean; lastEditedAt: string; user: ClientUser | number | string }\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateResult> => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n updateLastEdited,\n } = args\n\n let data = incomingData\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const fieldSchemaMap = getFieldSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n collectionSlug,\n data,\n fields,\n fieldSchemaMap,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildFormState.js","names":["formatErrors","reduceFieldsToValues","fieldSchemasToFormState","renderField","buildFieldSchemaMap","handleFormStateLocking","cachedFieldMap","global","_payload_fieldMap","cachedClientConfig","_payload_clientConfig","getFieldSchemaMap","args","collectionSlug","config","globalSlug","i18n","process","env","NODE_ENV","Map","cachedEntityFieldMap","get","fieldSchemaMap","entityFieldMap","set","buildFormStateHandler","req","incomingUserSlug","user","collection","adminUserSlug","payload","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","data","incomingData","docPermissions","docPreferences","formState","operation","renderAllFields","returnLockStatus","schemaPath","updateLastEdited","undefined","fieldOrEntityConfig","fields","type","Array","isArray","formStateResult","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type { I18n, I18nClient } from '@payloadcms/translations'\nimport type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FieldSchemaMap,\n FormState,\n SanitizedConfig,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { buildFieldSchemaMap } from './buildFieldSchemaMap/index.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nlet cachedFieldMap = global._payload_fieldMap\nlet cachedClientConfig = global._payload_clientConfig\n\nif (!cachedFieldMap) {\n cachedFieldMap = global._payload_fieldMap = null\n}\n\nif (!cachedClientConfig) {\n cachedClientConfig = global._payload_clientConfig = null\n}\n\nexport const getFieldSchemaMap = (args: {\n collectionSlug?: string\n config: SanitizedConfig\n globalSlug?: string\n i18n: I18nClient\n}): FieldSchemaMap => {\n const { collectionSlug, config, globalSlug, i18n } = args\n\n if (process.env.NODE_ENV !== 'development') {\n if (!cachedFieldMap) {\n cachedFieldMap = new Map()\n }\n const cachedEntityFieldMap = cachedFieldMap.get(collectionSlug || globalSlug)\n if (cachedEntityFieldMap) {\n return cachedEntityFieldMap\n }\n }\n\n const { fieldSchemaMap: entityFieldMap } = buildFieldSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n: i18n as I18n,\n })\n\n if (process.env.NODE_ENV !== 'development') {\n cachedFieldMap.set(collectionSlug || globalSlug, entityFieldMap)\n }\n\n return entityFieldMap\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: { isLocked: boolean; lastEditedAt: string; user: ClientUser | number | string }\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateResult> => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n updateLastEdited,\n } = args\n\n let data = incomingData\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const fieldSchemaMap = getFieldSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = fieldSchemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n collectionSlug,\n data,\n fields,\n fieldSchemaMap,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { I18nClient } from '@payloadcms/translations';
|
|
2
|
-
import type { BuildTableStateArgs, ClientConfig, ErrorResult, PaginatedDocs, SanitizedConfig } from 'payload';
|
|
2
|
+
import type { BuildTableStateArgs, ClientConfig, ErrorResult, ImportMap, PaginatedDocs, SanitizedConfig } from 'payload';
|
|
3
3
|
import type { Column } from '../elements/Table/index.js';
|
|
4
4
|
import type { ListPreferences } from '../elements/TableColumns/index.js';
|
|
5
5
|
export declare const getClientConfig: (args: {
|
|
6
6
|
config: SanitizedConfig;
|
|
7
7
|
i18n: I18nClient;
|
|
8
|
+
importMap: ImportMap;
|
|
8
9
|
}) => ClientConfig;
|
|
9
10
|
type BuildTableStateSuccessResult = {
|
|
10
11
|
clientConfig?: ClientConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,aAAa,EAEb,eAAe,EAChB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAUxE,eAAO,MAAM,eAAe,SAAU;IACpC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,WAAW,EACX,SAAS,EACT,aAAa,EAEb,eAAe,EAChB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAUxE,eAAO,MAAM,eAAe,SAAU;IACpC,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,YAcH,CAAA;AAED,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,eAAe,CAAA;IAC5B,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,SAC3B,mBAAmB,KACxB,OAAO,CAAC,qBAAqB,CAqB/B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB,mBAAmB,KACxB,OAAO,CAAC,4BAA4B,CAqKtC,CAAA"}
|
|
@@ -8,14 +8,16 @@ if (!cachedClientConfig) {
|
|
|
8
8
|
export const getClientConfig = args => {
|
|
9
9
|
const {
|
|
10
10
|
config,
|
|
11
|
-
i18n
|
|
11
|
+
i18n,
|
|
12
|
+
importMap
|
|
12
13
|
} = args;
|
|
13
14
|
if (cachedClientConfig && process.env.NODE_ENV !== 'development') {
|
|
14
15
|
return cachedClientConfig;
|
|
15
16
|
}
|
|
16
17
|
cachedClientConfig = createClientConfig({
|
|
17
18
|
config,
|
|
18
|
-
i18n
|
|
19
|
+
i18n,
|
|
20
|
+
importMap
|
|
19
21
|
});
|
|
20
22
|
return cachedClientConfig;
|
|
21
23
|
};
|
|
@@ -92,7 +94,8 @@ export const buildTableState = async args => {
|
|
|
92
94
|
}
|
|
93
95
|
const clientConfig = getClientConfig({
|
|
94
96
|
config,
|
|
95
|
-
i18n
|
|
97
|
+
i18n,
|
|
98
|
+
importMap: payload.importMap
|
|
96
99
|
});
|
|
97
100
|
let collectionConfig;
|
|
98
101
|
let clientCollectionConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTableState.js","names":["dequal","createClientConfig","formatErrors","renderFilters","renderTable","cachedClientConfig","global","_payload_clientConfig","getClientConfig","args","config","i18n","process","env","NODE_ENV","buildTableStateHandler","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","mergedPrefs","create","data","fields","clientFields","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","importMap","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n SanitizedConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal'\nimport { createClientConfig, formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { renderFilters, renderTable } from './renderTable.js'\n\nlet cachedClientConfig = global._payload_clientConfig\n\nif (!cachedClientConfig) {\n cachedClientConfig = global._payload_clientConfig = null\n}\n\nexport const getClientConfig = (args: {\n config: SanitizedConfig\n i18n: I18nClient\n}): ClientConfig => {\n const { config, i18n } = args\n\n if (cachedClientConfig && process.env.NODE_ENV !== 'development') {\n return cachedClientConfig\n }\n\n cachedClientConfig = createClientConfig({\n config,\n i18n,\n })\n\n return cachedClientConfig\n}\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as ListPreferences)\n\n let newPrefs = preferencesResult\n\n if (!preferencesResult || !dequal(columns, preferencesResult?.columns)) {\n const mergedPrefs = {\n ...(preferencesResult || {}),\n columns,\n }\n\n newPrefs = await payload\n .create({\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: mergedPrefs,\n },\n req,\n })\n ?.then((res) => res.value as ListPreferences)\n }\n\n const fields = collectionConfig.fields\n const clientFields = clientCollectionConfig?.fields || []\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n collectionConfig: clientCollectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n fields,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"buildTableState.js","names":["dequal","createClientConfig","formatErrors","renderFilters","renderTable","cachedClientConfig","global","_payload_clientConfig","getClientConfig","args","config","i18n","importMap","process","env","NODE_ENV","buildTableStateHandler","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","docs","docsFromArgs","enableRowSelections","query","renderRowTypes","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","length","clientConfig","collectionConfig","clientCollectionConfig","slug","preferencesKey","preferencesResult","where","and","key","equals","id","then","value","newPrefs","mergedPrefs","create","data","fields","clientFields","parseInt","undefined","page","sort","columnState","Table","columnPreferences","useAsTitle","renderedFilters","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n ErrorResult,\n ImportMap,\n PaginatedDocs,\n SanitizedCollectionConfig,\n SanitizedConfig,\n} from 'payload'\n\nimport { dequal } from 'dequal'\nimport { createClientConfig, formatErrors } from 'payload'\n\nimport type { Column } from '../elements/Table/index.js'\nimport type { ListPreferences } from '../elements/TableColumns/index.js'\n\nimport { renderFilters, renderTable } from './renderTable.js'\n\nlet cachedClientConfig = global._payload_clientConfig\n\nif (!cachedClientConfig) {\n cachedClientConfig = global._payload_clientConfig = null\n}\n\nexport const getClientConfig = (args: {\n config: SanitizedConfig\n i18n: I18nClient\n importMap: ImportMap\n}): ClientConfig => {\n const { config, i18n, importMap } = args\n\n if (cachedClientConfig && process.env.NODE_ENV !== 'development') {\n return cachedClientConfig\n }\n\n cachedClientConfig = createClientConfig({\n config,\n i18n,\n importMap,\n })\n\n return cachedClientConfig\n}\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: ListPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateResult> => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n docs: docsFromArgs,\n enableRowSelections,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n\n // get prefs, then set update them using the columns that we just received\n const preferencesKey = `${collectionSlug}-list`\n\n const preferencesResult = await payload\n .find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: user.collection,\n },\n },\n {\n 'user.value': {\n equals: user.id,\n },\n },\n ],\n },\n })\n .then((res) => res.docs[0]?.value as ListPreferences)\n\n let newPrefs = preferencesResult\n\n if (!preferencesResult || !dequal(columns, preferencesResult?.columns)) {\n const mergedPrefs = {\n ...(preferencesResult || {}),\n columns,\n }\n\n newPrefs = await payload\n .create({\n collection: 'payload-preferences',\n data: {\n key: preferencesKey,\n user: {\n collection: user.collection,\n value: user.id,\n },\n value: mergedPrefs,\n },\n req,\n })\n ?.then((res) => res.value as ListPreferences)\n }\n\n const fields = collectionConfig.fields\n const clientFields = clientCollectionConfig?.fields || []\n\n let docs = docsFromArgs\n let data: PaginatedDocs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!docs || query) {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n limit: query?.limit ? parseInt(query.limit, 10) : undefined,\n page: query?.page ? parseInt(query.page, 10) : undefined,\n sort: query?.sort,\n where: query?.where,\n })\n\n docs = data.docs\n }\n\n const { columnState, Table } = renderTable({\n collectionConfig: clientCollectionConfig,\n columnPreferences: undefined, // TODO, might not be needed\n columns,\n docs,\n enableRowSelections,\n fields,\n i18n: req.i18n,\n payload,\n renderRowTypes,\n tableAppearance,\n useAsTitle: collectionConfig.admin.useAsTitle,\n })\n\n const renderedFilters = renderFilters(fields, req.payload.importMap)\n\n return {\n data,\n preferences: newPrefs,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|