@payloadcms/ui 3.69.0-internal.424436e → 3.69.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AppHeader/index.js +1 -2
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/AppHeader/index.scss +0 -1
- package/dist/elements/ArrayAction/index.d.ts +6 -6
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +8 -8
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +20 -5
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +36 -39
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +1 -2
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +9 -7
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +19 -16
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +2 -4
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +4 -6
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +8 -12
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +1 -1
- package/dist/elements/FolderView/BrowseByFolderButton/index.js +2 -4
- package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
- package/dist/elements/FolderView/Cell/index.client.js +9 -2
- package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
- package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
- package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
- package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
- package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +11 -14
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
- package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
- package/dist/elements/ItemsDrawer/index.d.ts +15 -0
- package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
- package/dist/elements/ItemsDrawer/index.js +195 -0
- package/dist/elements/ItemsDrawer/index.js.map +1 -0
- package/dist/elements/ItemsDrawer/index.scss +102 -0
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +5 -3
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +6 -4
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +8 -11
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.js +19 -14
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
- package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
- package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js +24 -92
- package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
- package/dist/elements/Popup/index.d.ts +32 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +249 -122
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/index.scss +49 -231
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +14 -4
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +8 -5
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +7 -9
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts.map +1 -1
- package/dist/elements/RestoreButton/index.js +19 -14
- package/dist/elements/RestoreButton/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.d.ts.map +1 -1
- package/dist/elements/RestoreMany/index.js +17 -14
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +11 -5
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +11 -5
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +17 -20
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/context.d.ts.map +1 -1
- package/dist/elements/StepNav/context.js +9 -1
- package/dist/elements/StepNav/context.js.map +1 -1
- package/dist/elements/StepNav/index.scss +0 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +9 -12
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +5 -1
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +25 -24
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +7 -5
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/withMergedProps/index.d.ts +1 -1
- package/dist/elements/withMergedProps/index.js +1 -1
- package/dist/elements/withMergedProps/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +1 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +12 -12
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +1 -0
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +1 -0
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.d.ts +3 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts +7 -18
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +133 -65
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +3 -10
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +9 -3
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +7 -3
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
- package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +2 -4
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +23 -26
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +16 -15
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/Folders/index.d.ts.map +1 -1
- package/dist/providers/Folders/index.js +14 -11
- package/dist/providers/Folders/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +45 -34
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +16 -7
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +6 -1
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +1 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/scss/app.scss +14 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/getGlobalData.d.ts +11 -0
- package/dist/utilities/getGlobalData.d.ts.map +1 -0
- package/dist/utilities/getGlobalData.js +49 -0
- package/dist/utilities/getGlobalData.js.map +1 -0
- package/dist/utilities/getNavGroups.d.ts +5 -0
- package/dist/utilities/getNavGroups.d.ts.map +1 -0
- package/dist/utilities/getNavGroups.js +22 -0
- package/dist/utilities/getNavGroups.js.map +1 -0
- package/dist/utilities/getVisibleEntities.d.ts +5 -0
- package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
- package/dist/utilities/getVisibleEntities.js +31 -0
- package/dist/utilities/getVisibleEntities.js.map +1 -0
- package/dist/utilities/groupNavItems.d.ts +3 -0
- package/dist/utilities/groupNavItems.d.ts.map +1 -1
- package/dist/utilities/groupNavItems.js +3 -0
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/dist/utilities/handleBackToDashboard.js +1 -1
- package/dist/utilities/handleBackToDashboard.js.map +1 -1
- package/dist/utilities/handleGoBack.d.ts.map +1 -1
- package/dist/utilities/handleGoBack.js +1 -2
- package/dist/utilities/handleGoBack.js.map +1 -1
- package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
- package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
- package/dist/views/CollectionFolder/index.js +2 -4
- package/dist/views/CollectionFolder/index.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +22 -21
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js +36 -22
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +2 -3
- 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 +1 -2
- package/dist/views/List/index.js.map +1 -1
- package/dist/widgets/CollectionCards/index.d.ts +5 -0
- package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
- package/dist/widgets/CollectionCards/index.js +135 -0
- package/dist/widgets/CollectionCards/index.js.map +1 -0
- package/dist/widgets/CollectionCards/index.scss +70 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldSchemasToFormState.spec.js","names":["
|
|
1
|
+
{"version":3,"file":"fieldSchemasToFormState.spec.js","names":["describe","it","expect","fieldSchemasToFormState","defaultValue","fieldSchema","name","type","label","state","req","fields","text","value","toBe","data","user","email","locale","args"],"sources":["../../../src/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { fieldSchemasToFormState } from './index.js'\n\ndescribe('Form - fieldSchemasToFormState', () => {\n const defaultValue = 'Default'\n it('populates default value - normal fields', async () => {\n const fieldSchema = [\n {\n name: 'text',\n type: 'text',\n defaultValue,\n label: 'Text',\n },\n ]\n const state = await fieldSchemasToFormState({ req: {}, fields: fieldSchema })\n expect(state.text.value).toBe(defaultValue)\n })\n it('field value overrides defaultValue - normal fields', async () => {\n const value = 'value'\n const data = { text: value }\n const fieldSchema = [\n {\n name: 'text',\n type: 'text',\n defaultValue,\n label: 'Text',\n },\n ]\n const state = await fieldSchemasToFormState({ req: {}, data, fields: fieldSchema })\n expect(state.text.value).toBe(value)\n })\n it('populates default value from a function - normal fields', async () => {\n const user = { email: 'user@example.com' }\n const locale = 'en'\n const fieldSchema = [\n {\n name: 'text',\n type: 'text',\n defaultValue: (args) => {\n if (!args.locale) {\n return 'missing locale'\n }\n if (!args.user) {\n return 'missing user'\n }\n return 'Default'\n },\n label: 'Text',\n },\n ]\n const state = await fieldSchemasToFormState({\n req: { locale: 'en', user: {} },\n fields: fieldSchema,\n locale,\n user,\n })\n expect(state.text.value).toBe(defaultValue)\n })\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,QAAQ;AACrC,SAASC,uBAAuB,QAAQ;AAExCH,QAAA,CAAS,kCAAkC;EACzC,MAAMI,YAAA,GAAe;EACrBH,EAAA,CAAG,2CAA2C;IAC5C,MAAMI,WAAA,GAAc,CAClB;MACEC,IAAA,EAAM;MACNC,IAAA,EAAM;MACNH,YAAA;MACAI,KAAA,EAAO;IACT,EACD;IACD,MAAMC,KAAA,GAAQ,MAAMN,uBAAA,CAAwB;MAAEO,GAAA,EAAK,CAAC;MAAGC,MAAA,EAAQN;IAAY;IAC3EH,MAAA,CAAOO,KAAA,CAAMG,IAAI,CAACC,KAAK,EAAEC,IAAI,CAACV,YAAA;EAChC;EACAH,EAAA,CAAG,sDAAsD;IACvD,MAAMY,KAAA,GAAQ;IACd,MAAME,IAAA,GAAO;MAAEH,IAAA,EAAMC;IAAM;IAC3B,MAAMR,WAAA,GAAc,CAClB;MACEC,IAAA,EAAM;MACNC,IAAA,EAAM;MACNH,YAAA;MACAI,KAAA,EAAO;IACT,EACD;IACD,MAAMC,KAAA,GAAQ,MAAMN,uBAAA,CAAwB;MAAEO,GAAA,EAAK,CAAC;MAAGK,IAAA;MAAMJ,MAAA,EAAQN;IAAY;IACjFH,MAAA,CAAOO,KAAA,CAAMG,IAAI,CAACC,KAAK,EAAEC,IAAI,CAACD,KAAA;EAChC;EACAZ,EAAA,CAAG,2DAA2D;IAC5D,MAAMe,IAAA,GAAO;MAAEC,KAAA,EAAO;IAAmB;IACzC,MAAMC,MAAA,GAAS;IACf,MAAMb,WAAA,GAAc,CAClB;MACEC,IAAA,EAAM;MACNC,IAAA,EAAM;MACNH,YAAA,EAAee,IAAA;QACb,IAAI,CAACA,IAAA,CAAKD,MAAM,EAAE;UAChB,OAAO;QACT;QACA,IAAI,CAACC,IAAA,CAAKH,IAAI,EAAE;UACd,OAAO;QACT;QACA,OAAO;MACT;MACAR,KAAA,EAAO;IACT,EACD;IACD,MAAMC,KAAA,GAAQ,MAAMN,uBAAA,CAAwB;MAC1CO,GAAA,EAAK;QAAEQ,MAAA,EAAQ;QAAMF,IAAA,EAAM,CAAC;MAAE;MAC9BL,MAAA,EAAQN,WAAA;MACRa,MAAA;MACAF;IACF;IACAd,MAAA,CAAOO,KAAA,CAAMG,IAAI,CAACC,KAAK,EAAEC,IAAI,CAACV,YAAA;EAChC;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphics/Account/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/graphics/Account/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,OAAO,yBAqBnB,CAAA"}
|
|
@@ -16,8 +16,7 @@ export const Account = () => {
|
|
|
16
16
|
} = useConfig();
|
|
17
17
|
const {
|
|
18
18
|
admin: t1,
|
|
19
|
-
routes: t2
|
|
20
|
-
serverURL
|
|
19
|
+
routes: t2
|
|
21
20
|
} = t0;
|
|
22
21
|
const {
|
|
23
22
|
avatar,
|
|
@@ -35,8 +34,7 @@ export const Account = () => {
|
|
|
35
34
|
const pathname = usePathname();
|
|
36
35
|
const isOnAccountPage = pathname === formatAdminURL({
|
|
37
36
|
adminRoute,
|
|
38
|
-
path: accountRoute
|
|
39
|
-
serverURL
|
|
37
|
+
path: accountRoute
|
|
40
38
|
});
|
|
41
39
|
if (!user?.email || avatar === "default") {
|
|
42
40
|
let t4;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","usePathname","formatAdminURL","React","useAuth","useConfig","DefaultAccountIcon","GravatarAccountIcon","Account","$","config","t0","admin","t1","routes","t2","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","usePathname","formatAdminURL","React","useAuth","useConfig","DefaultAccountIcon","GravatarAccountIcon","Account","$","config","t0","admin","t1","routes","t2","avatar","t3","account","accountRoute","adminRoute","user","pathname","isOnAccountPage","path","email","t4","_jsx","active","Symbol","for"],"sources":["../../../src/graphics/Account/index.tsx"],"sourcesContent":["'use client'\nimport { usePathname } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DefaultAccountIcon } from './Default/index.js'\nimport { GravatarAccountIcon } from './Gravatar/index.js'\n\nexport const Account = () => {\n const {\n config: {\n admin: {\n avatar,\n routes: { account: accountRoute },\n },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { user } = useAuth()\n const pathname = usePathname()\n const isOnAccountPage = pathname === formatAdminURL({ adminRoute, path: accountRoute })\n\n if (!user?.email || avatar === 'default') {\n return <DefaultAccountIcon active={isOnAccountPage} />\n }\n if (avatar === 'gravatar') {\n return <GravatarAccountIcon />\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AAEpC,OAAO,MAAMC,OAAA,GAAUA,CAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACrB;IAAAU,MAAA,EAAAC;EAAA,IAQIN,SAAA;EAPM;IAAAO,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAJ,EAMP;EALQ;IAAAK,MAAA;IAAAF,MAAA,EAAAG;EAAA,IAAAJ,EAGN;EADS;IAAAK,OAAA,EAAAC;EAAA,IAAAF,EAAyB;EAE3B;IAAAL,KAAA,EAAAQ;EAAA,IAAAL,EAAqB;EAIjC;IAAAM;EAAA,IAAiBjB,OAAA;EACjB,MAAAkB,QAAA,GAAiBrB,WAAA;EACjB,MAAAsB,eAAA,GAAwBD,QAAA,KAAapB,cAAA;IAAAkB,UAAA;IAAAI,IAAA,EAAmCL;EAAA,CAAa;EAAA,IAEjF,CAACE,IAAA,EAAAI,KAAA,IAAeT,MAAA,KAAW;IAAA,IAAAU,EAAA;IAAA,IAAAjB,CAAA,QAAAc,eAAA;MACtBG,EAAA,GAAAC,IAAA,CAAArB,kBAAA;QAAAsB,MAAA,EAA4BL;MAAA,C;;;;;;WAA5BG,E;;MAELV,MAAA,KAAW;IAAA,IAAAU,EAAA;IAAA,IAAAjB,CAAA,QAAAoB,MAAA,CAAAC,GAAA;MACNJ,EAAA,GAAAC,IAAA,CAAApB,mBAAA,IAAC;MAAAE,CAAA,MAAAiB,EAAA;IAAA;MAAAA,EAAA,GAAAjB,CAAA;IAAA;IAAA,OAADiB,EAAC;EAAA;AAAA,CAEZ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAM1E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAM1E,OAAO,KAA+D,MAAM,OAAO,CAAA;AAUnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAgUP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAAmC,CAAA"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import { useModal } from '@faceless-ui/modal';
|
|
5
5
|
import { usePathname, useRouter } from 'next/navigation.js';
|
|
6
|
-
import { formatAdminURL
|
|
6
|
+
import { formatAdminURL } from 'payload/shared';
|
|
7
7
|
import * as qs from 'qs-esm';
|
|
8
8
|
import React, { createContext, use, useCallback, useEffect, useState } from 'react';
|
|
9
9
|
import { toast } from 'sonner';
|
|
@@ -37,8 +37,7 @@ export function AuthProvider({
|
|
|
37
37
|
routes: {
|
|
38
38
|
admin: adminRoute,
|
|
39
39
|
api: apiRoute
|
|
40
|
-
}
|
|
41
|
-
serverURL
|
|
40
|
+
}
|
|
42
41
|
} = config;
|
|
43
42
|
const {
|
|
44
43
|
i18n
|
|
@@ -61,13 +60,16 @@ export function AuthProvider({
|
|
|
61
60
|
const forceLogOutTimeoutRef = React.useRef(null);
|
|
62
61
|
const id = user?.id;
|
|
63
62
|
const redirectToInactivityRoute = useCallback(() => {
|
|
63
|
+
const baseAdminRoute = formatAdminURL({
|
|
64
|
+
adminRoute,
|
|
65
|
+
path: ''
|
|
66
|
+
});
|
|
64
67
|
startRouteTransition(() => router.replace(formatAdminURL({
|
|
65
68
|
adminRoute,
|
|
66
|
-
path: `${logoutInactivityRoute}${window.location.pathname.startsWith(
|
|
67
|
-
serverURL
|
|
69
|
+
path: `${logoutInactivityRoute}${window.location.pathname.startsWith(baseAdminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`
|
|
68
70
|
})));
|
|
69
71
|
closeAllModals();
|
|
70
|
-
}, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition
|
|
72
|
+
}, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition]);
|
|
71
73
|
const revokeTokenAndExpire = useCallback(() => {
|
|
72
74
|
setUserInMemory(null);
|
|
73
75
|
setTokenInMemory(undefined);
|
|
@@ -112,10 +114,9 @@ export function AuthProvider({
|
|
|
112
114
|
clearTimeout(refreshTokenTimeoutRef.current);
|
|
113
115
|
refreshTokenTimeoutRef.current = setTimeout(async () => {
|
|
114
116
|
try {
|
|
115
|
-
const request = await requests.post(
|
|
117
|
+
const request = await requests.post(formatAdminURL({
|
|
116
118
|
apiRoute,
|
|
117
|
-
path: `/${userSlug}/refresh-token?refresh
|
|
118
|
-
serverURL
|
|
119
|
+
path: `/${userSlug}/refresh-token?refresh`
|
|
119
120
|
}), {
|
|
120
121
|
headers: {
|
|
121
122
|
'Accept-Language': i18n.language
|
|
@@ -133,13 +134,12 @@ export function AuthProvider({
|
|
|
133
134
|
}
|
|
134
135
|
}, 1000);
|
|
135
136
|
}
|
|
136
|
-
}, [apiRoute, i18n.language, redirectToInactivityRoute,
|
|
137
|
+
}, [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, tokenExpirationMs, userSlug, forceLogoutBufferMs, id]);
|
|
137
138
|
const refreshCookieAsync = useCallback(async skipSetUser => {
|
|
138
139
|
try {
|
|
139
|
-
const request_0 = await requests.post(
|
|
140
|
+
const request_0 = await requests.post(formatAdminURL({
|
|
140
141
|
apiRoute,
|
|
141
|
-
path: `/${userSlug}/refresh-token
|
|
142
|
-
serverURL
|
|
142
|
+
path: `/${userSlug}/refresh-token`
|
|
143
143
|
}), {
|
|
144
144
|
headers: {
|
|
145
145
|
'Accept-Language': i18n.language
|
|
@@ -160,22 +160,21 @@ export function AuthProvider({
|
|
|
160
160
|
toast.error(`Refreshing token failed: ${e_0.message}`);
|
|
161
161
|
}
|
|
162
162
|
return null;
|
|
163
|
-
}, [apiRoute, i18n.language, redirectToInactivityRoute,
|
|
163
|
+
}, [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, userSlug, user]);
|
|
164
164
|
const logOut = useCallback(async () => {
|
|
165
165
|
try {
|
|
166
166
|
if (user && user.collection) {
|
|
167
167
|
setNewUser(null);
|
|
168
|
-
await requests.post(
|
|
168
|
+
await requests.post(formatAdminURL({
|
|
169
169
|
apiRoute,
|
|
170
|
-
path: `/${user.collection}/logout
|
|
171
|
-
serverURL
|
|
170
|
+
path: `/${user.collection}/logout`
|
|
172
171
|
}));
|
|
173
172
|
}
|
|
174
173
|
} catch (_) {
|
|
175
174
|
// fail silently and log the user out in state
|
|
176
175
|
}
|
|
177
176
|
return true;
|
|
178
|
-
}, [apiRoute,
|
|
177
|
+
}, [apiRoute, setNewUser, user]);
|
|
179
178
|
const refreshPermissions = useCallback(async ({
|
|
180
179
|
locale
|
|
181
180
|
} = {}) => {
|
|
@@ -185,10 +184,9 @@ export function AuthProvider({
|
|
|
185
184
|
addQueryPrefix: true
|
|
186
185
|
});
|
|
187
186
|
try {
|
|
188
|
-
const request_1 = await requests.get(
|
|
187
|
+
const request_1 = await requests.get(formatAdminURL({
|
|
189
188
|
apiRoute,
|
|
190
|
-
path: `/access${params}
|
|
191
|
-
serverURL
|
|
189
|
+
path: `/access${params}`
|
|
192
190
|
}), {
|
|
193
191
|
headers: {
|
|
194
192
|
'Accept-Language': i18n.language
|
|
@@ -203,13 +201,12 @@ export function AuthProvider({
|
|
|
203
201
|
} catch (e_1) {
|
|
204
202
|
toast.error(`Refreshing permissions failed: ${e_1.message}`);
|
|
205
203
|
}
|
|
206
|
-
}, [
|
|
204
|
+
}, [apiRoute, i18n]);
|
|
207
205
|
const fetchFullUser = React.useCallback(async () => {
|
|
208
206
|
try {
|
|
209
|
-
const request_2 = await requests.get(
|
|
207
|
+
const request_2 = await requests.get(formatAdminURL({
|
|
210
208
|
apiRoute,
|
|
211
|
-
path: `/${userSlug}/me
|
|
212
|
-
serverURL
|
|
209
|
+
path: `/${userSlug}/me`
|
|
213
210
|
}), {
|
|
214
211
|
credentials: 'include',
|
|
215
212
|
headers: {
|
|
@@ -225,7 +222,7 @@ export function AuthProvider({
|
|
|
225
222
|
toast.error(`Fetching user failed: ${e_2.message}`);
|
|
226
223
|
}
|
|
227
224
|
return null;
|
|
228
|
-
}, [
|
|
225
|
+
}, [apiRoute, userSlug, i18n.language, setNewUser]);
|
|
229
226
|
const refreshCookieEvent = useEffectEvent(refreshCookie);
|
|
230
227
|
useEffect(() => {
|
|
231
228
|
// when location changes, refresh cookie
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","formatApiURL","qs","React","createContext","use","useCallback","useEffect","useState","toast","stayLoggedInModalSlug","useEffectEvent","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutMs","AuthProvider","children","permissions","initialPermissions","user","initialUser","pathname","router","config","admin","autoLogin","autoRefresh","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","i18n","closeAllModals","openModal","startRouteTransition","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpirationMs","setTokenExpirationMs","setPermissions","forceLogoutBufferMs","setForceLogoutBufferMs","fetchedUserOnMount","setFetchedUserOnMount","refreshTokenTimeoutRef","useRef","reminderTimeoutRef","forceLogOutTimeoutRef","id","redirectToInactivityRoute","replace","path","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","handleReminderTimeout","refreshCookieEvent","setNewUser","userResponse","token","exp","expiresInMs","Math","max","min","Date","now","nextForceLogoutBufferMs","setTimeout","refreshCookie","forceRefresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","_","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","fetchFullUserEvent","fetchUserOnMount","prefillOnly","_jsx","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, TypedUser } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL, formatApiURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n /** seconds until expiration */\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | TypedUser>\n logOut: () => Promise<boolean>\n /**\n * These are the permissions for the current user from a global scope.\n *\n * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.\n *\n * @example\n *\n * ```tsx\n * import { useAuth } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { permissions } = useAuth()\n *\n * if (permissions?.collections?.myCollection?.create) {\n * // user can create documents in 'myCollection'\n * }\n *\n * return null\n * }\n * ```\n *\n * with useDocumentInfo:\n *\n * ```tsx\n * import { useDocumentInfo } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { docPermissions } = useDocumentInfo()\n * if (docPermissions?.create) {\n * // user can create this document\n * }\n * return null\n * } ```\n */\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpirationMs?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutMs = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n autoLogin,\n autoRefresh,\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const { startRouteTransition } = useRouteTransition()\n\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpirationMs, setTokenExpirationMs] = useState<number>()\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState<number>(120_000)\n const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false)\n\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const reminderTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const forceLogOutTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(adminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n serverURL,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition, serverURL])\n\n const revokeTokenAndExpire = useCallback(() => {\n setUserInMemory(null)\n setTokenInMemory(undefined)\n setTokenExpirationMs(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value\n const handleReminderTimeout = useEffectEvent(() => {\n if (autoRefresh) {\n refreshCookieEvent()\n } else {\n openModal(stayLoggedInModalSlug)\n }\n })\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpirationMs(userResponse.exp * 1000)\n\n const expiresInMs = Math.max(\n 0,\n Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs),\n )\n\n if (expiresInMs) {\n const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2)\n setForceLogoutBufferMs(nextForceLogoutBufferMs)\n\n reminderTimeoutRef.current = setTimeout(\n handleReminderTimeout,\n Math.max(expiresInMs - nextForceLogoutBufferMs, 0),\n )\n\n forceLogOutTimeoutRef.current = setTimeout(() => {\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n }, expiresInMs)\n }\n } else {\n revokeTokenAndExpire()\n }\n },\n [redirectToInactivityRoute, revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n if (!id) {\n return\n }\n\n const expiresInMs = Math.max(0, (tokenExpirationMs ?? 0) - Date.now())\n\n if (forceRefresh || (tokenExpirationMs && expiresInMs < forceLogoutBufferMs * 2)) {\n clearTimeout(refreshTokenTimeoutRef.current)\n refreshTokenTimeoutRef.current = setTimeout(async () => {\n try {\n const request = await requests.post(\n formatApiURL({\n apiRoute,\n path: `/${userSlug}/refresh-token?refresh`,\n serverURL,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpirationMs,\n userSlug,\n forceLogoutBufferMs,\n id,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(\n formatApiURL({\n apiRoute,\n path: `/${userSlug}/refresh-token`,\n serverURL,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n if (user) {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n }\n return null\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug, user],\n )\n\n const logOut = useCallback(async () => {\n try {\n if (user && user.collection) {\n setNewUser(null)\n await requests.post(\n formatApiURL({\n apiRoute,\n path: `/${user.collection}/logout`,\n serverURL,\n }),\n )\n }\n } catch (_) {\n // fail silently and log the user out in state\n }\n\n return true\n }, [apiRoute, serverURL, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(\n formatApiURL({\n apiRoute,\n path: `/access${params}`,\n serverURL,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: SanitizedPermissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(\n formatApiURL({\n apiRoute,\n path: `/${userSlug}/me`,\n serverURL,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n return json?.user || null\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n const refreshCookieEvent = useEffectEvent(refreshCookie)\n useEffect(() => {\n // when location changes, refresh cookie\n refreshCookieEvent()\n }, [pathname])\n\n const fetchFullUserEvent = useEffectEvent(fetchFullUser)\n useEffect(() => {\n async function fetchUserOnMount() {\n await fetchFullUserEvent()\n setFetchedUserOnMount(true)\n }\n\n void fetchUserOnMount()\n }, [])\n\n useEffect(() => {\n if (!user && autoLogin && !autoLogin.prefillOnly) {\n void fetchFullUserEvent()\n }\n }, [user, autoLogin])\n\n useEffect(\n () => () => {\n // remove all timeouts on unmount\n clearTimeout(refreshTokenTimeoutRef.current)\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n },\n [],\n )\n\n if (!user && !fetchedUserOnMount) {\n return null\n }\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n tokenExpirationMs,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useState","toast","stayLoggedInModalSlug","useEffectEvent","useTranslation","requests","useConfig","useRouteTransition","Context","maxTimeoutMs","AuthProvider","children","permissions","initialPermissions","user","initialUser","pathname","router","config","admin","autoLogin","autoRefresh","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","i18n","closeAllModals","openModal","startRouteTransition","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpirationMs","setTokenExpirationMs","setPermissions","forceLogoutBufferMs","setForceLogoutBufferMs","fetchedUserOnMount","setFetchedUserOnMount","refreshTokenTimeoutRef","useRef","reminderTimeoutRef","forceLogOutTimeoutRef","id","redirectToInactivityRoute","baseAdminRoute","path","replace","window","location","startsWith","encodeURIComponent","revokeTokenAndExpire","undefined","clearTimeout","current","handleReminderTimeout","refreshCookieEvent","setNewUser","userResponse","token","exp","expiresInMs","Math","max","min","Date","now","nextForceLogoutBufferMs","setTimeout","refreshCookie","forceRefresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","collection","_","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","fetchFullUserEvent","fetchUserOnMount","prefillOnly","_jsx","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, SanitizedPermissions, TypedUser } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n /** seconds until expiration */\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | TypedUser>\n logOut: () => Promise<boolean>\n /**\n * These are the permissions for the current user from a global scope.\n *\n * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.\n *\n * @example\n *\n * ```tsx\n * import { useAuth } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { permissions } = useAuth()\n *\n * if (permissions?.collections?.myCollection?.create) {\n * // user can create documents in 'myCollection'\n * }\n *\n * return null\n * }\n * ```\n *\n * with useDocumentInfo:\n *\n * ```tsx\n * import { useDocumentInfo } from 'payload/ui'\n *\n * const MyComponent: React.FC = () => {\n * const { docPermissions } = useDocumentInfo()\n * if (docPermissions?.create) {\n * // user can create this document\n * }\n * return null\n * } ```\n */\n permissions?: SanitizedPermissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: SanitizedPermissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpirationMs?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutMs = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: SanitizedPermissions\n user?: ClientUser | null\n}\n\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n autoLogin,\n autoRefresh,\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n } = config\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const { startRouteTransition } = useRouteTransition()\n\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpirationMs, setTokenExpirationMs] = useState<number>()\n const [permissions, setPermissions] = useState<SanitizedPermissions>(initialPermissions)\n const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState<number>(120_000)\n const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false)\n\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const reminderTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n const forceLogOutTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n const baseAdminRoute = formatAdminURL({ adminRoute, path: '' })\n startRouteTransition(() =>\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${window.location.pathname.startsWith(baseAdminRoute) ? `?redirect=${encodeURIComponent(window.location.pathname)}` : ''}`,\n }),\n ),\n )\n\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition])\n\n const revokeTokenAndExpire = useCallback(() => {\n setUserInMemory(null)\n setTokenInMemory(undefined)\n setTokenExpirationMs(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value\n const handleReminderTimeout = useEffectEvent(() => {\n if (autoRefresh) {\n refreshCookieEvent()\n } else {\n openModal(stayLoggedInModalSlug)\n }\n })\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpirationMs(userResponse.exp * 1000)\n\n const expiresInMs = Math.max(\n 0,\n Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs),\n )\n\n if (expiresInMs) {\n const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2)\n setForceLogoutBufferMs(nextForceLogoutBufferMs)\n\n reminderTimeoutRef.current = setTimeout(\n handleReminderTimeout,\n Math.max(expiresInMs - nextForceLogoutBufferMs, 0),\n )\n\n forceLogOutTimeoutRef.current = setTimeout(() => {\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n }, expiresInMs)\n }\n } else {\n revokeTokenAndExpire()\n }\n },\n [redirectToInactivityRoute, revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n if (!id) {\n return\n }\n\n const expiresInMs = Math.max(0, (tokenExpirationMs ?? 0) - Date.now())\n\n if (forceRefresh || (tokenExpirationMs && expiresInMs < forceLogoutBufferMs * 2)) {\n clearTimeout(refreshTokenTimeoutRef.current)\n refreshTokenTimeoutRef.current = setTimeout(async () => {\n try {\n const request = await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/refresh-token?refresh`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }, 1000)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n setNewUser,\n tokenExpirationMs,\n userSlug,\n forceLogoutBufferMs,\n id,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/refresh-token`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n if (user) {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n }\n return null\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, userSlug, user],\n )\n\n const logOut = useCallback(async () => {\n try {\n if (user && user.collection) {\n setNewUser(null)\n await requests.post(\n formatAdminURL({\n apiRoute,\n path: `/${user.collection}/logout`,\n }),\n )\n }\n } catch (_) {\n // fail silently and log the user out in state\n }\n\n return true\n }, [apiRoute, setNewUser, user])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(\n formatAdminURL({\n apiRoute,\n path: `/access${params}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: SanitizedPermissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(\n formatAdminURL({\n apiRoute,\n path: `/${userSlug}/me`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n setNewUser(json)\n return json?.user || null\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [apiRoute, userSlug, i18n.language, setNewUser])\n\n const refreshCookieEvent = useEffectEvent(refreshCookie)\n useEffect(() => {\n // when location changes, refresh cookie\n refreshCookieEvent()\n }, [pathname])\n\n const fetchFullUserEvent = useEffectEvent(fetchFullUser)\n useEffect(() => {\n async function fetchUserOnMount() {\n await fetchFullUserEvent()\n setFetchedUserOnMount(true)\n }\n\n void fetchUserOnMount()\n }, [])\n\n useEffect(() => {\n if (!user && autoLogin && !autoLogin.prefillOnly) {\n void fetchFullUserEvent()\n }\n }, [user, autoLogin])\n\n useEffect(\n () => () => {\n // remove all timeouts on unmount\n clearTimeout(refreshTokenTimeoutRef.current)\n clearTimeout(reminderTimeoutRef.current)\n clearTimeout(forceLogOutTimeoutRef.current)\n },\n [],\n )\n\n if (!user && !fetchedUserOnMount) {\n return null\n }\n\n return (\n <Context\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n tokenExpirationMs,\n user,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => use(Context) as AuthContext<T>\n"],"mappings":"AAAA;;;AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,WAAW,EAAEC,SAAS,QAAQ;AACvC,SAASC,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAC5E,SAASC,KAAK,QAAQ;AAEtB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ;AA0DnC,MAAMC,OAAA,gBAAUZ,aAAA,CAAc,CAAC;AAE/B,MAAMa,YAAA,GAAe;AAQrB,OAAO,SAASC,aAAa;EAC3BC,QAAQ;EACRC,WAAA,EAAaC,kBAAkB;EAC/BC,IAAA,EAAMC;AAAW,CACX;EACN,MAAMC,QAAA,GAAWzB,WAAA;EACjB,MAAM0B,MAAA,GAASzB,SAAA;EAEf,MAAM;IAAE0B;EAAM,CAAE,GAAGZ,SAAA;EAEnB,MAAM;IACJa,KAAA,EAAO;MACLC,SAAS;MACTC,WAAW;MACXC,MAAA,EAAQ;QAAEC,UAAA,EAAYC;MAAqB,CAAE;MAC7CV,IAAA,EAAMW;IAAQ,CACf;IACDH,MAAA,EAAQ;MAAEH,KAAA,EAAOO,UAAU;MAAEC,GAAA,EAAKC;IAAQ;EAAE,CAC7C,GAAGV,MAAA;EAEJ,MAAM;IAAEW;EAAI,CAAE,GAAGzB,cAAA;EACjB,MAAM;IAAE0B,cAAc;IAAEC;EAAS,CAAE,GAAGzC,QAAA;EACtC,MAAM;IAAE0C;EAAoB,CAAE,GAAGzB,kBAAA;EAEjC,MAAM,CAACO,IAAA,EAAMmB,eAAA,CAAgB,GAAGjC,QAAA,CAA4Be,WAAA;EAC5D,MAAM,CAACmB,aAAA,EAAeC,gBAAA,CAAiB,GAAGnC,QAAA;EAC1C,MAAM,CAACoC,iBAAA,EAAmBC,oBAAA,CAAqB,GAAGrC,QAAA;EAClD,MAAM,CAACY,WAAA,EAAa0B,cAAA,CAAe,GAAGtC,QAAA,CAA+Ba,kBAAA;EACrE,MAAM,CAAC0B,mBAAA,EAAqBC,sBAAA,CAAuB,GAAGxC,QAAA,CAAiB;EACvE,MAAM,CAACyC,kBAAA,EAAoBC,qBAAA,CAAsB,GAAG1C,QAAA,CAAS;EAE7D,MAAM2C,sBAAA,GAAyBhD,KAAA,CAAMiD,MAAM,CAAgC;EAC3E,MAAMC,kBAAA,GAAqBlD,KAAA,CAAMiD,MAAM,CAAgC;EACvE,MAAME,qBAAA,GAAwBnD,KAAA,CAAMiD,MAAM,CAAgC;EAE1E,MAAMG,EAAA,GAAKjC,IAAA,EAAMiC,EAAA;EAEjB,MAAMC,yBAAA,GAA4BlD,WAAA,CAAY;IAC5C,MAAMmD,cAAA,GAAiBxD,cAAA,CAAe;MAAEiC,UAAA;MAAYwB,IAAA,EAAM;IAAG;IAC7DlB,oBAAA,CAAqB,MACnBf,MAAA,CAAOkC,OAAO,CACZ1D,cAAA,CAAe;MACbiC,UAAA;MACAwB,IAAA,EAAM,GAAG1B,qBAAA,GAAwB4B,MAAA,CAAOC,QAAQ,CAACrC,QAAQ,CAACsC,UAAU,CAACL,cAAA,IAAkB,aAAaM,kBAAA,CAAmBH,MAAA,CAAOC,QAAQ,CAACrC,QAAQ,GAAG,GAAG;IACvJ;IAIJc,cAAA;EACF,GAAG,CAACb,MAAA,EAAQS,UAAA,EAAYF,qBAAA,EAAuBM,cAAA,EAAgBE,oBAAA,CAAqB;EAEpF,MAAMwB,oBAAA,GAAuB1D,WAAA,CAAY;IACvCmC,eAAA,CAAgB;IAChBE,gBAAA,CAAiBsB,SAAA;IACjBpB,oBAAA,CAAqBoB,SAAA;IACrBC,YAAA,CAAaf,sBAAA,CAAuBgB,OAAO;EAC7C,GAAG,EAAE;EAEL;EACA,MAAMC,qBAAA,GAAwBzD,cAAA,CAAe;IAC3C,IAAIkB,WAAA,EAAa;MACfwC,kBAAA;IACF,OAAO;MACL9B,SAAA,CAAU7B,qBAAA;IACZ;EACF;EAEA,MAAM4D,UAAA,GAAahE,WAAA,CAChBiE,YAAA;IACCL,YAAA,CAAab,kBAAA,CAAmBc,OAAO;IACvCD,YAAA,CAAaZ,qBAAA,CAAsBa,OAAO;IAE1C,IAAII,YAAA,EAAcjD,IAAA,EAAM;MACtBmB,eAAA,CAAgB8B,YAAA,CAAajD,IAAI;MACjCqB,gBAAA,CAAiB4B,YAAA,CAAaC,KAAK;MACnC3B,oBAAA,CAAqB0B,YAAA,CAAaE,GAAG,GAAG;MAExC,MAAMC,WAAA,GAAcC,IAAA,CAAKC,GAAG,CAC1B,GACAD,IAAA,CAAKE,GAAG,CAAC,CAACN,YAAA,CAAaE,GAAG,IAAI,KAAK,OAAOK,IAAA,CAAKC,GAAG,IAAI9D,YAAA;MAGxD,IAAIyD,WAAA,EAAa;QACf,MAAMM,uBAAA,GAA0BL,IAAA,CAAKE,GAAG,CAAC,QAAQH,WAAA,GAAc;QAC/D1B,sBAAA,CAAuBgC,uBAAA;QAEvB3B,kBAAA,CAAmBc,OAAO,GAAGc,UAAA,CAC3Bb,qBAAA,EACAO,IAAA,CAAKC,GAAG,CAACF,WAAA,GAAcM,uBAAA,EAAyB;QAGlD1B,qBAAA,CAAsBa,OAAO,GAAGc,UAAA,CAAW;UACzCjB,oBAAA;UACAR,yBAAA;QACF,GAAGkB,WAAA;MACL;IACF,OAAO;MACLV,oBAAA;IACF;EACF,GACA,CAACR,yBAAA,EAA2BQ,oBAAA,CAAqB;EAGnD,MAAMkB,aAAA,GAAgB5E,WAAA,CACnB6E,YAAA;IACC,IAAI,CAAC5B,EAAA,EAAI;MACP;IACF;IAEA,MAAMmB,aAAA,GAAcC,IAAA,CAAKC,GAAG,CAAC,GAAG,CAAChC,iBAAA,IAAqB,KAAKkC,IAAA,CAAKC,GAAG;IAEnE,IAAII,YAAA,IAAiBvC,iBAAA,IAAqB8B,aAAA,GAAc3B,mBAAA,GAAsB,GAAI;MAChFmB,YAAA,CAAaf,sBAAA,CAAuBgB,OAAO;MAC3ChB,sBAAA,CAAuBgB,OAAO,GAAGc,UAAA,CAAW;QAC1C,IAAI;UACF,MAAMG,OAAA,GAAU,MAAMvE,QAAA,CAASwE,IAAI,CACjCpF,cAAA,CAAe;YACbmC,QAAA;YACAsB,IAAA,EAAM,IAAIzB,QAAA;UACZ,IACA;YACEqD,OAAA,EAAS;cACP,mBAAmBjD,IAAA,CAAKkD;YAC1B;UACF;UAGF,IAAIH,OAAA,CAAQI,MAAM,KAAK,KAAK;YAC1B,MAAMC,IAAA,GAAsB,MAAML,OAAA,CAAQK,IAAI;YAC9CnB,UAAA,CAAWmB,IAAA;UACb,OAAO;YACLnB,UAAA,CAAW;YACXd,yBAAA;UACF;QACF,EAAE,OAAOkC,CAAA,EAAG;UACVjF,KAAA,CAAMkF,KAAK,CAACD,CAAA,CAAEE,OAAO;QACvB;MACF,GAAG;IACL;EACF,GACA,CACExD,QAAA,EACAC,IAAA,CAAKkD,QAAQ,EACb/B,yBAAA,EACAc,UAAA,EACA1B,iBAAA,EACAX,QAAA,EACAc,mBAAA,EACAQ,EAAA,CACD;EAGH,MAAMsC,kBAAA,GAAqBvF,WAAA,CACzB,MAAOwF,WAAA;IACL,IAAI;MACF,MAAMV,SAAA,GAAU,MAAMvE,QAAA,CAASwE,IAAI,CACjCpF,cAAA,CAAe;QACbmC,QAAA;QACAsB,IAAA,EAAM,IAAIzB,QAAA;MACZ,IACA;QACEqD,OAAA,EAAS;UACP,mBAAmBjD,IAAA,CAAKkD;QAC1B;MACF;MAGF,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMC,MAAA,GAAsB,MAAML,SAAA,CAAQK,IAAI;QAC9C,IAAI,CAACK,WAAA,EAAa;UAChBxB,UAAA,CAAWmB,MAAA;QACb;QACA,OAAOA,MAAA,CAAKnE,IAAI;MAClB;MAEA,IAAIA,IAAA,EAAM;QACRgD,UAAA,CAAW;QACXd,yBAAA;MACF;IACF,EAAE,OAAOkC,GAAA,EAAG;MACVjF,KAAA,CAAMkF,KAAK,CAAC,4BAA4BD,GAAA,CAAEE,OAAO,EAAE;IACrD;IACA,OAAO;EACT,GACA,CAACxD,QAAA,EAAUC,IAAA,CAAKkD,QAAQ,EAAE/B,yBAAA,EAA2Bc,UAAA,EAAYrC,QAAA,EAAUX,IAAA,CAAK;EAGlF,MAAMyE,MAAA,GAASzF,WAAA,CAAY;IACzB,IAAI;MACF,IAAIgB,IAAA,IAAQA,IAAA,CAAK0E,UAAU,EAAE;QAC3B1B,UAAA,CAAW;QACX,MAAMzD,QAAA,CAASwE,IAAI,CACjBpF,cAAA,CAAe;UACbmC,QAAA;UACAsB,IAAA,EAAM,IAAIpC,IAAA,CAAK0E,UAAU;QAC3B;MAEJ;IACF,EAAE,OAAOC,CAAA,EAAG;MACV;IAAA;IAGF,OAAO;EACT,GAAG,CAAC7D,QAAA,EAAUkC,UAAA,EAAYhD,IAAA,CAAK;EAE/B,MAAM4E,kBAAA,GAAqB5F,WAAA,CACzB,OAAO;IAAE6F;EAAM,CAAuB,GAAG,CAAC,CAAC;IACzC,MAAMC,MAAA,GAASlG,EAAA,CAAGmG,SAAS,CACzB;MACEF;IACF,GACA;MACEG,cAAA,EAAgB;IAClB;IAGF,IAAI;MACF,MAAMlB,SAAA,GAAU,MAAMvE,QAAA,CAAS0F,GAAG,CAChCtG,cAAA,CAAe;QACbmC,QAAA;QACAsB,IAAA,EAAM,UAAU0C,MAAA;MAClB,IACA;QACEd,OAAA,EAAS;UACP,mBAAmBjD,IAAA,CAAKkD;QAC1B;MACF;MAGF,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMC,MAAA,GAA6B,MAAML,SAAA,CAAQK,IAAI;QACrD3C,cAAA,CAAe2C,MAAA;MACjB,OAAO;QACL,MAAM,IAAIe,KAAA,CAAM,gDAAgDpB,SAAA,CAAQI,MAAM,EAAE;MAClF;IACF,EAAE,OAAOE,GAAA,EAAG;MACVjF,KAAA,CAAMkF,KAAK,CAAC,kCAAkCD,GAAA,CAAEE,OAAO,EAAE;IAC3D;EACF,GACA,CAACxD,QAAA,EAAUC,IAAA,CAAK;EAGlB,MAAMoE,aAAA,GAAgBtG,KAAA,CAAMG,WAAW,CAAC;IACtC,IAAI;MACF,MAAM8E,SAAA,GAAU,MAAMvE,QAAA,CAAS0F,GAAG,CAChCtG,cAAA,CAAe;QACbmC,QAAA;QACAsB,IAAA,EAAM,IAAIzB,QAAA;MACZ,IACA;QACEyE,WAAA,EAAa;QACbpB,OAAA,EAAS;UACP,mBAAmBjD,IAAA,CAAKkD;QAC1B;MACF;MAGF,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMC,MAAA,GAAsB,MAAML,SAAA,CAAQK,IAAI;QAC9CnB,UAAA,CAAWmB,MAAA;QACX,OAAOA,MAAA,EAAMnE,IAAA,IAAQ;MACvB;IACF,EAAE,OAAOoE,GAAA,EAAG;MACVjF,KAAA,CAAMkF,KAAK,CAAC,yBAAyBD,GAAA,CAAEE,OAAO,EAAE;IAClD;IAEA,OAAO;EACT,GAAG,CAACxD,QAAA,EAAUH,QAAA,EAAUI,IAAA,CAAKkD,QAAQ,EAAEjB,UAAA,CAAW;EAElD,MAAMD,kBAAA,GAAqB1D,cAAA,CAAeuE,aAAA;EAC1C3E,SAAA,CAAU;IACR;IACA8D,kBAAA;EACF,GAAG,CAAC7C,QAAA,CAAS;EAEb,MAAMmF,kBAAA,GAAqBhG,cAAA,CAAe8F,aAAA;EAC1ClG,SAAA,CAAU;IACR,eAAeqG,iBAAA;MACb,MAAMD,kBAAA;MACNzD,qBAAA,CAAsB;IACxB;IAEA,KAAK0D,gBAAA;EACP,GAAG,EAAE;EAELrG,SAAA,CAAU;IACR,IAAI,CAACe,IAAA,IAAQM,SAAA,IAAa,CAACA,SAAA,CAAUiF,WAAW,EAAE;MAChD,KAAKF,kBAAA;IACP;EACF,GAAG,CAACrF,IAAA,EAAMM,SAAA,CAAU;EAEpBrB,SAAA,CACE,MAAM;IACJ;IACA2D,YAAA,CAAaf,sBAAA,CAAuBgB,OAAO;IAC3CD,YAAA,CAAab,kBAAA,CAAmBc,OAAO;IACvCD,YAAA,CAAaZ,qBAAA,CAAsBa,OAAO;EAC5C,GACA,EAAE;EAGJ,IAAI,CAAC7C,IAAA,IAAQ,CAAC2B,kBAAA,EAAoB;IAChC,OAAO;EACT;EAEA,oBACE6D,IAAA,CAAC9F,OAAA;IACC+F,KAAA,EAAO;MACLN,aAAA;MACAV,MAAA;MACA3E,WAAA;MACA8D,aAAA;MACAW,kBAAA;MACAK,kBAAA;MACApD,cAAA;MACAkE,OAAA,EAAS1C,UAAA;MACTE,KAAA,EAAO9B,aAAA;MACPE,iBAAA;MACAtB;IACF;cAECH;;AAGP;AAEA,OAAO,MAAM8F,OAAA,GAAUA,CAAA,KAAuC5G,GAAA,CAAIW,OAAA","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import type { DocumentInfoContext, DocumentInfoProps } from './types.js';
|
|
3
3
|
export type * from './types.js';
|
|
4
4
|
export declare const useDocumentInfo: () => DocumentInfoContext;
|
|
5
5
|
export declare const DocumentInfoProvider: React.FC<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AA+XtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
import { formatAdminURL } from 'payload/shared';
|
|
4
5
|
import * as qs from 'qs-esm';
|
|
5
6
|
import React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
6
7
|
import { useControllableState } from '../../hooks/useControllableState.js';
|
|
@@ -50,8 +51,7 @@ const DocumentInfo = ({
|
|
|
50
51
|
},
|
|
51
52
|
routes: {
|
|
52
53
|
api
|
|
53
|
-
}
|
|
54
|
-
serverURL
|
|
54
|
+
}
|
|
55
55
|
},
|
|
56
56
|
getEntityConfig
|
|
57
57
|
} = useConfig();
|
|
@@ -112,7 +112,10 @@ const DocumentInfo = ({
|
|
|
112
112
|
localeIsLoading
|
|
113
113
|
} = useLocaleLoading();
|
|
114
114
|
const isInitializing = useMemo(() => initialState === undefined || initialData === undefined || localeIsLoading, [initialData, initialState, localeIsLoading]);
|
|
115
|
-
const
|
|
115
|
+
const baseAPIPath = formatAdminURL({
|
|
116
|
+
apiRoute: api,
|
|
117
|
+
path: ''
|
|
118
|
+
});
|
|
116
119
|
let slug;
|
|
117
120
|
let pluralType;
|
|
118
121
|
let preferencesKey;
|
|
@@ -131,7 +134,7 @@ const DocumentInfo = ({
|
|
|
131
134
|
const unlockDocument = useCallback(async (docID, slug_0) => {
|
|
132
135
|
try {
|
|
133
136
|
const isGlobal = slug_0 === globalSlug;
|
|
134
|
-
const request = await requests.get(`${
|
|
137
|
+
const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {
|
|
135
138
|
credentials: 'include',
|
|
136
139
|
params: isGlobal ? {
|
|
137
140
|
'where[globalSlug][equals]': slug_0
|
|
@@ -145,7 +148,7 @@ const DocumentInfo = ({
|
|
|
145
148
|
} = await request.json();
|
|
146
149
|
if (docs?.length > 0) {
|
|
147
150
|
const lockID = docs[0].id;
|
|
148
|
-
await requests.delete(`${
|
|
151
|
+
await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {
|
|
149
152
|
credentials: 'include',
|
|
150
153
|
headers: {
|
|
151
154
|
'Content-Type': 'application/json'
|
|
@@ -157,12 +160,12 @@ const DocumentInfo = ({
|
|
|
157
160
|
// eslint-disable-next-line no-console
|
|
158
161
|
console.error('Failed to unlock the document', error);
|
|
159
162
|
}
|
|
160
|
-
}, [
|
|
163
|
+
}, [baseAPIPath, globalSlug, setDocumentIsLocked]);
|
|
161
164
|
const updateDocumentEditor = useCallback(async (docID_0, slug_1, user) => {
|
|
162
165
|
try {
|
|
163
166
|
const isGlobal_0 = slug_1 === globalSlug;
|
|
164
167
|
// Check if the document is already locked
|
|
165
|
-
const request_0 = await requests.get(`${
|
|
168
|
+
const request_0 = await requests.get(`${baseAPIPath}/payload-locked-documents`, {
|
|
166
169
|
credentials: 'include',
|
|
167
170
|
params: isGlobal_0 ? {
|
|
168
171
|
'where[globalSlug][equals]': slug_1
|
|
@@ -184,7 +187,7 @@ const DocumentInfo = ({
|
|
|
184
187
|
value: user
|
|
185
188
|
};
|
|
186
189
|
// Send a patch request to update the _lastEdited info
|
|
187
|
-
await requests.patch(`${
|
|
190
|
+
await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID_0}`, {
|
|
188
191
|
body: JSON.stringify({
|
|
189
192
|
user: userData
|
|
190
193
|
}),
|
|
@@ -198,7 +201,7 @@ const DocumentInfo = ({
|
|
|
198
201
|
// eslint-disable-next-line no-console
|
|
199
202
|
console.error('Failed to update the document editor', error_0);
|
|
200
203
|
}
|
|
201
|
-
}, [
|
|
204
|
+
}, [baseAPIPath, globalSlug]);
|
|
202
205
|
const getDocPermissions = useGetDocPermissions({
|
|
203
206
|
id: id,
|
|
204
207
|
api,
|
|
@@ -207,7 +210,6 @@ const DocumentInfo = ({
|
|
|
207
210
|
i18n,
|
|
208
211
|
locale,
|
|
209
212
|
permissions,
|
|
210
|
-
serverURL,
|
|
211
213
|
setDocPermissions,
|
|
212
214
|
setHasPublishPermission,
|
|
213
215
|
setHasSavePermission
|
|
@@ -281,17 +283,16 @@ const DocumentInfo = ({
|
|
|
281
283
|
};
|
|
282
284
|
}, []);
|
|
283
285
|
const action = React.useMemo(() => {
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
+
const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`;
|
|
287
|
+
return `${baseAPIPath}${docPath}${qs.stringify({
|
|
286
288
|
depth: 0,
|
|
287
289
|
'fallback-locale': 'null',
|
|
288
290
|
locale,
|
|
289
291
|
uploadEdits: uploadEdits || undefined
|
|
290
|
-
}
|
|
291
|
-
return `${docURL}${qs.stringify(params, {
|
|
292
|
+
}, {
|
|
292
293
|
addQueryPrefix: true
|
|
293
294
|
})}`;
|
|
294
|
-
}, [
|
|
295
|
+
}, [baseAPIPath, locale, pluralType, id, slug, uploadEdits]);
|
|
295
296
|
const value = {
|
|
296
297
|
...props,
|
|
297
298
|
action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","formatDocTitle","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","serverURL","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","title","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseURL","slug","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","path","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docURL","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, DocumentPreferences } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { type DocumentInfoContext, type DocumentInfoProps } from './types.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n /**\n * @deprecated This state will be removed in v4.\n * This is for performance reasons. Use the `DocumentTitleContext` instead.\n */\n const [title, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<ClientUser | null>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = 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 updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseURL = `${serverURL}${api}`\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [serverURL, api, globalSlug, setDocumentIsLocked],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${serverURL}${api}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${serverURL}${api}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [serverURL, api, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n serverURL,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n /**\n * @todo: Remove this in v4\n * Users should use the `DocumentTitleContext` instead.\n */\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...data, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, data, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docURL = `${baseURL}${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n const params = {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n }\n\n return `${docURL}${qs.stringify(params, {\n addQueryPrefix: true,\n })}`\n }, [baseURL, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n title,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","formatDocTitle","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","routes","api","getEntityConfig","collectionConfig","globalConfig","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","title","setDocumentTitle","data","fallback","toString","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseAPIPath","apiRoute","path","slug","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","collection","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docPath","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, DocumentPreferences } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatDocTitle } from '../../utilities/formatDocTitle/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n /**\n * @deprecated This state will be removed in v4.\n * This is for performance reasons. Use the `DocumentTitleContext` instead.\n */\n const [title, setDocumentTitle] = useState(() =>\n formatDocTitle({\n collectionConfig,\n data: { ...(initialData || {}), id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<ClientUser | null>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = 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 updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: ClientUser | number | string) => {\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n /**\n * @todo: Remove this in v4\n * Users should use the `DocumentTitleContext` instead.\n */\n useEffect(() => {\n setDocumentTitle(\n formatDocTitle({\n collectionConfig,\n data: { ...data, id },\n dateFormat,\n fallback: id?.toString(),\n globalConfig,\n i18n,\n }),\n )\n }, [collectionConfig, globalConfig, data, dateFormat, i18n, id])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setDocumentTitle,\n setHasPublishedDoc,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n title,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export type GetDocPermissions = (data?: Data) => Promise<void>;
|
|
4
|
-
export declare const useGetDocPermissions: ({ id, api, collectionSlug, globalSlug, i18n, locale, permissions,
|
|
4
|
+
export declare const useGetDocPermissions: ({ id, api, collectionSlug, globalSlug, i18n, locale, permissions, setDocPermissions, setHasPublishPermission, setHasSavePermission, }: {
|
|
5
5
|
api: string;
|
|
6
6
|
collectionSlug: string;
|
|
7
7
|
globalSlug: string;
|
|
@@ -9,7 +9,6 @@ export declare const useGetDocPermissions: ({ id, api, collectionSlug, globalSlu
|
|
|
9
9
|
id: string;
|
|
10
10
|
locale: string;
|
|
11
11
|
permissions: SanitizedPermissions;
|
|
12
|
-
serverURL: string;
|
|
13
12
|
setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>;
|
|
14
13
|
setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>;
|
|
15
14
|
setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,0IAW9B;IACD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAuGD,CAAA"}
|