@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.
Files changed (85) hide show
  1. package/dist/elements/Banner/index.d.ts.map +1 -1
  2. package/dist/elements/Banner/index.js.map +1 -1
  3. package/dist/elements/BulkUpload/AddingFilesView/index.js +2 -2
  4. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  5. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  6. package/dist/elements/BulkUpload/EditForm/index.js +13 -2
  7. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  8. package/dist/elements/BulkUpload/FormsManager/reducer.js +14 -14
  9. package/dist/elements/BulkUpload/FormsManager/reducer.js.map +1 -1
  10. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/DocumentDrawer/DrawerContent.js +44 -30
  12. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  13. package/dist/elements/DuplicateDocument/index.d.ts +1 -1
  14. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  15. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  16. package/dist/elements/EditMany/index.d.ts.map +1 -1
  17. package/dist/elements/EditMany/index.js +155 -247
  18. package/dist/elements/EditMany/index.js.map +1 -1
  19. package/dist/elements/RenderServerComponent/index.d.ts +0 -6
  20. package/dist/elements/RenderServerComponent/index.d.ts.map +1 -1
  21. package/dist/elements/RenderServerComponent/index.js +1 -24
  22. package/dist/elements/RenderServerComponent/index.js.map +1 -1
  23. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +1 -1
  24. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  25. package/dist/elements/Table/DefaultCell/index.d.ts +1 -1
  26. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  27. package/dist/elements/Table/DefaultCell/index.js +2 -2
  28. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  29. package/dist/elements/Table/RelationshipProvider/reducer.js +16 -16
  30. package/dist/elements/Table/RelationshipProvider/reducer.js.map +1 -1
  31. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +4 -4
  32. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  33. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +7 -7
  34. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js.map +1 -1
  35. package/dist/exports/client/index.js +10 -10
  36. package/dist/exports/client/index.js.map +4 -4
  37. package/dist/exports/shared/index.d.ts +1 -0
  38. package/dist/exports/shared/index.d.ts.map +1 -1
  39. package/dist/exports/shared/index.js +2 -2
  40. package/dist/exports/shared/index.js.map +4 -4
  41. package/dist/fields/Relationship/optionsReducer.js +42 -42
  42. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  43. package/dist/forms/Form/fieldReducer.js +170 -170
  44. package/dist/forms/Form/fieldReducer.js.map +1 -1
  45. package/dist/forms/Form/index.d.ts.map +1 -1
  46. package/dist/forms/Form/index.js +7 -29
  47. package/dist/forms/Form/index.js.map +1 -1
  48. package/dist/forms/RenderFields/RenderField.js +6 -6
  49. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  50. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  51. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  52. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +17 -17
  53. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  54. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  55. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  56. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  57. package/dist/providers/ServerFunctions/index.d.ts +0 -2
  58. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  59. package/dist/providers/ServerFunctions/index.js +16 -67
  60. package/dist/providers/ServerFunctions/index.js.map +1 -1
  61. package/dist/utilities/abortAndIgnore.d.ts +2 -0
  62. package/dist/utilities/abortAndIgnore.d.ts.map +1 -0
  63. package/dist/utilities/abortAndIgnore.js +10 -0
  64. package/dist/utilities/abortAndIgnore.js.map +1 -0
  65. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +12 -12
  66. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  67. package/dist/utilities/buildFormState.d.ts +0 -4
  68. package/dist/utilities/buildFormState.d.ts.map +1 -1
  69. package/dist/utilities/buildFormState.js +1 -15
  70. package/dist/utilities/buildFormState.js.map +1 -1
  71. package/dist/utilities/buildTableState.d.ts +2 -1
  72. package/dist/utilities/buildTableState.d.ts.map +1 -1
  73. package/dist/utilities/buildTableState.js +6 -3
  74. package/dist/utilities/buildTableState.js.map +1 -1
  75. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  76. package/dist/utilities/handleFormStateLocking.js +2 -0
  77. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  78. package/dist/views/Edit/index.d.ts.map +1 -1
  79. package/dist/views/Edit/index.js +11 -18
  80. package/dist/views/Edit/index.js.map +1 -1
  81. package/dist/views/List/index.d.ts.map +1 -1
  82. package/dist/views/List/index.js +41 -52
  83. package/dist/views/List/index.js.map +1 -1
  84. package/license.md +22 -0
  85. package/package.json +15 -6
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormStateLocking.d.ts","sourceRoot":"","sources":["../../src/utilities/handleFormStateLocking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExD,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,sBAAsB,+DAMhC,IAAI,KAAG,OAAO,CAAC,MAAM,CAgIvB,CAAA"}
1
+ {"version":3,"file":"handleFormStateLocking.d.ts","sourceRoot":"","sources":["../../src/utilities/handleFormStateLocking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExD,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,sBAAsB,+DAMhC,IAAI,KAAG,OAAO,CAAC,MAAM,CAkIvB,CAAA"}
@@ -46,7 +46,9 @@ export const handleFormStateLocking = async ({
46
46
  collection: 'payload-locked-documents',
47
47
  depth: 1,
48
48
  limit: 1,
49
+ overrideAccess: false,
49
50
  pagination: false,
51
+ req,
50
52
  where: lockedDocumentQuery
51
53
  });
52
54
  if (lockedDocument.docs && lockedDocument.docs.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormStateLocking.js","names":["handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","lockedDocumentQuery","and","equals","lockDurationDefault","lockDocumentsProp","payload","config","collections","find","c","slug","lockDocuments","globals","g","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","pagination","where","docs","length","isLocked","lastEditedAt","user","value","lockOwnerId","db","updateOne","data","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, TypedUser } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: TypedUser\n}\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDocumentsProp = collectionSlug\n ? req.payload.config.collections.find((c) => c.slug === collectionSlug)?.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n pagination: false,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerId =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerId === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n req,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n req,\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n req,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"AAgBA,OAAO,MAAMA,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,EAAE;EACFC,cAAc;EACdC,UAAU;EACVC,GAAG;EACHC;AAAgB,CACX;EACL,IAAIC,MAAA;EAEJ,IAAIL,EAAA,IAAME,UAAA,EAAY;IACpB,IAAII,mBAAA;IAEJ,IAAIL,cAAA,EAAgB;MAClBK,mBAAA,GAAsB;QACpBC,GAAA,EAAK,CACH;UAAE,uBAAuB;YAAEC,MAAA,EAAQP;UAAe;QAAE,GACpD;UAAE,kBAAkB;YAAEO,MAAA,EAAQR;UAAG;QAAE;MAEvC;IACF,OAAO,IAAIE,UAAA,EAAY;MACrBI,mBAAA,GAAsB;QACpBC,GAAA,EAAK,CAAC;UAAEL,UAAA,EAAY;YAAEM,MAAA,EAAQN;UAAW;QAAE;MAC7C;IACF;IAEA,MAAMO,mBAAA,GAAsB,IAAI;IAAA;IAChC,MAAMC,iBAAA,GAAoBT,cAAA,GACtBE,GAAA,CAAIQ,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,IAAI,CAAEC,CAAA,IAAMA,CAAA,CAAEC,IAAI,KAAKf,cAAA,GAAiBgB,aAAA,GACvEd,GAAA,CAAIQ,OAAO,CAACC,MAAM,CAACM,OAAO,CAACJ,IAAI,CAAEK,CAAA,IAAMA,CAAA,CAAEH,IAAI,KAAKd,UAAA,GAAae,aAAA;IAEnE,MAAMG,YAAA,GACJ,OAAOV,iBAAA,KAAsB,WAAWA,iBAAA,CAAkBW,QAAQ,GAAGZ,mBAAA;IACvE,MAAMa,0BAAA,GAA6BF,YAAA,GAAe;IAClD,MAAMG,GAAA,GAAM,IAAIC,IAAA,GAAOC,OAAO;IAE9B,IAAInB,mBAAA,EAAqB;MACvB;MACAA,mBAAA,CAAoBC,GAAG,CAACmB,IAAI,CAAC;QAC3BC,SAAA,EAAW;UACTC,YAAA,EAAc,IAAIJ,IAAA,CAAKD,GAAA,GAAMD,0BAAA,EAA4BO,WAAW;QACtE;MACF;MAEA,MAAMC,cAAA,GAAiB,MAAM3B,GAAA,CAAIQ,OAAO,CAACG,IAAI,CAAC;QAC5CiB,UAAA,EAAY;QACZC,KAAA,EAAO;QACPC,KAAA,EAAO;QACPC,UAAA,EAAY;QACZC,KAAA,EAAO7B;MACT;MAEA,IAAIwB,cAAA,CAAeM,IAAI,IAAIN,cAAA,CAAeM,IAAI,CAACC,MAAM,GAAG,GAAG;QACzDhC,MAAA,GAAS;UACPiC,QAAA,EAAU;UACVC,YAAA,EAAcT,cAAA,CAAeM,IAAI,CAAC,EAAE,EAAET,SAAA;UACtCa,IAAA,EAAMV,cAAA,CAAeM,IAAI,CAAC,EAAE,EAAEI,IAAA,EAAMC;QACtC;QAEA,MAAMC,WAAA,GACJ,OAAOZ,cAAA,CAAeM,IAAI,CAAC,EAAE,EAAEI,IAAA,EAAMC,KAAA,KAAU,WAC3CX,cAAA,CAAeM,IAAI,CAAC,EAAE,EAAEI,IAAA,EAAMC,KAAA,EAAOzC,EAAA,GACrC8B,cAAA,CAAeM,IAAI,CAAC,EAAE,EAAEI,IAAA,EAAMC,KAAA;QACpC;QACA,IAAIrC,gBAAA,IAAoBD,GAAA,CAAIqC,IAAI,IAAIE,WAAA,KAAgBvC,GAAA,CAAIqC,IAAI,CAACxC,EAAE,EAAE;UAC/D,MAAMG,GAAA,CAAIQ,OAAO,CAACgC,EAAE,CAACC,SAAS,CAAC;YAC7B5C,EAAA,EAAI8B,cAAA,CAAeM,IAAI,CAAC,EAAE,CAACpC,EAAE;YAC7B+B,UAAA,EAAY;YACZc,IAAA,EAAM,CAAC;YACP1C;UACF;QACF;MACF,OAAO;QACL;QACA;QACA,IAAI2C,uBAAA;QAEJ,IAAI7C,cAAA,EAAgB;UAClB6C,uBAAA,GAA0B;YACxBvC,GAAA,EAAK,CACH;cAAE,uBAAuB;gBAAEC,MAAA,EAAQP;cAAe;YAAE,GACpD;cACE0B,SAAA,EAAW;gBACToB,SAAA,EAAW,IAAIvB,IAAA,CAAKD,GAAA,GAAMD,0BAAA,EAA4BO,WAAW;cACnE;YACF;UAEJ;QACF,OAAO,IAAI3B,UAAA,EAAY;UACrB4C,uBAAA,GAA0B;YACxBvC,GAAA,EAAK,CACH;cAAEL,UAAA,EAAY;gBAAEM,MAAA,EAAQN;cAAW;YAAE,GACrC;cACEyB,SAAA,EAAW;gBACToB,SAAA,EAAW,IAAIvB,IAAA,CAAKD,GAAA,GAAMD,0BAAA,EAA4BO,WAAW;cACnE;YACF;UAEJ;QACF;QAEA,MAAM1B,GAAA,CAAIQ,OAAO,CAACgC,EAAE,CAACK,UAAU,CAAC;UAC9BjB,UAAA,EAAY;UACZ5B,GAAA;UACAgC,KAAA,EAAOW;QACT;QAEA,MAAM3C,GAAA,CAAIQ,OAAO,CAACgC,EAAE,CAACM,MAAM,CAAC;UAC1BlB,UAAA,EAAY;UACZc,IAAA,EAAM;YACJK,QAAA,EAAUjD,cAAA,GACN;cACEkD,UAAA,EAAYlD,cAAA;cACZwC,KAAA,EAAOzC;YACT,IACAoD,SAAA;YACJlD,UAAA,EAAYA,UAAA,GAAaA,UAAA,GAAakD,SAAA;YACtCZ,IAAA,EAAM;cACJW,UAAA,EAAYhD,GAAA,CAAIqC,IAAI,CAACT,UAAU;cAC/BU,KAAA,EAAOtC,GAAA,CAAIqC,IAAI,CAACxC;YAClB;UACF;UACAG;QACF;QAEAE,MAAA,GAAS;UACPiC,QAAA,EAAU;UACVC,YAAA,EAAc,IAAIf,IAAA,GAAOK,WAAW;UACpCW,IAAA,EAAMrC,GAAA,CAAIqC;QACZ;MACF;IACF;EACF;EAEA,OAAOnC,MAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"handleFormStateLocking.js","names":["handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","lockedDocumentQuery","and","equals","lockDurationDefault","lockDocumentsProp","payload","config","collections","find","c","slug","lockDocuments","globals","g","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","overrideAccess","pagination","where","docs","length","isLocked","lastEditedAt","user","value","lockOwnerId","db","updateOne","data","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, TypedUser } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: TypedUser\n}\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDocumentsProp = collectionSlug\n ? req.payload.config.collections.find((c) => c.slug === collectionSlug)?.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n req,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerId =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerId === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n req,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n req,\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n req,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,SAAS,CAAA;AAChB,OAAO,KAA6D,MAAM,OAAO,CAAA;AA0BjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA2gB7D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,SAAS,CAAA;AAChB,OAAO,KAA6D,MAAM,OAAO,CAAA;AA2BjF,OAAO,cAAc,CAAA;AASrB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmgB7D,CAAA"}
@@ -20,6 +20,7 @@ import { useEditDepth } from '../../providers/EditDepth/index.js';
20
20
  import { OperationProvider } from '../../providers/Operation/index.js';
21
21
  import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
22
22
  import { useUploadEdits } from '../../providers/UploadEdits/index.js';
23
+ import { abortAndIgnore } from '../../utilities/abortAndIgnore.js';
23
24
  import { formatAdminURL } from '../../utilities/formatAdminURL.js';
24
25
  import { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js';
25
26
  import { handleGoBack } from '../../utilities/handleGoBack.js';
@@ -114,7 +115,7 @@ export const DefaultEditView = ({
114
115
  const {
115
116
  getFormState
116
117
  } = useServerFunctions();
117
- const abortControllerRef = useRef(new AbortController());
118
+ const onChangeAbortControllerRef = useRef(null);
118
119
  const locale = params.get('locale');
119
120
  const entitySlug = collectionConfig?.slug || globalConfig?.slug;
120
121
  const operation = collectionSlug && !id ? 'create' : 'update';
@@ -201,15 +202,9 @@ export const DefaultEditView = ({
201
202
  const onChange = useCallback(async ({
202
203
  formState: prevFormState
203
204
  }) => {
204
- if (abortControllerRef.current) {
205
- try {
206
- abortControllerRef.current.abort();
207
- } catch (e) {
208
- // swallow error
209
- }
210
- }
211
- const abortController = new AbortController();
212
- abortControllerRef.current = abortController;
205
+ abortAndIgnore(onChangeAbortControllerRef.current);
206
+ const controller = new AbortController();
207
+ onChangeAbortControllerRef.current = controller;
213
208
  const currentTime = Date.now();
214
209
  const timeSinceLastUpdate = currentTime - editSessionStartTime;
215
210
  const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds
@@ -234,7 +229,7 @@ export const DefaultEditView = ({
234
229
  renderAllFields: false,
235
230
  returnLockStatus: isLockingEnabled ? true : false,
236
231
  schemaPath: schemaPathSegments.join('.'),
237
- // signal: abortController.signal,
232
+ signal: controller.signal,
238
233
  updateLastEdited
239
234
  });
240
235
  setDocumentIsLocked(true);
@@ -261,13 +256,6 @@ export const DefaultEditView = ({
261
256
  // Clean up when the component unmounts or when the document is unlocked
262
257
  useEffect(() => {
263
258
  return () => {
264
- if (abortControllerRef.current) {
265
- try {
266
- abortControllerRef.current.abort();
267
- } catch (e_0) {
268
- // swallow error
269
- }
270
- }
271
259
  if (!isLockingEnabled) {
272
260
  return;
273
261
  }
@@ -288,6 +276,11 @@ export const DefaultEditView = ({
288
276
  setShowTakeOverModal(false);
289
277
  };
290
278
  }, [collectionSlug, globalSlug, id, unlockDocument, user, setCurrentEditor, isLockingEnabled, documentIsLocked, setDocumentIsLocked]);
279
+ useEffect(() => {
280
+ return () => {
281
+ abortAndIgnore(onChangeAbortControllerRef.current);
282
+ };
283
+ }, []);
291
284
  const shouldShowDocumentLockedModal = documentIsLocked && currentEditor && (typeof currentEditor === 'object' ? currentEditor.id !== user?.id : currentEditor !== user?.id) && !isReadOnlyForIncomingUser && !showTakeOverModal && !documentLockStateRef.current?.hasShownLockedModal && !isLockExpired;
292
285
  return /*#__PURE__*/_jsx("main", {
293
286
  className: classes.filter(Boolean).join(' '),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","data","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","abortControllerRef","AbortController","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","current","abort","e","abortController","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","renderAllFields","returnLockStatus","schemaPath","join","previousOwnerId","lockedUserID","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport {\n type ClientCollectionConfig,\n type ClientGlobalConfig,\n type ClientSideEditViewProps,\n type ClientUser,\n} from 'payload'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const abortControllerRef = useRef(new AbortController())\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n\n if (collectionConfig) {\n preventLeaveWithoutSaving = !(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave\n )\n } else if (globalConfig) {\n preventLeaveWithoutSaving = !(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave\n )\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const onSave = useCallback(\n async (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n },\n [\n reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n incrementVersionCount,\n onSaveFromContext,\n globalSlug,\n isLockingEnabled,\n isEditing,\n depth,\n getDocPermissions,\n refreshCookieAsync,\n setDocumentIsLocked,\n adminRoute,\n locale,\n router,\n resetUploadEdits,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n if (abortControllerRef.current) {\n try {\n abortControllerRef.current.abort()\n } catch (e) {\n // swallow error\n }\n }\n\n const abortController = new AbortController()\n abortControllerRef.current = abortController\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only wanna render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath: schemaPathSegments.join('.'),\n // signal: abortController.signal,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n setDocumentIsLocked,\n user.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (abortControllerRef.current) {\n try {\n abortControllerRef.current.abort()\n } catch (e) {\n // swallow error\n }\n }\n\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={data}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentTakeOver","LeaveWithoutSaving","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","OperationProvider","useServerFunctions","useUploadEdits","abortAndIgnore","formatAdminURL","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","DefaultEditView","Description","PreviewButton","PublishButton","SaveButton","SaveDraftButton","CustomUpload","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","data","initialState","isEditing","isInitializing","lastUpdateTime","redirectAfterDelete","redirectAfterDuplicate","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","onChangeAbortControllerRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","preventLeaveWithoutSaving","versions","drafts","autosave","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","classes","push","schemaPathSegments","setSchemaPathSegments","disableLocalStrategy","validateBeforeSubmit","setValidateBeforeSubmit","json","updatedAt","result","toISOString","redirectRoute","path","doc","onChange","formState","prevFormState","current","controller","AbortController","currentTime","timeSinceLastUpdate","updateLastEdited","docPreferences","lockedState","state","renderAllFields","returnLockStatus","schemaPath","join","signal","previousOwnerId","lockedUserID","currentPath","window","location","pathname","documentId","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","shouldShowDocumentLockedModal","_jsx","className","filter","_jsxs","disabled","disableValidationOnSubmit","method","onSuccess","isActive","onReadOnly","onTakeOver","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport {\n type ClientCollectionConfig,\n type ClientGlobalConfig,\n type ClientSideEditViewProps,\n type ClientUser,\n} from 'payload'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore } from '../../utilities/abortAndIgnore.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport './index.scss'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\n\nconst baseClass = 'collection-edit'\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport const DefaultEditView: React.FC<ClientSideEditViewProps> = ({\n Description,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Upload: CustomUpload,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData: data,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n redirectAfterDelete,\n redirectAfterDuplicate,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n const globalConfig = getEntityConfig({ globalSlug }) as ClientGlobalConfig\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n let preventLeaveWithoutSaving = true\n\n if (collectionConfig) {\n preventLeaveWithoutSaving = !(\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave\n )\n } else if (globalConfig) {\n preventLeaveWithoutSaving = !(\n globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave\n )\n } else if (typeof disableLeaveWithoutSaving !== 'undefined') {\n preventLeaveWithoutSaving = !disableLeaveWithoutSaving\n }\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const classes = [baseClass, (id || globalSlug) && `${baseClass}--is-editing`]\n\n if (globalSlug) {\n classes.push(`global-edit--${globalSlug}`)\n }\n\n if (collectionSlug) {\n classes.push(`collection-edit--${collectionSlug}`)\n }\n\n const [schemaPathSegments, setSchemaPathSegments] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return [`_${entitySlug}`, 'auth']\n }\n\n return [entitySlug]\n })\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const onSave = useCallback(\n async (json) => {\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n // Unlock the document after save\n if ((id || globalSlug) && isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n },\n [\n reportUpdate,\n id,\n entitySlug,\n user,\n collectionSlug,\n userSlug,\n incrementVersionCount,\n onSaveFromContext,\n globalSlug,\n isLockingEnabled,\n isEditing,\n depth,\n getDocPermissions,\n refreshCookieAsync,\n setDocumentIsLocked,\n adminRoute,\n locale,\n router,\n resetUploadEdits,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n // Performance optimization: Setting it to false ensure that only fields that have explicit requireRender set in the form state will be rendered (e.g. new array rows).\n // We only wanna render ALL fields on initial render, not in onChange.\n renderAllFields: false,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerId =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerId) {\n if (previousOwnerId === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n setDocumentIsLocked,\n user.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentId = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentId && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <main className={classes.filter(Boolean).join(' ')}>\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && <DocumentDrawerHeader drawerSlug={drawerSlug} />}\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={data}\n disableActions={disableActions}\n disableCreate={disableCreate}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setSchemaPathSegments={setSchemaPathSegments}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n />\n )}\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA6BjD,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CAC/C,GAAG,aAAa,CAAA;AAEjB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqPzD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/List/index.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAE5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AA2BjD,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAChC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC5B,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;CAC/C,GAAG,aAAa,CAAA;AAEjB,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+NzD,CAAA"}
@@ -20,7 +20,6 @@ import { Pagination } from '../../elements/Pagination/index.js';
20
20
  import { PerPage } from '../../elements/PerPage/index.js';
21
21
  import { PublishMany } from '../../elements/PublishMany/index.js';
22
22
  import { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js';
23
- import { StaggeredShimmers } from '../../elements/ShimmerEffect/index.js';
24
23
  import { useStepNav } from '../../elements/StepNav/index.js';
25
24
  import { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js';
26
25
  import { TableColumnsProvider } from '../../elements/TableColumns/index.js';
@@ -31,7 +30,6 @@ import { useConfig } from '../../providers/Config/index.js';
31
30
  import { useEditDepth } from '../../providers/EditDepth/index.js';
32
31
  import { useListQuery } from '../../providers/ListQuery/index.js';
33
32
  import { SelectionProvider } from '../../providers/Selection/index.js';
34
- import { useServerFunctions } from '../../providers/ServerFunctions/index.js';
35
33
  import { useTranslation } from '../../providers/Translation/index.js';
36
34
  import { useWindowInfo } from '../../providers/WindowInfo/index.js';
37
35
  import './index.scss';
@@ -81,7 +79,6 @@ export const DefaultListView = props => {
81
79
  t1 = $[2];
82
80
  }
83
81
  useEffect(t0, t1);
84
- const payloadServerAction = useServerFunctions();
85
82
  const {
86
83
  user
87
84
  } = useAuth();
@@ -130,39 +127,49 @@ export const DefaultListView = props => {
130
127
  const {
131
128
  s: smallBreak
132
129
  } = t2;
133
- useEffect(() => {
134
- if (!collectionConfig) {
135
- const getNewConfig = async () => {
136
- await payloadServerAction("render-config", {
137
- collectionSlug,
138
- languageCode: i18n.language
130
+ let t3;
131
+ if (isUploadCollection) {
132
+ let t4;
133
+ if ($[3] !== data.docs) {
134
+ let t5;
135
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
136
+ t5 = doc => ({
137
+ ...doc,
138
+ filesize: formatFilesize(doc.filesize)
139
139
  });
140
- };
141
- getNewConfig();
140
+ $[5] = t5;
141
+ } else {
142
+ t5 = $[5];
143
+ }
144
+ t4 = data.docs.map(t5);
145
+ $[3] = data.docs;
146
+ $[4] = t4;
147
+ } else {
148
+ t4 = $[4];
142
149
  }
143
- }, [payloadServerAction, collectionConfig, collectionSlug, data, i18n]);
144
- const docs = data.docs || [];
145
- if (isUploadCollection) {
146
- docs?.map(_temp);
150
+ t3 = t4;
151
+ } else {
152
+ t3 = data.docs;
147
153
  }
148
- let t3;
149
- if ($[3] !== setCollectionSlug || $[4] !== collectionSlug || $[5] !== openModal || $[6] !== bulkUploadDrawerSlug || $[7] !== setOnSuccess || $[8] !== router) {
150
- t3 = () => {
154
+ const docs = t3;
155
+ let t4;
156
+ if ($[6] !== setCollectionSlug || $[7] !== collectionSlug || $[8] !== openModal || $[9] !== bulkUploadDrawerSlug || $[10] !== setOnSuccess || $[11] !== router) {
157
+ t4 = () => {
151
158
  setCollectionSlug(collectionSlug);
152
159
  openModal(bulkUploadDrawerSlug);
153
160
  setOnSuccess(() => router.refresh());
154
161
  };
155
- $[3] = setCollectionSlug;
156
- $[4] = collectionSlug;
157
- $[5] = openModal;
158
- $[6] = bulkUploadDrawerSlug;
159
- $[7] = setOnSuccess;
160
- $[8] = router;
161
- $[9] = t3;
162
+ $[6] = setCollectionSlug;
163
+ $[7] = collectionSlug;
164
+ $[8] = openModal;
165
+ $[9] = bulkUploadDrawerSlug;
166
+ $[10] = setOnSuccess;
167
+ $[11] = router;
168
+ $[12] = t4;
162
169
  } else {
163
- t3 = $[9];
170
+ t4 = $[12];
164
171
  }
165
- const openBulkUpload = t3;
172
+ const openBulkUpload = t4;
166
173
  useEffect(() => {
167
174
  if (drawerDepth <= 1) {
168
175
  setStepNav([{
@@ -170,22 +177,11 @@ export const DefaultListView = props => {
170
177
  }]);
171
178
  }
172
179
  }, [setStepNav, labels, drawerDepth]);
173
- let t4;
174
- if ($[10] !== data.docs || $[11] !== Table) {
175
- t4 = data.docs && data.docs.length > 0 && _jsx(RelationshipProvider, {
176
- children: Table
177
- });
178
- $[10] = data.docs;
179
- $[11] = Table;
180
- $[12] = t4;
181
- } else {
182
- t4 = $[12];
183
- }
184
180
  return _jsx(Fragment, {
185
181
  children: _jsx(TableColumnsProvider, {
186
182
  collectionSlug,
187
183
  columnState,
188
- docs: data.docs,
184
+ docs,
189
185
  enableRowSelections,
190
186
  listPreferences,
191
187
  preferenceKey,
@@ -193,7 +189,7 @@ export const DefaultListView = props => {
193
189
  children: _jsx("div", {
194
190
  className: `${baseClass} ${baseClass}--${collectionSlug}`,
195
191
  children: _jsxs(SelectionProvider, {
196
- docs: data.docs,
192
+ docs,
197
193
  totalDocs: data.totalDocs,
198
194
  user,
199
195
  children: [BeforeList, _jsxs(Gutter, {
@@ -223,10 +219,9 @@ export const DefaultListView = props => {
223
219
  disableBulkDelete,
224
220
  disableBulkEdit,
225
221
  renderedFilters
226
- }), BeforeListTable, !data.docs && _jsx(StaggeredShimmers, {
227
- className: [`${baseClass}__shimmer`, `${baseClass}__shimmer--rows`].join(" "),
228
- count: 6
229
- }), t4, data.docs && data.docs.length === 0 && _jsxs("div", {
222
+ }), BeforeListTable, docs.length > 0 && _jsx(RelationshipProvider, {
223
+ children: Table
224
+ }), docs.length === 0 && _jsxs("div", {
230
225
  className: `${baseClass}__no-results`,
231
226
  children: [_jsx("p", {
232
227
  children: i18n.t("general:noResults", {
@@ -248,7 +243,7 @@ export const DefaultListView = props => {
248
243
  })
249
244
  })
250
245
  })]
251
- }), AfterListTable, data.docs && data.docs.length > 0 && _jsxs("div", {
246
+ }), AfterListTable, docs.length > 0 && _jsxs("div", {
252
247
  className: `${baseClass}__page-controls`,
253
248
  children: [_jsx(Pagination, {
254
249
  hasNextPage: data.hasNextPage,
@@ -260,7 +255,7 @@ export const DefaultListView = props => {
260
255
  page: data.page,
261
256
  prevPage: data.prevPage,
262
257
  totalPages: data.totalPages
263
- }), data?.totalDocs > 0 && _jsxs(Fragment, {
258
+ }), data.totalDocs > 0 && _jsxs(Fragment, {
264
259
  children: [_jsxs("div", {
265
260
  className: `${baseClass}__page-info`,
266
261
  children: [data.page * data.limit - (data.limit - 1), "-", data.totalPages > 1 && data.totalPages !== data.page ? data.limit * data.page : data.totalDocs, " ", i18n.t("general:of"), " ", data.totalDocs]
@@ -296,10 +291,4 @@ export const DefaultListView = props => {
296
291
  })
297
292
  });
298
293
  };
299
- function _temp(doc) {
300
- return {
301
- ...doc,
302
- filesize: formatFilesize(doc.filesize)
303
- };
304
- }
305
294
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","LinkImport","useRouter","formatFilesize","isNumber","React","Fragment","useEffect","useState","useBulkUpload","Button","DeleteMany","EditMany","Gutter","ListControls","useListDrawerContext","ListSelection","useModal","Pagination","PerPage","PublishMany","RenderCustomComponent","StaggeredShimmers","useStepNav","RelationshipProvider","TableColumnsProvider","UnpublishMany","ViewDescription","useAuth","useConfig","useEditDepth","useListQuery","SelectionProvider","useServerFunctions","useTranslation","useWindowInfo","ListHeader","baseClass","Link","default","DefaultListView","props","$","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","enableRowSelections","hasCreatePermission","listPreferences","newDocumentURL","preferenceKey","renderedFilters","Table","InitialTable","setTable","createNewDrawerSlug","drawerSlug","listDrawerSlug","t0","t1","payloadServerAction","user","getEntityConfig","router","data","defaultLimit","initialLimit","handlePageChange","handlePerPageChange","query","openModal","setCollectionSlug","setOnSuccess","bulkUploadDrawerSlug","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isInDrawer","i18n","t","drawerDepth","setStepNav","breakpoints","t2","s","smallBreak","getNewConfig","languageCode","language","docs","map","_temp","t3","refresh","openBulkUpload","label","plural","t4","length","_jsx","children","className","_jsxs","totalDocs","CustomComponent","Fallback","description","admin","join","count","el","onClick","singular","to","hasNextPage","hasPrevPage","limit","nextPage","numberOfNeighbors","onChange","page","prevPage","totalPages","handleChange","Number","limits","pagination","resetPage","pagingCounter","collection","doc","filesize"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig, StaticDescription } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport LinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport { formatFilesize, isNumber } from 'payload/shared'\nimport React, { Fragment, useEffect, useState } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\nimport type { ListPreferences } from './types.js'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DeleteMany } from '../../elements/DeleteMany/index.js'\nimport { EditMany } from '../../elements/EditMany/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { ListSelection } from '../../elements/ListSelection/index.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { Pagination } from '../../elements/Pagination/index.js'\nimport { PerPage } from '../../elements/PerPage/index.js'\nimport { PublishMany } from '../../elements/PublishMany/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { StaggeredShimmers } from '../../elements/ShimmerEffect/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { TableColumnsProvider } from '../../elements/TableColumns/index.js'\nimport { UnpublishMany } from '../../elements/UnpublishMany/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport './index.scss'\nimport { ListHeader } from './ListHeader/index.js'\n\nconst baseClass = 'collection-list'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport type ListViewSlots = {\n AfterList?: React.ReactNode\n AfterListTable?: React.ReactNode\n BeforeList?: React.ReactNode\n BeforeListTable?: React.ReactNode\n Description?: React.ReactNode\n Table: React.ReactNode\n}\n\nexport type ListViewClientProps = {\n beforeActions?: React.ReactNode[]\n collectionSlug: string\n columnState: Column[]\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections?: boolean\n hasCreatePermission: boolean\n listPreferences?: ListPreferences\n newDocumentURL: string\n preferenceKey?: string\n renderedFilters?: Map<string, React.ReactNode>\n} & ListViewSlots\n\nexport const DefaultListView: React.FC<ListViewClientProps> = (props) => {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermission,\n listPreferences,\n newDocumentURL,\n preferenceKey,\n renderedFilters,\n Table: InitialTable,\n } = props\n\n const [Table, setTable] = useState(InitialTable)\n\n const { createNewDrawerSlug, drawerSlug: listDrawerSlug } = useListDrawerContext()\n\n useEffect(() => {\n if (InitialTable) {\n setTable(InitialTable)\n }\n }, [InitialTable])\n\n const payloadServerAction = useServerFunctions()\n\n const { user } = useAuth()\n\n const { getEntityConfig } = useConfig()\n const router = useRouter()\n\n const {\n data,\n defaultLimit: initialLimit,\n handlePageChange,\n handlePerPageChange,\n query,\n } = useListQuery()\n const { openModal } = useModal()\n const { setCollectionSlug, setOnSuccess } = useBulkUpload()\n const { drawerSlug: bulkUploadDrawerSlug } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isInDrawer = Boolean(listDrawerSlug)\n\n const { i18n, t } = useTranslation()\n\n const drawerDepth = useEditDepth()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n useEffect(() => {\n if (!collectionConfig) {\n const getNewConfig = async () => {\n // @ts-expect-error eslint-disable-next-line\n const res = (await payloadServerAction('render-config', {\n collectionSlug,\n languageCode: i18n.language,\n })) as any as ClientCollectionConfig\n }\n\n void getNewConfig()\n }\n }, [payloadServerAction, collectionConfig, collectionSlug, data, i18n])\n\n let docs = data.docs || []\n\n if (isUploadCollection) {\n docs = docs?.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n }\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadDrawerSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (drawerDepth <= 1) {\n setStepNav([\n {\n label: labels?.plural,\n },\n ])\n }\n }, [setStepNav, labels, drawerDepth])\n\n return (\n <Fragment>\n <TableColumnsProvider\n collectionSlug={collectionSlug}\n columnState={columnState}\n docs={data.docs}\n enableRowSelections={enableRowSelections}\n listPreferences={listPreferences}\n preferenceKey={preferenceKey}\n setTable={setTable}\n >\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={data.docs} totalDocs={data.totalDocs} user={user}>\n {BeforeList}\n <Gutter className={`${baseClass}__wrap`}>\n <ListHeader\n collectionConfig={collectionConfig}\n Description={\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription description={collectionConfig?.admin?.description} />\n }\n />\n </div>\n }\n hasCreatePermission={hasCreatePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n t={t}\n />\n <ListControls\n beforeActions={beforeActions}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n renderedFilters={renderedFilters}\n />\n {BeforeListTable}\n {!data.docs && (\n <StaggeredShimmers\n className={[`${baseClass}__shimmer`, `${baseClass}__shimmer--rows`].join(' ')}\n count={6}\n />\n )}\n {data.docs && data.docs.length > 0 && (\n <RelationshipProvider>{Table}</RelationshipProvider>\n )}\n {data.docs && data.docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', { label: getTranslation(labels?.plural, i18n) })}\n </p>\n {hasCreatePermission && newDocumentURL && (\n <Fragment>\n {isInDrawer ? (\n <Button el=\"button\" onClick={() => openModal(createNewDrawerSlug)}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" Link={Link} to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </Fragment>\n )}\n </div>\n )}\n {AfterListTable}\n {data.docs && data.docs.length > 0 && (\n <div className={`${baseClass}__page-controls`}>\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage}\n numberOfNeighbors={1}\n onChange={(page) => void handlePageChange(page)}\n page={data.page}\n prevPage={data.prevPage}\n totalPages={data.totalPages}\n />\n {data?.totalDocs > 0 && (\n <Fragment>\n <div className={`${baseClass}__page-info`}>\n {data.page * data.limit - (data.limit - 1)}-\n {data.totalPages > 1 && data.totalPages !== data.page\n ? data.limit * data.page\n : data.totalDocs}{' '}\n {i18n.t('general:of')} {data.totalDocs}\n </div>\n <PerPage\n handleChange={(limit) => void handlePerPageChange(limit)}\n limit={isNumber(query?.limit) ? Number(query.limit) : initialLimit}\n limits={collectionConfig?.admin?.pagination?.limits}\n resetPage={data.totalDocs <= data.pagingCounter}\n />\n {smallBreak && (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n label={getTranslation(collectionConfig.labels.plural, i18n)}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {beforeActions && beforeActions}\n {!disableBulkEdit && (\n <Fragment>\n <EditMany collection={collectionConfig} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n </Fragment>\n )}\n {!disableBulkDelete && <DeleteMany collection={collectionConfig} />}\n </div>\n </div>\n )}\n </Fragment>\n )}\n </div>\n )}\n </Gutter>\n {AfterList}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","LinkImport","useRouter","formatFilesize","isNumber","React","Fragment","useEffect","useState","useBulkUpload","Button","DeleteMany","EditMany","Gutter","ListControls","useListDrawerContext","ListSelection","useModal","Pagination","PerPage","PublishMany","RenderCustomComponent","useStepNav","RelationshipProvider","TableColumnsProvider","UnpublishMany","ViewDescription","useAuth","useConfig","useEditDepth","useListQuery","SelectionProvider","useTranslation","useWindowInfo","ListHeader","baseClass","Link","default","DefaultListView","props","$","AfterList","AfterListTable","beforeActions","BeforeList","BeforeListTable","collectionSlug","columnState","Description","disableBulkDelete","disableBulkEdit","enableRowSelections","hasCreatePermission","listPreferences","newDocumentURL","preferenceKey","renderedFilters","Table","InitialTable","setTable","createNewDrawerSlug","drawerSlug","listDrawerSlug","t0","t1","user","getEntityConfig","router","data","defaultLimit","initialLimit","handlePageChange","handlePerPageChange","query","openModal","setCollectionSlug","setOnSuccess","bulkUploadDrawerSlug","collectionConfig","labels","upload","isUploadCollection","Boolean","isBulkUploadEnabled","bulkUpload","isInDrawer","i18n","t","drawerDepth","setStepNav","breakpoints","t2","s","smallBreak","t3","t4","docs","t5","Symbol","for","doc","filesize","map","refresh","openBulkUpload","label","plural","_jsx","children","className","_jsxs","totalDocs","CustomComponent","Fallback","description","admin","length","el","onClick","singular","to","hasNextPage","hasPrevPage","limit","nextPage","numberOfNeighbors","onChange","page","prevPage","totalPages","handleChange","Number","limits","pagination","resetPage","pagingCounter","collection"],"sources":["../../../src/views/List/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport LinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport { formatFilesize, isNumber } from 'payload/shared'\nimport React, { Fragment, useEffect, useState } from 'react'\n\nimport type { Column } from '../../elements/Table/index.js'\nimport type { ListPreferences } from './types.js'\n\nimport { useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DeleteMany } from '../../elements/DeleteMany/index.js'\nimport { EditMany } from '../../elements/EditMany/index.js'\nimport { Gutter } from '../../elements/Gutter/index.js'\nimport { ListControls } from '../../elements/ListControls/index.js'\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { ListSelection } from '../../elements/ListSelection/index.js'\nimport { useModal } from '../../elements/Modal/index.js'\nimport { Pagination } from '../../elements/Pagination/index.js'\nimport { PerPage } from '../../elements/PerPage/index.js'\nimport { PublishMany } from '../../elements/PublishMany/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useStepNav } from '../../elements/StepNav/index.js'\nimport { RelationshipProvider } from '../../elements/Table/RelationshipProvider/index.js'\nimport { TableColumnsProvider } from '../../elements/TableColumns/index.js'\nimport { UnpublishMany } from '../../elements/UnpublishMany/index.js'\nimport { ViewDescription } from '../../elements/ViewDescription/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { SelectionProvider } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useWindowInfo } from '../../providers/WindowInfo/index.js'\nimport './index.scss'\nimport { ListHeader } from './ListHeader/index.js'\n\nconst baseClass = 'collection-list'\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\nexport type ListViewSlots = {\n AfterList?: React.ReactNode\n AfterListTable?: React.ReactNode\n BeforeList?: React.ReactNode\n BeforeListTable?: React.ReactNode\n Description?: React.ReactNode\n Table: React.ReactNode\n}\n\nexport type ListViewClientProps = {\n beforeActions?: React.ReactNode[]\n collectionSlug: string\n columnState: Column[]\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n enableRowSelections?: boolean\n hasCreatePermission: boolean\n listPreferences?: ListPreferences\n newDocumentURL: string\n preferenceKey?: string\n renderedFilters?: Map<string, React.ReactNode>\n} & ListViewSlots\n\nexport const DefaultListView: React.FC<ListViewClientProps> = (props) => {\n const {\n AfterList,\n AfterListTable,\n beforeActions,\n BeforeList,\n BeforeListTable,\n collectionSlug,\n columnState,\n Description,\n disableBulkDelete,\n disableBulkEdit,\n enableRowSelections,\n hasCreatePermission,\n listPreferences,\n newDocumentURL,\n preferenceKey,\n renderedFilters,\n Table: InitialTable,\n } = props\n\n const [Table, setTable] = useState(InitialTable)\n\n const { createNewDrawerSlug, drawerSlug: listDrawerSlug } = useListDrawerContext()\n\n useEffect(() => {\n if (InitialTable) {\n setTable(InitialTable)\n }\n }, [InitialTable])\n\n const { user } = useAuth()\n\n const { getEntityConfig } = useConfig()\n const router = useRouter()\n\n const {\n data,\n defaultLimit: initialLimit,\n handlePageChange,\n handlePerPageChange,\n query,\n } = useListQuery()\n const { openModal } = useModal()\n const { setCollectionSlug, setOnSuccess } = useBulkUpload()\n const { drawerSlug: bulkUploadDrawerSlug } = useBulkUpload()\n\n const collectionConfig = getEntityConfig({ collectionSlug }) as ClientCollectionConfig\n\n const { labels, upload } = collectionConfig\n\n const isUploadCollection = Boolean(upload)\n\n const isBulkUploadEnabled = isUploadCollection && collectionConfig.upload.bulkUpload\n\n const isInDrawer = Boolean(listDrawerSlug)\n\n const { i18n, t } = useTranslation()\n\n const drawerDepth = useEditDepth()\n\n const { setStepNav } = useStepNav()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const docs = React.useMemo(() => {\n if (isUploadCollection) {\n return data.docs.map((doc) => {\n return {\n ...doc,\n filesize: formatFilesize(doc.filesize),\n }\n })\n } else {\n return data.docs\n }\n }, [data.docs, isUploadCollection])\n\n const openBulkUpload = React.useCallback(() => {\n setCollectionSlug(collectionSlug)\n openModal(bulkUploadDrawerSlug)\n setOnSuccess(() => router.refresh())\n }, [router, collectionSlug, bulkUploadDrawerSlug, openModal, setCollectionSlug, setOnSuccess])\n\n useEffect(() => {\n if (drawerDepth <= 1) {\n setStepNav([\n {\n label: labels?.plural,\n },\n ])\n }\n }, [setStepNav, labels, drawerDepth])\n\n return (\n <Fragment>\n <TableColumnsProvider\n collectionSlug={collectionSlug}\n columnState={columnState}\n docs={docs}\n enableRowSelections={enableRowSelections}\n listPreferences={listPreferences}\n preferenceKey={preferenceKey}\n setTable={setTable}\n >\n <div className={`${baseClass} ${baseClass}--${collectionSlug}`}>\n <SelectionProvider docs={docs} totalDocs={data.totalDocs} user={user}>\n {BeforeList}\n <Gutter className={`${baseClass}__wrap`}>\n <ListHeader\n collectionConfig={collectionConfig}\n Description={\n <div className={`${baseClass}__sub-header`}>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <ViewDescription description={collectionConfig?.admin?.description} />\n }\n />\n </div>\n }\n hasCreatePermission={hasCreatePermission}\n i18n={i18n}\n isBulkUploadEnabled={isBulkUploadEnabled}\n newDocumentURL={newDocumentURL}\n openBulkUpload={openBulkUpload}\n smallBreak={smallBreak}\n t={t}\n />\n <ListControls\n beforeActions={beforeActions}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n disableBulkDelete={disableBulkDelete}\n disableBulkEdit={disableBulkEdit}\n renderedFilters={renderedFilters}\n />\n {BeforeListTable}\n {docs.length > 0 && <RelationshipProvider>{Table}</RelationshipProvider>}\n {docs.length === 0 && (\n <div className={`${baseClass}__no-results`}>\n <p>\n {i18n.t('general:noResults', { label: getTranslation(labels?.plural, i18n) })}\n </p>\n {hasCreatePermission && newDocumentURL && (\n <Fragment>\n {isInDrawer ? (\n <Button el=\"button\" onClick={() => openModal(createNewDrawerSlug)}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n ) : (\n <Button el=\"link\" Link={Link} to={newDocumentURL}>\n {i18n.t('general:createNewLabel', {\n label: getTranslation(labels?.singular, i18n),\n })}\n </Button>\n )}\n </Fragment>\n )}\n </div>\n )}\n {AfterListTable}\n {docs.length > 0 && (\n <div className={`${baseClass}__page-controls`}>\n <Pagination\n hasNextPage={data.hasNextPage}\n hasPrevPage={data.hasPrevPage}\n limit={data.limit}\n nextPage={data.nextPage}\n numberOfNeighbors={1}\n onChange={(page) => void handlePageChange(page)}\n page={data.page}\n prevPage={data.prevPage}\n totalPages={data.totalPages}\n />\n {data.totalDocs > 0 && (\n <Fragment>\n <div className={`${baseClass}__page-info`}>\n {data.page * data.limit - (data.limit - 1)}-\n {data.totalPages > 1 && data.totalPages !== data.page\n ? data.limit * data.page\n : data.totalDocs}{' '}\n {i18n.t('general:of')} {data.totalDocs}\n </div>\n <PerPage\n handleChange={(limit) => void handlePerPageChange(limit)}\n limit={isNumber(query?.limit) ? Number(query.limit) : initialLimit}\n limits={collectionConfig?.admin?.pagination?.limits}\n resetPage={data.totalDocs <= data.pagingCounter}\n />\n {smallBreak && (\n <div className={`${baseClass}__list-selection`}>\n <ListSelection\n label={getTranslation(collectionConfig.labels.plural, i18n)}\n />\n <div className={`${baseClass}__list-selection-actions`}>\n {beforeActions && beforeActions}\n {!disableBulkEdit && (\n <Fragment>\n <EditMany collection={collectionConfig} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n </Fragment>\n )}\n {!disableBulkDelete && <DeleteMany collection={collectionConfig} />}\n </div>\n </div>\n )}\n </Fragment>\n )}\n </div>\n )}\n </Gutter>\n {AfterList}\n </SelectionProvider>\n </div>\n </TableColumnsProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}