@payloadcms/ui 3.0.0-canary.518fabe → 3.0.0-canary.51be7be
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/AddNewRelation/index.scss +36 -34
- package/dist/elements/AppHeader/index.scss +151 -150
- package/dist/elements/ArrayAction/index.scss +23 -21
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +1 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Autosave/index.scss +4 -2
- package/dist/elements/Banner/index.scss +51 -49
- package/dist/elements/BulkUpload/ActionsBar/index.js +2 -2
- package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
- package/dist/elements/BulkUpload/ActionsBar/index.scss +45 -43
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -1
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +2 -0
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.scss +23 -21
- package/dist/elements/BulkUpload/AddingFilesView/index.scss +16 -14
- package/dist/elements/BulkUpload/DrawerCloseButton/index.scss +23 -21
- package/dist/elements/BulkUpload/EditForm/index.js +3 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.scss +6 -4
- package/dist/elements/BulkUpload/FileSidebar/index.scss +214 -212
- package/dist/elements/BulkUpload/FormsManager/index.js +3 -1
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/Header/index.scss +11 -9
- package/dist/elements/BulkUpload/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +22 -42
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +1 -0
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/index.scss +202 -200
- package/dist/elements/Button/types.d.ts +6 -0
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/Card/index.scss +58 -56
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +51 -25
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/CodeEditor/index.d.ts.map +1 -1
- package/dist/elements/CodeEditor/index.js +2 -8
- package/dist/elements/CodeEditor/index.js.map +1 -1
- package/dist/elements/CodeEditor/index.scss +16 -14
- package/dist/elements/Collapsible/index.scss +125 -123
- package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
- package/dist/elements/ColumnSelector/index.js +14 -2
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/ColumnSelector/index.scss +36 -34
- package/dist/elements/CopyToClipboard/index.scss +21 -19
- package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -1
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.scss +309 -307
- package/dist/elements/DatePicker/library.scss +859 -0
- package/dist/elements/DeleteDocument/index.scss +32 -30
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +16 -5
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +29 -27
- package/dist/elements/DocumentControls/index.d.ts +4 -1
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +43 -7
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.scss +192 -182
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +23 -17
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.scss +55 -53
- package/dist/elements/DocumentDrawer/types.d.ts +4 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.scss +144 -142
- package/dist/elements/Drawer/index.scss +111 -109
- package/dist/elements/Dropzone/index.d.ts +2 -1
- package/dist/elements/Dropzone/index.d.ts.map +1 -1
- package/dist/elements/Dropzone/index.js +3 -2
- package/dist/elements/Dropzone/index.js.map +1 -1
- package/dist/elements/Dropzone/index.scss +32 -30
- package/dist/elements/DuplicateDocument/index.scss +31 -29
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +235 -124
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditMany/index.scss +162 -160
- package/dist/elements/EditUpload/index.scss +180 -178
- package/dist/elements/ErrorPill/index.scss +27 -25
- package/dist/elements/FieldSelect/index.js +2 -2
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.scss +4 -2
- package/dist/elements/FileDetails/DraggableFileDetails/index.scss +25 -23
- package/dist/elements/FileDetails/FileMeta/index.scss +21 -19
- package/dist/elements/FileDetails/StaticFileDetails/index.scss +104 -102
- package/dist/elements/GenerateConfirmation/index.scss +29 -27
- package/dist/elements/Gutter/index.scss +14 -12
- package/dist/elements/Hamburger/index.scss +38 -32
- package/dist/elements/IDLabel/index.scss +11 -9
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +9 -5
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/index.scss +70 -74
- package/dist/elements/ListDrawer/DrawerContent.d.ts +2 -0
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +194 -188
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +18 -15
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListDrawer/index.scss +93 -91
- package/dist/elements/ListDrawer/types.d.ts +4 -1
- package/dist/elements/ListDrawer/types.d.ts.map +1 -1
- package/dist/elements/ListDrawer/types.js.map +1 -1
- package/dist/elements/ListHeader/index.scss +9 -7
- package/dist/elements/ListSelection/index.scss +14 -12
- package/dist/elements/Loading/index.scss +108 -106
- package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.js +9 -5
- package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.scss +45 -39
- package/dist/elements/Localizer/index.scss +7 -5
- package/dist/elements/Locked/index.d.ts +8 -0
- package/dist/elements/Locked/index.d.ts.map +1 -0
- package/dist/elements/Locked/index.js +72 -0
- package/dist/elements/Locked/index.js.map +1 -0
- package/dist/elements/Locked/index.scss +16 -0
- package/dist/elements/Nav/NavToggler/index.scss +9 -7
- package/dist/elements/NavGroup/index.scss +43 -41
- package/dist/elements/Pagination/ClickableArrow/index.scss +34 -32
- package/dist/elements/Pagination/index.d.ts.map +1 -1
- package/dist/elements/Pagination/index.js +1 -1
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.scss +40 -38
- package/dist/elements/PerPage/index.d.ts +5 -5
- package/dist/elements/PerPage/index.d.ts.map +1 -1
- package/dist/elements/PerPage/index.js +2 -1
- package/dist/elements/PerPage/index.js.map +1 -1
- package/dist/elements/PerPage/index.scss +37 -35
- package/dist/elements/Pill/index.scss +104 -100
- package/dist/elements/Popup/PopupButtonList/index.scss +45 -43
- package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
- package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js +3 -2
- package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.scss +26 -12
- package/dist/elements/Popup/index.d.ts +1 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +6 -3
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/index.scss +194 -175
- package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js +11 -3
- package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
- package/dist/elements/PreviewSizes/index.scss +115 -113
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +97 -46
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +18 -6
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/PublishMany/index.scss +28 -26
- package/dist/elements/ReactSelect/ClearIndicator/index.scss +6 -4
- package/dist/elements/ReactSelect/DropdownIndicator/index.scss +11 -9
- package/dist/elements/ReactSelect/MultiValue/index.scss +26 -24
- package/dist/elements/ReactSelect/MultiValueLabel/index.scss +16 -14
- package/dist/elements/ReactSelect/MultiValueRemove/index.scss +20 -18
- package/dist/elements/ReactSelect/ValueContainer/index.scss +22 -20
- package/dist/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/index.js +2 -0
- package/dist/elements/ReactSelect/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.scss +67 -56
- package/dist/elements/ReactSelect/types.d.ts +2 -1
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/TableWrapper.d.ts +8 -0
- package/dist/elements/RelationshipTable/TableWrapper.d.ts.map +1 -0
- package/dist/elements/RelationshipTable/TableWrapper.js +69 -0
- package/dist/elements/RelationshipTable/TableWrapper.js.map +1 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts +8 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts.map +1 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +82 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -0
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +6 -0
- package/dist/elements/RelationshipTable/index.d.ts +15 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -0
- package/dist/elements/RelationshipTable/index.js +445 -0
- package/dist/elements/RelationshipTable/index.js.map +1 -0
- package/dist/elements/RelationshipTable/index.scss +28 -0
- package/dist/elements/RenderTitle/index.scss +7 -5
- package/dist/elements/SearchFilter/index.scss +31 -28
- package/dist/elements/SelectAll/index.scss +5 -3
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +64 -24
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SelectRow/index.scss +6 -4
- package/dist/elements/ShimmerEffect/index.scss +26 -24
- package/dist/elements/SortColumn/index.d.ts +1 -0
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +29 -17
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/SortColumn/index.scss +54 -43
- package/dist/elements/SortComplex/index.scss +27 -25
- package/dist/elements/Status/index.js +1 -1
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/Status/index.scss +45 -43
- package/dist/elements/StayLoggedIn/index.scss +28 -26
- package/dist/elements/StepNav/index.scss +62 -61
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.scss +20 -18
- package/dist/elements/Table/DefaultCell/fields/Code/index.scss +22 -20
- package/dist/elements/Table/DefaultCell/fields/File/index.scss +18 -16
- package/dist/elements/Table/DefaultCell/fields/JSON/index.scss +20 -18
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts +2 -3
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +43 -40
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.scss +0 -3
- package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -0
- package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/index.js +1 -0
- package/dist/elements/Table/DefaultCell/fields/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +2 -2
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/RenderCell.d.ts +11 -0
- package/dist/elements/Table/RenderCell.d.ts.map +1 -0
- package/dist/elements/Table/RenderCell.js +30 -0
- package/dist/elements/Table/RenderCell.js.map +1 -0
- package/dist/elements/Table/TableCellProvider/index.js +9 -9
- package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
- package/dist/elements/Table/index.d.ts +3 -6
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +36 -31
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.scss +87 -35
- package/dist/elements/TableColumns/buildColumnState.d.ts +5 -2
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +35 -22
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/index.d.ts +5 -0
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +107 -74
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/Thumbnail/index.scss +37 -35
- package/dist/elements/ThumbnailCard/index.scss +31 -29
- package/dist/elements/Tooltip/index.d.ts +1 -0
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +15 -13
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Tooltip/index.scss +77 -75
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +18 -6
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.scss +28 -26
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +2 -0
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/index.scss +122 -120
- package/dist/elements/WhereBuilder/Condition/Number/index.scss +4 -2
- package/dist/elements/WhereBuilder/Condition/Relationship/index.scss +9 -7
- package/dist/elements/WhereBuilder/Condition/Text/index.scss +4 -2
- package/dist/elements/WhereBuilder/Condition/index.js +32 -30
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.scss +43 -41
- package/dist/elements/WhereBuilder/index.scss +28 -26
- package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/reduceClientFields.js +3 -1
- package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -1
- package/dist/exports/client/{CodeEditor-CHKRX3U2.js → CodeEditor-4A6256PR.js} +6 -4
- package/dist/exports/client/CodeEditor-4A6256PR.js.map +8 -0
- package/dist/exports/client/{DatePicker-OLRZVTAD.js → DatePicker-2ZXVD574.js} +2 -2
- package/dist/exports/client/chunk-6IWEPNUV.js +14 -0
- package/dist/exports/client/chunk-6IWEPNUV.js.map +8 -0
- package/dist/exports/client/{chunk-JINNHJP7.js → chunk-ED2SHEMU.js} +3 -3
- package/dist/exports/client/{chunk-JINNHJP7.js.map → chunk-ED2SHEMU.js.map} +4 -4
- package/dist/exports/client/index.d.ts +3 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +22 -19
- package/dist/exports/client/index.js.map +4 -4
- 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.js +2 -2
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.scss +74 -72
- package/dist/fields/Blocks/BlockRow.js +2 -2
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.scss +25 -23
- package/dist/fields/Blocks/BlocksDrawer/index.scss +36 -34
- package/dist/fields/Blocks/SectionTitle/index.scss +51 -49
- package/dist/fields/Blocks/index.scss +89 -87
- package/dist/fields/Checkbox/Input.js +1 -1
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.scss +110 -95
- package/dist/fields/Code/index.scss +18 -16
- package/dist/fields/Collapsible/index.d.ts +141 -4
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.scss +8 -6
- package/dist/fields/ConfirmPassword/index.scss +18 -16
- package/dist/fields/DateTime/index.scss +13 -11
- package/dist/fields/Email/index.scss +21 -19
- package/dist/fields/FieldDescription/index.scss +9 -7
- package/dist/fields/FieldError/index.scss +13 -11
- package/dist/fields/FieldLabel/index.scss +17 -15
- package/dist/fields/Group/index.js +2 -2
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Group/index.scss +107 -105
- package/dist/fields/JSON/index.scss +11 -9
- package/dist/fields/Join/index.d.ts +9 -0
- package/dist/fields/Join/index.d.ts.map +1 -0
- package/dist/fields/Join/index.js +75 -0
- package/dist/fields/Join/index.js.map +1 -0
- package/dist/fields/Number/index.js +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Number/index.scss +19 -17
- package/dist/fields/Password/index.js +29 -25
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Password/index.scss +18 -16
- package/dist/fields/Point/index.scss +33 -31
- package/dist/fields/RadioGroup/Radio/index.scss +58 -56
- package/dist/fields/RadioGroup/index.scss +57 -55
- package/dist/fields/Relationship/findOptionsByValue.d.ts +2 -1
- package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
- package/dist/fields/Relationship/findOptionsByValue.js +9 -2
- package/dist/fields/Relationship/findOptionsByValue.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts +4 -4
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +2 -0
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/index.scss +44 -42
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +23 -20
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.scss +40 -38
- package/dist/fields/Relationship/select-components/SingleValue/index.d.ts.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js +35 -34
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.scss +43 -41
- package/dist/fields/Relationship/types.d.ts +1 -0
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/Row/index.scss +31 -26
- package/dist/fields/Select/index.scss +16 -14
- package/dist/fields/Tabs/Tab/index.scss +58 -56
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +69 -53
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Tabs/index.scss +46 -44
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.scss +23 -21
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +4 -1
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/index.scss +89 -87
- package/dist/fields/Upload/HasMany/index.scss +20 -18
- package/dist/fields/Upload/HasOne/index.js +1 -1
- package/dist/fields/Upload/HasOne/index.js.map +1 -1
- package/dist/fields/Upload/HasOne/index.scss +5 -3
- package/dist/fields/Upload/Input.d.ts +0 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +49 -39
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.js +28 -29
- package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.scss +44 -42
- package/dist/fields/Upload/UploadCard/index.scss +21 -20
- package/dist/fields/Upload/index.scss +49 -47
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +2 -0
- package/dist/fields/index.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +7 -0
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.js +6 -2
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/index.scss +5 -3
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +1 -0
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +3 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/index.d.ts.map +1 -1
- package/dist/forms/RenderFields/index.js +18 -15
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RenderFields/index.scss +47 -45
- package/dist/forms/Submit/index.scss +5 -3
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +3 -4
- package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
- package/dist/forms/buildStateFromSchema/index.d.ts +2 -0
- package/dist/forms/buildStateFromSchema/index.d.ts.map +1 -1
- package/dist/forms/buildStateFromSchema/index.js.map +1 -1
- package/dist/forms/useField/index.d.ts.map +1 -1
- package/dist/forms/useField/index.js +203 -111
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/graphics/Account/Default/index.scss +43 -41
- package/dist/hooks/useDelay.js +48 -15
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js +71 -32
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/icons/Calendar/index.scss +8 -6
- package/dist/icons/Check/index.scss +9 -7
- package/dist/icons/Chevron/index.d.ts +3 -3
- package/dist/icons/Chevron/index.d.ts.map +1 -1
- package/dist/icons/Chevron/index.js +4 -4
- package/dist/icons/Chevron/index.js.map +1 -1
- package/dist/icons/Chevron/index.scss +20 -10
- package/dist/icons/CloseMenu/index.scss +7 -5
- package/dist/icons/Copy/index.scss +9 -7
- package/dist/icons/DragHandle/index.scss +9 -7
- package/dist/icons/Edit/index.scss +9 -7
- package/dist/icons/Line/index.scss +8 -6
- package/dist/icons/Link/index.scss +8 -6
- package/dist/icons/Lock/index.d.ts +6 -0
- package/dist/icons/Lock/index.d.ts.map +1 -0
- package/dist/icons/Lock/index.js +27 -0
- package/dist/icons/Lock/index.js.map +1 -0
- package/dist/icons/Lock/index.scss +10 -0
- package/dist/icons/LogOut/index.scss +8 -6
- package/dist/icons/Menu/index.scss +6 -4
- package/dist/icons/More/index.scss +8 -6
- package/dist/icons/Plus/index.scss +6 -4
- package/dist/icons/Search/index.scss +8 -6
- package/dist/icons/Swap/index.scss +9 -7
- package/dist/icons/X/index.scss +6 -4
- package/dist/providers/Auth/index.d.ts +9 -4
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +51 -56
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Config/createClientConfig/collections.d.ts.map +1 -1
- package/dist/providers/Config/createClientConfig/collections.js +11 -1
- package/dist/providers/Config/createClientConfig/collections.js.map +1 -1
- package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
- package/dist/providers/Config/createClientConfig/fields.js +24 -3
- package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +109 -7
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/types.d.ts +32 -27
- package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/types.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts +5 -5
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/Preferences/index.js +3 -1
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +2 -2
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/ScrollInfo/index.d.ts +1 -3
- package/dist/providers/ScrollInfo/index.d.ts.map +1 -1
- package/dist/providers/ScrollInfo/index.js +1 -12
- package/dist/providers/ScrollInfo/index.js.map +1 -1
- package/dist/providers/Selection/index.d.ts +3 -2
- package/dist/providers/Selection/index.d.ts.map +1 -1
- package/dist/providers/Selection/index.js +66 -37
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/providers/Theme/index.d.ts +0 -1
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +29 -21
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js +5 -7
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/scss/app.scss +166 -162
- package/dist/scss/colors.scss +256 -254
- package/dist/scss/resets.scss +9 -7
- package/dist/scss/toastify.scss +42 -40
- package/dist/scss/toasts.scss +105 -103
- package/dist/scss/type.scss +81 -79
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts +9 -3
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +82 -4
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/deepMerge.d.ts +12 -0
- package/dist/utilities/deepMerge.d.ts.map +1 -0
- package/dist/utilities/deepMerge.js +25 -0
- package/dist/utilities/deepMerge.js.map +1 -0
- package/dist/utilities/getFormState.d.ts +8 -2
- package/dist/utilities/getFormState.d.ts.map +1 -1
- package/dist/utilities/getFormState.js +3 -1
- package/dist/utilities/getFormState.js.map +1 -1
- package/dist/utilities/handleBackToDashboard.d.ts +8 -0
- package/dist/utilities/handleBackToDashboard.d.ts.map +1 -0
- package/dist/utilities/handleBackToDashboard.js +12 -0
- package/dist/utilities/handleBackToDashboard.js.map +1 -0
- package/dist/utilities/handleGoBack.d.ts +9 -0
- package/dist/utilities/handleGoBack.d.ts.map +1 -0
- package/dist/utilities/handleGoBack.js +13 -0
- package/dist/utilities/handleGoBack.js.map +1 -0
- package/dist/utilities/handleTakeOver.d.ts +7 -0
- package/dist/utilities/handleTakeOver.d.ts.map +1 -0
- package/dist/utilities/handleTakeOver.js +27 -0
- package/dist/utilities/handleTakeOver.js.map +1 -0
- package/package.json +16 -16
- package/dist/exports/client/CodeEditor-CHKRX3U2.js.map +0 -8
- package/dist/exports/client/chunk-BGA6EPOL.js +0 -14
- package/dist/exports/client/chunk-BGA6EPOL.js.map +0 -8
- /package/dist/exports/client/{DatePicker-OLRZVTAD.js.map → DatePicker-2ZXVD574.js.map} +0 -0
package/dist/icons/X/index.scss
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import type { ClientUser, Permissions } from 'payload';
|
|
1
|
+
import type { ClientUser, Permissions, User } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
|
+
export type UserWithToken<T = ClientUser> = {
|
|
4
|
+
exp: number;
|
|
5
|
+
token: string;
|
|
6
|
+
user: T;
|
|
7
|
+
};
|
|
3
8
|
export type AuthContext<T = ClientUser> = {
|
|
4
|
-
fetchFullUser: () => Promise<
|
|
5
|
-
logOut: () => Promise<
|
|
9
|
+
fetchFullUser: () => Promise<null | User>;
|
|
10
|
+
logOut: () => Promise<boolean>;
|
|
6
11
|
permissions?: Permissions;
|
|
7
12
|
refreshCookie: (forceRefresh?: boolean) => void;
|
|
8
13
|
refreshCookieAsync: () => Promise<ClientUser>;
|
|
9
14
|
refreshPermissions: () => Promise<void>;
|
|
10
15
|
setPermissions: (permissions: Permissions) => void;
|
|
11
|
-
setUser: (user: T) => void;
|
|
16
|
+
setUser: (user: null | UserWithToken<T>) => void;
|
|
12
17
|
strategy?: string;
|
|
13
18
|
token?: string;
|
|
14
19
|
tokenExpiration?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK5D,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,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,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AACD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAuRP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
|
|
@@ -19,7 +19,7 @@ export function AuthProvider({
|
|
|
19
19
|
permissions: initialPermissions,
|
|
20
20
|
user: initialUser
|
|
21
21
|
}) {
|
|
22
|
-
const [user,
|
|
22
|
+
const [user, setUserInMemory] = useState(initialUser);
|
|
23
23
|
const [tokenInMemory, setTokenInMemory] = useState();
|
|
24
24
|
const [tokenExpiration, setTokenExpiration] = useState();
|
|
25
25
|
const pathname = usePathname();
|
|
@@ -50,6 +50,7 @@ export function AuthProvider({
|
|
|
50
50
|
} = useModal();
|
|
51
51
|
const [lastLocationChange, setLastLocationChange] = useState(0);
|
|
52
52
|
const debouncedLocationChange = useDebounce(lastLocationChange, 10000);
|
|
53
|
+
const refreshTokenTimeoutRef = React.useRef(null);
|
|
53
54
|
const id = user?.id;
|
|
54
55
|
const redirectToInactivityRoute = useCallback(() => {
|
|
55
56
|
if (window.location.pathname.startsWith(adminRoute)) {
|
|
@@ -69,13 +70,15 @@ export function AuthProvider({
|
|
|
69
70
|
const revokeTokenAndExpire = useCallback(() => {
|
|
70
71
|
setTokenInMemory(undefined);
|
|
71
72
|
setTokenExpiration(undefined);
|
|
73
|
+
clearTimeout(refreshTokenTimeoutRef.current);
|
|
72
74
|
}, []);
|
|
73
|
-
const
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
setTokenInMemory(token);
|
|
77
|
-
setTokenExpiration(
|
|
75
|
+
const setNewUser = useCallback(userResponse => {
|
|
76
|
+
if (userResponse?.user) {
|
|
77
|
+
setUserInMemory(userResponse.user);
|
|
78
|
+
setTokenInMemory(userResponse.token);
|
|
79
|
+
setTokenExpiration(userResponse.exp);
|
|
78
80
|
} else {
|
|
81
|
+
setUserInMemory(null);
|
|
79
82
|
revokeTokenAndExpire();
|
|
80
83
|
}
|
|
81
84
|
}, [revokeTokenAndExpire]);
|
|
@@ -83,20 +86,19 @@ export function AuthProvider({
|
|
|
83
86
|
const now = Math.round(new Date().getTime() / 1000);
|
|
84
87
|
const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now;
|
|
85
88
|
if (forceRefresh || tokenExpiration && remainingTime < 120) {
|
|
86
|
-
setTimeout(() => {
|
|
89
|
+
refreshTokenTimeoutRef.current = setTimeout(() => {
|
|
87
90
|
async function refresh() {
|
|
88
91
|
try {
|
|
89
|
-
const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
|
|
92
|
+
const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`, {
|
|
90
93
|
headers: {
|
|
91
94
|
'Accept-Language': i18n.language
|
|
92
95
|
}
|
|
93
96
|
});
|
|
94
97
|
if (request.status === 200) {
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
setTokenAndExpiration(json_0);
|
|
98
|
+
const json = await request.json();
|
|
99
|
+
setNewUser(json);
|
|
98
100
|
} else {
|
|
99
|
-
|
|
101
|
+
setNewUser(null);
|
|
100
102
|
redirectToInactivityRoute();
|
|
101
103
|
}
|
|
102
104
|
} catch (e) {
|
|
@@ -106,7 +108,10 @@ export function AuthProvider({
|
|
|
106
108
|
void refresh();
|
|
107
109
|
}, 1000);
|
|
108
110
|
}
|
|
109
|
-
|
|
111
|
+
return () => {
|
|
112
|
+
clearTimeout(refreshTokenTimeoutRef.current);
|
|
113
|
+
};
|
|
114
|
+
}, [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, tokenExpiration, userSlug]);
|
|
110
115
|
const refreshCookieAsync = useCallback(async skipSetUser => {
|
|
111
116
|
try {
|
|
112
117
|
const request_0 = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
|
|
@@ -115,30 +120,31 @@ export function AuthProvider({
|
|
|
115
120
|
}
|
|
116
121
|
});
|
|
117
122
|
if (request_0.status === 200) {
|
|
118
|
-
const
|
|
123
|
+
const json_0 = await request_0.json();
|
|
119
124
|
if (!skipSetUser) {
|
|
120
|
-
|
|
121
|
-
setTokenAndExpiration(json_1);
|
|
125
|
+
setNewUser(json_0);
|
|
122
126
|
}
|
|
123
|
-
return
|
|
127
|
+
return json_0.user;
|
|
124
128
|
}
|
|
125
|
-
|
|
129
|
+
setNewUser(null);
|
|
126
130
|
redirectToInactivityRoute();
|
|
127
131
|
return null;
|
|
128
132
|
} catch (e_0) {
|
|
129
133
|
toast.error(`Refreshing token failed: ${e_0.message}`);
|
|
130
134
|
return null;
|
|
131
135
|
}
|
|
132
|
-
}, [
|
|
136
|
+
}, [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug]);
|
|
133
137
|
const logOut = useCallback(async () => {
|
|
134
|
-
setUser(null);
|
|
135
|
-
revokeTokenAndExpire();
|
|
136
138
|
try {
|
|
137
139
|
await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`);
|
|
140
|
+
setNewUser(null);
|
|
141
|
+
revokeTokenAndExpire();
|
|
142
|
+
return true;
|
|
138
143
|
} catch (e_1) {
|
|
139
144
|
toast.error(`Logging out failed: ${e_1.message}`);
|
|
145
|
+
return false;
|
|
140
146
|
}
|
|
141
|
-
}, [serverURL,
|
|
147
|
+
}, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug]);
|
|
142
148
|
const refreshPermissions = useCallback(async ({
|
|
143
149
|
locale
|
|
144
150
|
} = {}) => {
|
|
@@ -154,8 +160,8 @@ export function AuthProvider({
|
|
|
154
160
|
}
|
|
155
161
|
});
|
|
156
162
|
if (request_1.status === 200) {
|
|
157
|
-
const
|
|
158
|
-
setPermissions(
|
|
163
|
+
const json_1 = await request_1.json();
|
|
164
|
+
setPermissions(json_1);
|
|
159
165
|
} else {
|
|
160
166
|
throw new Error(`Fetching permissions failed with status code ${request_1.status}`);
|
|
161
167
|
}
|
|
@@ -166,26 +172,22 @@ export function AuthProvider({
|
|
|
166
172
|
const fetchFullUser = React.useCallback(async () => {
|
|
167
173
|
try {
|
|
168
174
|
const request_2 = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {
|
|
175
|
+
credentials: 'include',
|
|
169
176
|
headers: {
|
|
170
177
|
'Accept-Language': i18n.language
|
|
171
178
|
}
|
|
172
179
|
});
|
|
173
180
|
if (request_2.status === 200) {
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
setTokenAndExpiration(json_3);
|
|
179
|
-
}
|
|
180
|
-
} else {
|
|
181
|
-
setUser(null);
|
|
182
|
-
revokeTokenAndExpire();
|
|
183
|
-
}
|
|
181
|
+
const json_2 = await request_2.json();
|
|
182
|
+
const user_0 = null;
|
|
183
|
+
setNewUser(json_2);
|
|
184
|
+
return user_0;
|
|
184
185
|
}
|
|
185
186
|
} catch (e_3) {
|
|
186
187
|
toast.error(`Fetching user failed: ${e_3.message}`);
|
|
187
188
|
}
|
|
188
|
-
|
|
189
|
+
return null;
|
|
190
|
+
}, [serverURL, apiRoute, userSlug, i18n.language, setNewUser]);
|
|
189
191
|
// On mount, get user and set
|
|
190
192
|
useEffect(() => {
|
|
191
193
|
void fetchFullUser();
|
|
@@ -196,45 +198,38 @@ export function AuthProvider({
|
|
|
196
198
|
refreshCookie();
|
|
197
199
|
}
|
|
198
200
|
}, [debouncedLocationChange, refreshCookie, id]);
|
|
199
|
-
// When initialUser changes, reset in state
|
|
200
|
-
useEffect(() => {
|
|
201
|
-
setUser(initialUser);
|
|
202
|
-
}, [initialUser]);
|
|
203
201
|
useEffect(() => {
|
|
204
202
|
setLastLocationChange(Date.now());
|
|
205
203
|
}, [pathname]);
|
|
206
204
|
useEffect(() => {
|
|
207
205
|
let reminder;
|
|
206
|
+
let forceLogOut;
|
|
208
207
|
const now_0 = Math.round(new Date().getTime() / 1000);
|
|
209
208
|
const remainingTime_0 = typeof tokenExpiration === 'number' ? tokenExpiration - now_0 : 0;
|
|
209
|
+
const remindInTimeFromNow = Math.max(Math.min((remainingTime_0 - 60) * 1000, maxTimeoutTime), 0);
|
|
210
|
+
const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime_0 * 1000, maxTimeoutTime), 0);
|
|
211
|
+
if (!user) {
|
|
212
|
+
clearTimeout(reminder);
|
|
213
|
+
clearTimeout(forceLogOut);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
210
216
|
if (remainingTime_0 > 0) {
|
|
211
217
|
reminder = setTimeout(() => {
|
|
212
218
|
openModal(stayLoggedInModalSlug);
|
|
213
|
-
},
|
|
219
|
+
}, remindInTimeFromNow);
|
|
220
|
+
forceLogOut = setTimeout(() => {
|
|
221
|
+
setNewUser(null);
|
|
222
|
+
}, forceLogOutInTimeFromNow);
|
|
214
223
|
}
|
|
215
224
|
return () => {
|
|
216
225
|
if (reminder) {
|
|
217
226
|
clearTimeout(reminder);
|
|
218
227
|
}
|
|
219
|
-
};
|
|
220
|
-
}, [tokenExpiration, openModal]);
|
|
221
|
-
useEffect(() => {
|
|
222
|
-
let forceLogOut;
|
|
223
|
-
const now_1 = Math.round(new Date().getTime() / 1000);
|
|
224
|
-
const remainingTime_1 = typeof tokenExpiration === 'number' ? tokenExpiration - now_1 : 0;
|
|
225
|
-
if (remainingTime_1 > 0) {
|
|
226
|
-
forceLogOut = setTimeout(() => {
|
|
227
|
-
setUser(null);
|
|
228
|
-
revokeTokenAndExpire();
|
|
229
|
-
redirectToInactivityRoute();
|
|
230
|
-
}, Math.max(Math.min(remainingTime_1 * 1000, maxTimeoutTime), 0));
|
|
231
|
-
}
|
|
232
|
-
return () => {
|
|
233
228
|
if (forceLogOut) {
|
|
234
229
|
clearTimeout(forceLogOut);
|
|
235
230
|
}
|
|
236
231
|
};
|
|
237
|
-
}, [tokenExpiration,
|
|
232
|
+
}, [tokenExpiration, openModal, i18n, setNewUser, user]);
|
|
238
233
|
return /*#__PURE__*/_jsx(Context.Provider, {
|
|
239
234
|
value: {
|
|
240
235
|
fetchFullUser,
|
|
@@ -244,7 +239,7 @@ export function AuthProvider({
|
|
|
244
239
|
refreshCookieAsync,
|
|
245
240
|
refreshPermissions,
|
|
246
241
|
setPermissions,
|
|
247
|
-
setUser,
|
|
242
|
+
setUser: setNewUser,
|
|
248
243
|
token: tokenInMemory,
|
|
249
244
|
user
|
|
250
245
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUser","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","setTokenAndExpiration","json","token","refreshedToken","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","reminder","max","min","clearTimeout","forceLogOut","_jsx","Provider","value","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, MeOperationResult, Permissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<void>\n logOut: () => Promise<void>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: T) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUser] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n }, [])\n\n const setTokenAndExpiration = useCallback(\n (json) => {\n const token = json?.token || json?.refreshedToken\n if (token && json?.exp) {\n setTokenInMemory(token)\n setTokenExpiration(json.exp)\n } else {\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setUser(json.user)\n\n setTokenAndExpiration(json)\n } else {\n setUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n },\n [\n tokenExpiration,\n serverURL,\n apiRoute,\n userSlug,\n i18n,\n redirectToInactivityRoute,\n setTokenAndExpiration,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setUser(json.user)\n setTokenAndExpiration(json)\n }\n return json.user\n }\n\n setUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [serverURL, apiRoute, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration],\n )\n\n const logOut = useCallback(async () => {\n setUser(null)\n revokeTokenAndExpire()\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n }\n }, [serverURL, apiRoute, userSlug, revokeTokenAndExpire])\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(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = 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(`${serverURL}${apiRoute}/${userSlug}/me`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: MeOperationResult = await request.json()\n\n if (json?.user) {\n setUser(json.user)\n\n if (json?.token) {\n setTokenAndExpiration(json)\n }\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n }, [serverURL, apiRoute, userSlug, i18n.language, setTokenAndExpiration, revokeTokenAndExpire])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n // When initialUser changes, reset in state\n useEffect(() => {\n setUser(initialUser)\n }, [initialUser])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n reminder = setTimeout(\n () => {\n openModal(stayLoggedInModalSlug)\n },\n Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime)),\n )\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n }\n }, [tokenExpiration, openModal])\n\n useEffect(() => {\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n forceLogOut = setTimeout(\n () => {\n setUser(null)\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n },\n Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0),\n )\n }\n\n return () => {\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, closeAllModals, i18n, redirectToInactivityRoute, revokeTokenAndExpire])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"AAAA;;;AAGA,SAASA,QAAQ,QAAQ;AACzB,SAASC,WAAW,EAAEC,SAAS,QAAQ;AACvC,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AACnF,SAASC,KAAK,QAAQ;AAEtB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAiB1B,MAAMC,OAAA,gBAAUZ,aAAA,CAAc,CAAC;AAE/B,MAAMa,cAAA,GAAiB;AAOvB,OAAO,SAASC,aAAa;EAC3BC,QAAQ;EACRC,WAAA,EAAaC,kBAAkB;EAC/BC,IAAA,EAAMC;AAAW,CACX;EACN,MAAM,CAACD,IAAA,EAAME,OAAA,CAAQ,GAAGhB,QAAA,CAA4Be,WAAA;EACpD,MAAM,CAACE,aAAA,EAAeC,gBAAA,CAAiB,GAAGlB,QAAA;EAC1C,MAAM,CAACmB,eAAA,EAAiBC,kBAAA,CAAmB,GAAGpB,QAAA;EAC9C,MAAMqB,QAAA,GAAW7B,WAAA;EACjB,MAAM8B,MAAA,GAAS7B,SAAA;EAEf,MAAM;IAAE8B;EAAM,CAAE,GAAGhB,SAAA;EAEnB,MAAM;IACJiB,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,UAAA,EAAYC;MAAqB,CAAE;MAC7Cb,IAAA,EAAMc;IAAQ,CACf;IACDH,MAAA,EAAQ;MAAED,KAAA,EAAOK,UAAU;MAAEC,GAAA,EAAKC;IAAQ,CAAE;IAC5CC;EAAS,CACV,GAAGT,MAAA;EAEJ,MAAM,CAACX,WAAA,EAAaqB,cAAA,CAAe,GAAGjC,QAAA,CAAsBa,kBAAA;EAE5D,MAAM;IAAEqB;EAAI,CAAE,GAAG9B,cAAA;EACjB,MAAM;IAAE+B,cAAc;IAAEC;EAAS,CAAE,GAAG7C,QAAA;EACtC,MAAM,CAAC8C,kBAAA,EAAoBC,qBAAA,CAAsB,GAAGtC,QAAA,CAAS;EAC7D,MAAMuC,uBAAA,GAA0BpC,WAAA,CAAYkC,kBAAA,EAAoB;EAEhE,MAAMG,EAAA,GAAK1B,IAAA,EAAM0B,EAAA;EAEjB,MAAMC,yBAAA,GAA4B5C,WAAA,CAAY;IAC5C,IAAI6C,MAAA,CAAOC,QAAQ,CAACtB,QAAQ,CAACuB,UAAU,CAACf,UAAA,GAAa;MACnD,MAAMgB,aAAA,GAAgB,aAAaC,kBAAA,CAAmBJ,MAAA,CAAOC,QAAQ,CAACtB,QAAQ,GAAG;MACjFC,MAAA,CAAOyB,OAAO,CACZzC,cAAA,CAAe;QACbuB,UAAA;QACAmB,IAAA,EAAM,GAAGrB,qBAAA,GAAwBkB,aAAA;MACnC;IAEJ,OAAO;MACLvB,MAAA,CAAOyB,OAAO,CACZzC,cAAA,CAAe;QACbuB,UAAA;QACAmB,IAAA,EAAMrB;MACR;IAEJ;IACAQ,cAAA;EACF,GAAG,CAACb,MAAA,EAAQO,UAAA,EAAYF,qBAAA,EAAuBQ,cAAA,CAAe;EAE9D,MAAMc,oBAAA,GAAuBpD,WAAA,CAAY;IACvCqB,gBAAA,CAAiBgC,SAAA;IACjB9B,kBAAA,CAAmB8B,SAAA;EACrB,GAAG,EAAE;EAEL,MAAMC,qBAAA,GAAwBtD,WAAA,CAC3BuD,IAAA;IACC,MAAMC,KAAA,GAAQD,IAAA,EAAMC,KAAA,IAASD,IAAA,EAAME,cAAA;IACnC,IAAID,KAAA,IAASD,IAAA,EAAMG,GAAA,EAAK;MACtBrC,gBAAA,CAAiBmC,KAAA;MACjBjC,kBAAA,CAAmBgC,IAAA,CAAKG,GAAG;IAC7B,OAAO;MACLN,oBAAA;IACF;EACF,GACA,CAACA,oBAAA,CAAqB;EAGxB,MAAMO,aAAA,GAAgB3D,WAAA,CACnB4D,YAAA;IACC,MAAMC,GAAA,GAAMC,IAAA,CAAKC,KAAK,CAAC,IAAIC,IAAA,GAAOC,OAAO,KAAK;IAC9C,MAAMC,aAAA,GAAgB,CAAC,OAAO5C,eAAA,KAAoB,WAAWA,eAAA,GAAkB,KAAKuC,GAAA;IAEpF,IAAID,YAAA,IAAiBtC,eAAA,IAAmB4C,aAAA,GAAgB,KAAM;MAC5DC,UAAA,CAAW;QACT,eAAeC,QAAA;UACb,IAAI;YACF,MAAMC,OAAA,GAAU,MAAM7D,QAAA,CAAS8D,IAAI,CACjC,GAAGnC,SAAA,GAAYD,QAAA,IAAYH,QAAA,gBAAwB,EACnD;cACEwC,OAAA,EAAS;gBACP,mBAAmBlC,IAAA,CAAKmC;cAC1B;YACF;YAGF,IAAIH,OAAA,CAAQI,MAAM,KAAK,KAAK;cAC1B,MAAMlB,MAAA,GAAO,MAAMc,OAAA,CAAQd,IAAI;cAC/BpC,OAAA,CAAQoC,MAAA,CAAKtC,IAAI;cAEjBqC,qBAAA,CAAsBC,MAAA;YACxB,OAAO;cACLpC,OAAA,CAAQ;cACRyB,yBAAA;YACF;UACF,EAAE,OAAO8B,CAAA,EAAG;YACVtE,KAAA,CAAMuE,KAAK,CAACD,CAAA,CAAEE,OAAO;UACvB;QACF;QAEA,KAAKR,OAAA;MACP,GAAG;IACL;EACF,GACA,CACE9C,eAAA,EACAa,SAAA,EACAD,QAAA,EACAH,QAAA,EACAM,IAAA,EACAO,yBAAA,EACAU,qBAAA,CACD;EAGH,MAAMuB,kBAAA,GAAqB7E,WAAA,CACzB,MAAO8E,WAAA;IACL,IAAI;MACF,MAAMT,SAAA,GAAU,MAAM7D,QAAA,CAAS8D,IAAI,CAAC,GAAGnC,SAAA,GAAYD,QAAA,IAAYH,QAAA,gBAAwB,EAAE;QACvFwC,OAAA,EAAS;UACP,mBAAmBlC,IAAA,CAAKmC;QAC1B;MACF;MAEA,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMlB,MAAA,GAAO,MAAMc,SAAA,CAAQd,IAAI;QAC/B,IAAI,CAACuB,WAAA,EAAa;UAChB3D,OAAA,CAAQoC,MAAA,CAAKtC,IAAI;UACjBqC,qBAAA,CAAsBC,MAAA;QACxB;QACA,OAAOA,MAAA,CAAKtC,IAAI;MAClB;MAEAE,OAAA,CAAQ;MACRyB,yBAAA;MACA,OAAO;IACT,EAAE,OAAO8B,GAAA,EAAG;MACVtE,KAAA,CAAMuE,KAAK,CAAC,4BAA4BD,GAAA,CAAEE,OAAO,EAAE;MACnD,OAAO;IACT;EACF,GACA,CAACzC,SAAA,EAAWD,QAAA,EAAUH,QAAA,EAAUM,IAAA,EAAMO,yBAAA,EAA2BU,qBAAA,CAAsB;EAGzF,MAAMyB,MAAA,GAAS/E,WAAA,CAAY;IACzBmB,OAAA,CAAQ;IACRiC,oBAAA;IACA,IAAI;MACF,MAAM5C,QAAA,CAAS8D,IAAI,CAAC,GAAGnC,SAAA,GAAYD,QAAA,IAAYH,QAAA,SAAiB;IAClE,EAAE,OAAO2C,GAAA,EAAG;MACVtE,KAAA,CAAMuE,KAAK,CAAC,uBAAuBD,GAAA,CAAEE,OAAO,EAAE;IAChD;EACF,GAAG,CAACzC,SAAA,EAAWD,QAAA,EAAUH,QAAA,EAAUqB,oBAAA,CAAqB;EAExD,MAAM4B,kBAAA,GAAqBhF,WAAA,CACzB,OAAO;IAAEiF;EAAM,CAAuB,GAAG,CAAC,CAAC;IACzC,MAAMC,MAAA,GAASrF,EAAA,CAAGsF,SAAS,CACzB;MACEF;IACF,GACA;MACEG,cAAA,EAAgB;IAClB;IAGF,IAAI;MACF,MAAMf,SAAA,GAAU,MAAM7D,QAAA,CAAS6E,GAAG,CAAC,GAAGlD,SAAA,GAAYD,QAAA,UAAkBgD,MAAA,EAAQ,EAAE;QAC5EX,OAAA,EAAS;UACP,mBAAmBlC,IAAA,CAAKmC;QAC1B;MACF;MAEA,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMlB,MAAA,GAAoB,MAAMc,SAAA,CAAQd,IAAI;QAC5CnB,cAAA,CAAemB,MAAA;MACjB,OAAO;QACL,MAAM,IAAI+B,KAAA,CAAM,gDAAgDjB,SAAA,CAAQI,MAAM,EAAE;MAClF;IACF,EAAE,OAAOC,GAAA,EAAG;MACVtE,KAAA,CAAMuE,KAAK,CAAC,kCAAkCD,GAAA,CAAEE,OAAO,EAAE;IAC3D;EACF,GACA,CAACzC,SAAA,EAAWD,QAAA,EAAUG,IAAA,CAAK;EAG7B,MAAMkD,aAAA,GAAgBzF,KAAA,CAAME,WAAW,CAAC;IACtC,IAAI;MACF,MAAMqE,SAAA,GAAU,MAAM7D,QAAA,CAAS6E,GAAG,CAAC,GAAGlD,SAAA,GAAYD,QAAA,IAAYH,QAAA,KAAa,EAAE;QAC3EwC,OAAA,EAAS;UACP,mBAAmBlC,IAAA,CAAKmC;QAC1B;MACF;MAEA,IAAIH,SAAA,CAAQI,MAAM,KAAK,KAAK;QAC1B,MAAMlB,MAAA,GAA0B,MAAMc,SAAA,CAAQd,IAAI;QAElD,IAAIA,MAAA,EAAMtC,IAAA,EAAM;UACdE,OAAA,CAAQoC,MAAA,CAAKtC,IAAI;UAEjB,IAAIsC,MAAA,EAAMC,KAAA,EAAO;YACfF,qBAAA,CAAsBC,MAAA;UACxB;QACF,OAAO;UACLpC,OAAA,CAAQ;UACRiC,oBAAA;QACF;MACF;IACF,EAAE,OAAOsB,GAAA,EAAG;MACVtE,KAAA,CAAMuE,KAAK,CAAC,yBAAyBD,GAAA,CAAEE,OAAO,EAAE;IAClD;EACF,GAAG,CAACzC,SAAA,EAAWD,QAAA,EAAUH,QAAA,EAAUM,IAAA,CAAKmC,QAAQ,EAAElB,qBAAA,EAAuBF,oBAAA,CAAqB;EAE9F;EACAlD,SAAA,CAAU;IACR,KAAKqF,aAAA;EACP,GAAG,CAACA,aAAA,CAAc;EAElB;EACArF,SAAA,CAAU;IACR,IAAIyC,EAAA,EAAI;MACNgB,aAAA;IACF;EACF,GAAG,CAACjB,uBAAA,EAAyBiB,aAAA,EAAehB,EAAA,CAAG;EAE/C;EACAzC,SAAA,CAAU;IACRiB,OAAA,CAAQD,WAAA;EACV,GAAG,CAACA,WAAA,CAAY;EAEhBhB,SAAA,CAAU;IACRuC,qBAAA,CAAsBuB,IAAA,CAAKH,GAAG;EAChC,GAAG,CAACrC,QAAA,CAAS;EAEbtB,SAAA,CAAU;IACR,IAAIsF,QAAA;IACJ,MAAM3B,KAAA,GAAMC,IAAA,CAAKC,KAAK,CAAC,IAAIC,IAAA,GAAOC,OAAO,KAAK;IAC9C,MAAMC,eAAA,GAAgB,OAAO5C,eAAA,KAAoB,WAAWA,eAAA,GAAkBuC,KAAA,GAAM;IAEpF,IAAIK,eAAA,GAAgB,GAAG;MACrBsB,QAAA,GAAWrB,UAAA,CACT;QACE5B,SAAA,CAAUlC,qBAAA;MACZ,GACAyD,IAAA,CAAK2B,GAAG,CAAC3B,IAAA,CAAK4B,GAAG,CAAC,CAACxB,eAAA,GAAgB,EAAC,IAAK,MAAMtD,cAAA;IAEnD;IAEA,OAAO;MACL,IAAI4E,QAAA,EAAU;QACZG,YAAA,CAAaH,QAAA;MACf;IACF;EACF,GAAG,CAAClE,eAAA,EAAiBiB,SAAA,CAAU;EAE/BrC,SAAA,CAAU;IACR,IAAI0F,WAAA;IACJ,MAAM/B,KAAA,GAAMC,IAAA,CAAKC,KAAK,CAAC,IAAIC,IAAA,GAAOC,OAAO,KAAK;IAC9C,MAAMC,eAAA,GAAgB,OAAO5C,eAAA,KAAoB,WAAWA,eAAA,GAAkBuC,KAAA,GAAM;IAEpF,IAAIK,eAAA,GAAgB,GAAG;MACrB0B,WAAA,GAAczB,UAAA,CACZ;QACEhD,OAAA,CAAQ;QACRiC,oBAAA;QACAR,yBAAA;MACF,GACAkB,IAAA,CAAK2B,GAAG,CAAC3B,IAAA,CAAK4B,GAAG,CAACxB,eAAA,GAAgB,MAAMtD,cAAA,GAAiB;IAE7D;IAEA,OAAO;MACL,IAAIgF,WAAA,EAAa;QACfD,YAAA,CAAaC,WAAA;MACf;IACF;EACF,GAAG,CAACtE,eAAA,EAAiBgB,cAAA,EAAgBD,IAAA,EAAMO,yBAAA,EAA2BQ,oBAAA,CAAqB;EAE3F,oBACEyC,IAAA,CAAClF,OAAA,CAAQmF,QAAQ;IACfC,KAAA,EAAO;MACLR,aAAA;MACAR,MAAA;MACAhE,WAAA;MACA4C,aAAA;MACAkB,kBAAA;MACAG,kBAAA;MACA5C,cAAA;MACAjB,OAAA;MACAqC,KAAA,EAAOpC,aAAA;MACPH;IACF;cAECH;;AAGP;AAEA,OAAO,MAAMkF,OAAA,GAAUA,CAAA;EAAA,OAAuC/F,UAAA,CAAAU,OAAW;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","Provider","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, Permissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug])\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(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = 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(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n const user = null\n\n setNewUser(json)\n return user\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 // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/collections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EAErB,aAAa,EACb,SAAS,EAET,OAAO,EACP,yBAAyB,EAI1B,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"collections.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/collections.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EAErB,aAAa,EACb,SAAS,EAET,OAAO,EACP,yBAAyB,EAI1B,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA+B9B,eAAO,MAAM,4BAA4B,yHAStC;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,UAAU,EAAE,yBAAyB,CAAA;IACrC,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACxC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACzC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,sBA6TH,CAAA;AAED,eAAO,MAAM,6BAA6B,2HASvC;IACD,iBAAiB,EAAE,sBAAsB,EAAE,CAAA;IAC3C,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IACxC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,CAAA;IACzC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,sBAAsB,EAiBzB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { deepCopyObjectSimple } from 'payload';
|
|
2
2
|
import { createClientFields } from './fields.js';
|
|
3
|
-
const serverOnlyCollectionProperties = ['hooks', 'access', 'endpoints', 'custom'];
|
|
3
|
+
const serverOnlyCollectionProperties = ['hooks', 'access', 'endpoints', 'custom', 'joins'];
|
|
4
4
|
const serverOnlyUploadProperties = ['adminThumbnail', 'externalFileHeaderFilter', 'handlers', 'modifyResponseHeaders', 'withMetadata'];
|
|
5
5
|
const serverOnlyCollectionAdminProperties = ['hidden', 'preview'];
|
|
6
6
|
export const createClientCollectionConfig = ({
|
|
@@ -117,6 +117,16 @@ export const createClientCollectionConfig = ({
|
|
|
117
117
|
}
|
|
118
118
|
}, undefined, 'collection.admin.components.Description');
|
|
119
119
|
}
|
|
120
|
+
// Ensure that the label in Edit view is a string, translate it if it's a function
|
|
121
|
+
if (collection?.admin?.components?.views?.edit) {
|
|
122
|
+
Object.entries(collection?.admin?.components?.views?.edit).forEach(([key, view]) => {
|
|
123
|
+
if ('tab' in view && 'label' in view.tab && typeof view.tab.label === 'function') {
|
|
124
|
+
collection.admin.components.views.edit[key].tab.label = view.tab.label({
|
|
125
|
+
t: i18n.t
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
120
130
|
clientCollection.admin.components.views = collection?.admin?.components?.views ? deepCopyObjectSimple(collection?.admin?.components?.views) : {};
|
|
121
131
|
const hasEditView = 'admin' in collection && 'components' in collection.admin && 'views' in collection.admin.components && 'edit' in collection.admin.components.views && 'default' in collection.admin.components.views.edit;
|
|
122
132
|
if (!clientCollection.admin.components.views.edit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collections.js","names":["deepCopyObjectSimple","createClientFields","serverOnlyCollectionProperties","serverOnlyUploadProperties","serverOnlyCollectionAdminProperties","createClientCollectionConfig","clientCollection","collection","createMappedComponent","DefaultEditView","DefaultListView","i18n","importMap","payload","fields","clientFields","forEach","key","upload","imageSizes","length","map","size","sanitizedSize","generateImageName","auth","strategies","forgotPassword","verify","labels","Object","entries","labelType","collectionLabel","t","admin","preview","_isPreviewEnabled","components","edit","PreviewButton","undefined","PublishButton","SaveButton","SaveDraftButton","Upload","beforeList","Component","beforeListTable","afterList","afterListTable","description","Description","clientProps","views","hasEditView","default","collectionSlug","slug","view","actions","hasListView","list","livePreview","url","createClientCollectionConfigs","clientCollections","collections","i"],"sources":["../../../../src/providers/Config/createClientConfig/collections.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminViewProps,\n ClientCollectionConfig,\n CreateMappedComponent,\n EditViewConfig,\n EditViewProps,\n ImportMap,\n MappedView,\n Payload,\n SanitizedCollectionConfig,\n ServerOnlyCollectionAdminProperties,\n ServerOnlyCollectionProperties,\n ServerOnlyUploadProperties,\n} from 'payload'\nimport type React from 'react'\n\nimport { deepCopyObjectSimple } from 'payload'\n\nimport { createClientFields } from './fields.js'\n\nconst serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n 'custom',\n // `upload`\n // `admin`\n // are all handled separately\n]\n\nconst serverOnlyUploadProperties: Partial<ServerOnlyUploadProperties>[] = [\n 'adminThumbnail',\n 'externalFileHeaderFilter',\n 'handlers',\n 'modifyResponseHeaders',\n 'withMetadata',\n]\n\nconst serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'hidden',\n 'preview',\n // `livePreview` is handled separately\n]\n\nexport const createClientCollectionConfig = ({\n clientCollection,\n collection,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n}: {\n clientCollection: ClientCollectionConfig\n collection: SanitizedCollectionConfig\n createMappedComponent: CreateMappedComponent\n DefaultEditView: React.FC<EditViewProps>\n DefaultListView: React.FC<AdminViewProps>\n i18n: I18nClient\n importMap: ImportMap\n payload: Payload\n}): ClientCollectionConfig => {\n clientCollection.fields = createClientFields({\n clientFields: clientCollection.fields,\n createMappedComponent,\n fields: collection.fields,\n i18n,\n importMap,\n payload,\n })\n\n serverOnlyCollectionProperties.forEach((key) => {\n if (key in clientCollection) {\n delete clientCollection[key]\n }\n })\n\n if ('upload' in clientCollection && typeof clientCollection.upload === 'object') {\n serverOnlyUploadProperties.forEach((key) => {\n if (key in clientCollection.upload) {\n delete clientCollection.upload[key]\n }\n })\n\n if ('imageSizes' in clientCollection.upload && clientCollection.upload.imageSizes.length) {\n clientCollection.upload.imageSizes = clientCollection.upload.imageSizes.map((size) => {\n const sanitizedSize = { ...size }\n if ('generateImageName' in sanitizedSize) {\n delete sanitizedSize.generateImageName\n }\n return sanitizedSize\n })\n }\n }\n\n if ('auth' in clientCollection && typeof clientCollection.auth === 'object') {\n delete clientCollection.auth.strategies\n delete clientCollection.auth.forgotPassword\n delete clientCollection.auth.verify\n }\n\n if (collection.labels) {\n Object.entries(collection.labels).forEach(([labelType, collectionLabel]) => {\n if (typeof collectionLabel === 'function') {\n clientCollection.labels[labelType] = collectionLabel({ t: i18n.t })\n }\n })\n }\n\n serverOnlyCollectionAdminProperties.forEach((key) => {\n if (key in clientCollection.admin) {\n delete clientCollection.admin[key]\n }\n })\n\n if (collection.admin.preview) {\n clientCollection._isPreviewEnabled = true\n }\n\n clientCollection.admin.components = {} as ClientCollectionConfig['admin']['components']\n\n if (collection?.admin?.components) {\n if (collection.admin.components?.edit) {\n clientCollection.admin.components.edit =\n {} as ClientCollectionConfig['admin']['components']['edit']\n\n if (collection.admin.components.edit?.PreviewButton) {\n clientCollection.admin.components.edit.PreviewButton = createMappedComponent(\n collection.admin.components.edit.PreviewButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.PreviewButton',\n )\n }\n\n if (collection.admin.components.edit?.PublishButton) {\n clientCollection.admin.components.edit.PublishButton = createMappedComponent(\n collection.admin.components.edit.PublishButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.PublishButton',\n )\n }\n\n if (collection.admin.components.edit?.SaveButton) {\n clientCollection.admin.components.edit.SaveButton = createMappedComponent(\n collection.admin.components.edit.SaveButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.SaveButton',\n )\n }\n\n if (collection.admin.components.edit?.SaveDraftButton) {\n clientCollection.admin.components.edit.SaveDraftButton = createMappedComponent(\n collection.admin.components.edit.SaveDraftButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.SaveDraftButton',\n )\n }\n\n if (collection.admin.components.edit?.Upload) {\n clientCollection.admin.components.edit.Upload = createMappedComponent(\n collection.admin.components.edit.Upload,\n undefined,\n undefined,\n 'collection.admin.components.edit.Upload',\n )\n }\n }\n\n if (collection.admin.components?.beforeList) {\n clientCollection.admin.components.beforeList = collection.admin.components.beforeList.map(\n (Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.beforeList',\n ),\n )\n }\n\n if (collection.admin.components?.beforeListTable) {\n clientCollection.admin.components.beforeListTable =\n collection.admin.components.beforeListTable.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.beforeListTable',\n ),\n )\n }\n\n if (collection.admin.components?.afterList) {\n clientCollection.admin.components.afterList = collection.admin.components.afterList.map(\n (Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.afterList',\n ),\n )\n }\n\n if (collection.admin.components?.afterListTable) {\n clientCollection.admin.components.afterListTable =\n collection.admin.components.afterListTable.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.afterListTable',\n ),\n )\n }\n }\n\n let description = undefined\n\n if (collection.admin?.description) {\n if (\n typeof collection.admin?.description === 'string' ||\n typeof collection.admin?.description === 'object'\n ) {\n description = collection.admin.description\n } else if (typeof collection.admin?.description === 'function') {\n description = collection.admin?.description({ t: i18n.t })\n }\n }\n\n clientCollection.admin.description = description\n\n if (collection.admin.components?.Description) {\n clientCollection.admin.components.Description = createMappedComponent(\n collection.admin.components.Description,\n {\n clientProps: {\n description,\n },\n },\n undefined,\n 'collection.admin.components.Description',\n )\n }\n\n clientCollection.admin.components.views = (\n collection?.admin?.components?.views\n ? deepCopyObjectSimple(collection?.admin?.components?.views)\n : {}\n ) as ClientCollectionConfig['admin']['components']['views']\n\n const hasEditView =\n 'admin' in collection &&\n 'components' in collection.admin &&\n 'views' in collection.admin.components &&\n 'edit' in collection.admin.components.views &&\n 'default' in collection.admin.components.views.edit\n\n if (!clientCollection.admin.components.views.edit) {\n clientCollection.admin.components.views.edit =\n {} as ClientCollectionConfig['admin']['components']['views']['edit']\n }\n\n clientCollection.admin.components.views.edit.default = {\n Component: createMappedComponent(\n hasEditView &&\n 'Component' in collection.admin.components.views.edit.default &&\n collection.admin.components.views.edit.default.Component\n ? collection.admin.components.views.edit.default.Component\n : null,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n DefaultEditView,\n 'collection.admin.components.views.edit.default',\n ),\n }\n\n if (collection?.admin?.components?.views?.edit) {\n for (const key in collection.admin.components.views.edit) {\n const view: EditViewConfig = collection.admin.components.views.edit[key]\n\n if (!clientCollection.admin.components.views.edit[key]) {\n clientCollection.admin.components.views.edit[key] = {} as MappedView\n }\n\n if ('Component' in view && key !== 'default') {\n clientCollection.admin.components.views.edit[key].Component = createMappedComponent(\n view.Component,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n undefined,\n 'collection.admin.components.views.edit.key.Component',\n )\n }\n\n if ('actions' in view && view.actions?.length) {\n clientCollection.admin.components.views.edit[key].actions = view.actions.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.views.key.admin',\n ),\n )\n }\n }\n }\n\n const hasListView =\n 'admin' in collection &&\n 'components' in collection.admin &&\n 'views' in collection.admin.components &&\n 'list' in collection.admin.components.views\n\n if (!clientCollection.admin.components.views.list) {\n clientCollection.admin.components.views.list =\n {} as ClientCollectionConfig['admin']['components']['views']['list']\n }\n\n clientCollection.admin.components.views.list.Component = createMappedComponent(\n hasListView &&\n 'Component' in collection.admin.components.views.list &&\n collection.admin.components.views.list.Component\n ? collection.admin.components.views.list.Component\n : null,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n DefaultListView,\n 'collection.admin.components.views.list',\n )\n\n if (\n hasListView &&\n 'actions' in collection.admin.components.views.list &&\n collection.admin.components.views.list.actions\n ) {\n clientCollection.admin.components.views.list.actions =\n collection.admin.components.views.list.actions.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.views.list',\n ),\n )\n }\n\n if (\n 'livePreview' in clientCollection.admin &&\n clientCollection.admin.livePreview &&\n 'url' in clientCollection.admin.livePreview\n ) {\n delete clientCollection.admin.livePreview.url\n }\n\n return clientCollection\n}\n\nexport const createClientCollectionConfigs = ({\n clientCollections,\n collections,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n}: {\n clientCollections: ClientCollectionConfig[]\n collections: SanitizedCollectionConfig[]\n createMappedComponent: CreateMappedComponent\n DefaultEditView: React.FC<EditViewProps>\n DefaultListView: React.FC<AdminViewProps>\n i18n: I18nClient\n importMap: ImportMap\n payload: Payload\n}): ClientCollectionConfig[] => {\n for (let i = 0; i < collections.length; i++) {\n const collection = collections[i]\n const clientCollection = clientCollections[i]\n clientCollections[i] = createClientCollectionConfig({\n clientCollection,\n collection,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n })\n }\n\n return clientCollections\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"collections.js","names":["deepCopyObjectSimple","createClientFields","serverOnlyCollectionProperties","serverOnlyUploadProperties","serverOnlyCollectionAdminProperties","createClientCollectionConfig","clientCollection","collection","createMappedComponent","DefaultEditView","DefaultListView","i18n","importMap","payload","fields","clientFields","forEach","key","upload","imageSizes","length","map","size","sanitizedSize","generateImageName","auth","strategies","forgotPassword","verify","labels","Object","entries","labelType","collectionLabel","t","admin","preview","_isPreviewEnabled","components","edit","PreviewButton","undefined","PublishButton","SaveButton","SaveDraftButton","Upload","beforeList","Component","beforeListTable","afterList","afterListTable","description","Description","clientProps","views","view","tab","label","hasEditView","default","collectionSlug","slug","actions","hasListView","list","livePreview","url","createClientCollectionConfigs","clientCollections","collections","i"],"sources":["../../../../src/providers/Config/createClientConfig/collections.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminViewProps,\n ClientCollectionConfig,\n CreateMappedComponent,\n EditViewConfig,\n EditViewProps,\n ImportMap,\n MappedView,\n Payload,\n SanitizedCollectionConfig,\n ServerOnlyCollectionAdminProperties,\n ServerOnlyCollectionProperties,\n ServerOnlyUploadProperties,\n} from 'payload'\nimport type React from 'react'\n\nimport { deepCopyObjectSimple } from 'payload'\n\nimport { createClientFields } from './fields.js'\n\nconst serverOnlyCollectionProperties: Partial<ServerOnlyCollectionProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n 'custom',\n 'joins',\n // `upload`\n // `admin`\n // are all handled separately\n]\n\nconst serverOnlyUploadProperties: Partial<ServerOnlyUploadProperties>[] = [\n 'adminThumbnail',\n 'externalFileHeaderFilter',\n 'handlers',\n 'modifyResponseHeaders',\n 'withMetadata',\n]\n\nconst serverOnlyCollectionAdminProperties: Partial<ServerOnlyCollectionAdminProperties>[] = [\n 'hidden',\n 'preview',\n // `livePreview` is handled separately\n]\n\nexport const createClientCollectionConfig = ({\n clientCollection,\n collection,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n}: {\n clientCollection: ClientCollectionConfig\n collection: SanitizedCollectionConfig\n createMappedComponent: CreateMappedComponent\n DefaultEditView: React.FC<EditViewProps>\n DefaultListView: React.FC<AdminViewProps>\n i18n: I18nClient\n importMap: ImportMap\n payload: Payload\n}): ClientCollectionConfig => {\n clientCollection.fields = createClientFields({\n clientFields: clientCollection.fields,\n createMappedComponent,\n fields: collection.fields,\n i18n,\n importMap,\n payload,\n })\n\n serverOnlyCollectionProperties.forEach((key) => {\n if (key in clientCollection) {\n delete clientCollection[key]\n }\n })\n\n if ('upload' in clientCollection && typeof clientCollection.upload === 'object') {\n serverOnlyUploadProperties.forEach((key) => {\n if (key in clientCollection.upload) {\n delete clientCollection.upload[key]\n }\n })\n\n if ('imageSizes' in clientCollection.upload && clientCollection.upload.imageSizes.length) {\n clientCollection.upload.imageSizes = clientCollection.upload.imageSizes.map((size) => {\n const sanitizedSize = { ...size }\n if ('generateImageName' in sanitizedSize) {\n delete sanitizedSize.generateImageName\n }\n return sanitizedSize\n })\n }\n }\n\n if ('auth' in clientCollection && typeof clientCollection.auth === 'object') {\n delete clientCollection.auth.strategies\n delete clientCollection.auth.forgotPassword\n delete clientCollection.auth.verify\n }\n\n if (collection.labels) {\n Object.entries(collection.labels).forEach(([labelType, collectionLabel]) => {\n if (typeof collectionLabel === 'function') {\n clientCollection.labels[labelType] = collectionLabel({ t: i18n.t })\n }\n })\n }\n\n serverOnlyCollectionAdminProperties.forEach((key) => {\n if (key in clientCollection.admin) {\n delete clientCollection.admin[key]\n }\n })\n\n if (collection.admin.preview) {\n clientCollection._isPreviewEnabled = true\n }\n\n clientCollection.admin.components = {} as ClientCollectionConfig['admin']['components']\n\n if (collection?.admin?.components) {\n if (collection.admin.components?.edit) {\n clientCollection.admin.components.edit =\n {} as ClientCollectionConfig['admin']['components']['edit']\n\n if (collection.admin.components.edit?.PreviewButton) {\n clientCollection.admin.components.edit.PreviewButton = createMappedComponent(\n collection.admin.components.edit.PreviewButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.PreviewButton',\n )\n }\n\n if (collection.admin.components.edit?.PublishButton) {\n clientCollection.admin.components.edit.PublishButton = createMappedComponent(\n collection.admin.components.edit.PublishButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.PublishButton',\n )\n }\n\n if (collection.admin.components.edit?.SaveButton) {\n clientCollection.admin.components.edit.SaveButton = createMappedComponent(\n collection.admin.components.edit.SaveButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.SaveButton',\n )\n }\n\n if (collection.admin.components.edit?.SaveDraftButton) {\n clientCollection.admin.components.edit.SaveDraftButton = createMappedComponent(\n collection.admin.components.edit.SaveDraftButton,\n undefined,\n undefined,\n 'collection.admin.components.edit.SaveDraftButton',\n )\n }\n\n if (collection.admin.components.edit?.Upload) {\n clientCollection.admin.components.edit.Upload = createMappedComponent(\n collection.admin.components.edit.Upload,\n undefined,\n undefined,\n 'collection.admin.components.edit.Upload',\n )\n }\n }\n\n if (collection.admin.components?.beforeList) {\n clientCollection.admin.components.beforeList = collection.admin.components.beforeList.map(\n (Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.beforeList',\n ),\n )\n }\n\n if (collection.admin.components?.beforeListTable) {\n clientCollection.admin.components.beforeListTable =\n collection.admin.components.beforeListTable.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.beforeListTable',\n ),\n )\n }\n\n if (collection.admin.components?.afterList) {\n clientCollection.admin.components.afterList = collection.admin.components.afterList.map(\n (Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.afterList',\n ),\n )\n }\n\n if (collection.admin.components?.afterListTable) {\n clientCollection.admin.components.afterListTable =\n collection.admin.components.afterListTable.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.afterListTable',\n ),\n )\n }\n }\n\n let description = undefined\n\n if (collection.admin?.description) {\n if (\n typeof collection.admin?.description === 'string' ||\n typeof collection.admin?.description === 'object'\n ) {\n description = collection.admin.description\n } else if (typeof collection.admin?.description === 'function') {\n description = collection.admin?.description({ t: i18n.t })\n }\n }\n\n clientCollection.admin.description = description\n\n if (collection.admin.components?.Description) {\n clientCollection.admin.components.Description = createMappedComponent(\n collection.admin.components.Description,\n {\n clientProps: {\n description,\n },\n },\n undefined,\n 'collection.admin.components.Description',\n )\n }\n\n // Ensure that the label in Edit view is a string, translate it if it's a function\n if (collection?.admin?.components?.views?.edit) {\n Object.entries(collection?.admin?.components?.views?.edit).forEach(([key, view]) => {\n if ('tab' in view && 'label' in view.tab && typeof view.tab.label === 'function') {\n collection.admin.components.views.edit[key].tab.label = view.tab.label({ t: i18n.t })\n }\n })\n }\n\n clientCollection.admin.components.views = (\n collection?.admin?.components?.views\n ? deepCopyObjectSimple(collection?.admin?.components?.views)\n : {}\n ) as ClientCollectionConfig['admin']['components']['views']\n\n const hasEditView =\n 'admin' in collection &&\n 'components' in collection.admin &&\n 'views' in collection.admin.components &&\n 'edit' in collection.admin.components.views &&\n 'default' in collection.admin.components.views.edit\n\n if (!clientCollection.admin.components.views.edit) {\n clientCollection.admin.components.views.edit =\n {} as ClientCollectionConfig['admin']['components']['views']['edit']\n }\n\n clientCollection.admin.components.views.edit.default = {\n Component: createMappedComponent(\n hasEditView &&\n 'Component' in collection.admin.components.views.edit.default &&\n collection.admin.components.views.edit.default.Component\n ? collection.admin.components.views.edit.default.Component\n : null,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n DefaultEditView,\n 'collection.admin.components.views.edit.default',\n ),\n }\n\n if (collection?.admin?.components?.views?.edit) {\n for (const key in collection.admin.components.views.edit) {\n const view: EditViewConfig = collection.admin.components.views.edit[key]\n\n if (!clientCollection.admin.components.views.edit[key]) {\n clientCollection.admin.components.views.edit[key] = {} as MappedView\n }\n\n if ('Component' in view && key !== 'default') {\n clientCollection.admin.components.views.edit[key].Component = createMappedComponent(\n view.Component,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n undefined,\n 'collection.admin.components.views.edit.key.Component',\n )\n }\n\n if ('actions' in view && view.actions?.length) {\n clientCollection.admin.components.views.edit[key].actions = view.actions.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.views.key.admin',\n ),\n )\n }\n }\n }\n\n const hasListView =\n 'admin' in collection &&\n 'components' in collection.admin &&\n 'views' in collection.admin.components &&\n 'list' in collection.admin.components.views\n\n if (!clientCollection.admin.components.views.list) {\n clientCollection.admin.components.views.list =\n {} as ClientCollectionConfig['admin']['components']['views']['list']\n }\n\n clientCollection.admin.components.views.list.Component = createMappedComponent(\n hasListView &&\n 'Component' in collection.admin.components.views.list &&\n collection.admin.components.views.list.Component\n ? collection.admin.components.views.list.Component\n : null,\n {\n clientProps: {\n collectionSlug: collection.slug,\n },\n },\n DefaultListView,\n 'collection.admin.components.views.list',\n )\n\n if (\n hasListView &&\n 'actions' in collection.admin.components.views.list &&\n collection.admin.components.views.list.actions\n ) {\n clientCollection.admin.components.views.list.actions =\n collection.admin.components.views.list.actions.map((Component) =>\n createMappedComponent(\n Component,\n undefined,\n undefined,\n 'collection.admin.components.views.list',\n ),\n )\n }\n\n if (\n 'livePreview' in clientCollection.admin &&\n clientCollection.admin.livePreview &&\n 'url' in clientCollection.admin.livePreview\n ) {\n delete clientCollection.admin.livePreview.url\n }\n\n return clientCollection\n}\n\nexport const createClientCollectionConfigs = ({\n clientCollections,\n collections,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n}: {\n clientCollections: ClientCollectionConfig[]\n collections: SanitizedCollectionConfig[]\n createMappedComponent: CreateMappedComponent\n DefaultEditView: React.FC<EditViewProps>\n DefaultListView: React.FC<AdminViewProps>\n i18n: I18nClient\n importMap: ImportMap\n payload: Payload\n}): ClientCollectionConfig[] => {\n for (let i = 0; i < collections.length; i++) {\n const collection = collections[i]\n const clientCollection = clientCollections[i]\n clientCollections[i] = createClientCollectionConfig({\n clientCollection,\n collection,\n createMappedComponent,\n DefaultEditView,\n DefaultListView,\n i18n,\n importMap,\n payload,\n })\n }\n\n return clientCollections\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,EAYR,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,iBAAiB,wGAQ3B;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAqeH,CAAA;AAED,eAAO,MAAM,kBAAkB,4GAS5B;IACD,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAAW,EAyCd,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MissingEditorProp } from 'payload';
|
|
1
|
+
import { deepCopyObjectSimple, MissingEditorProp } from 'payload';
|
|
2
2
|
import { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared';
|
|
3
3
|
import { getComponent } from './getComponent.js';
|
|
4
4
|
function generateFieldPath(parentPath, name) {
|
|
@@ -151,8 +151,26 @@ export const createClientField = ({
|
|
|
151
151
|
if (!field.admin.components) {
|
|
152
152
|
field.admin.components = {};
|
|
153
153
|
}
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
/**
|
|
155
|
+
* We have to deep copy all the props we send to the client (= FieldComponent.clientProps).
|
|
156
|
+
* That way, every editor's field / cell props we send to the client have their own object references.
|
|
157
|
+
*
|
|
158
|
+
* If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields
|
|
159
|
+
* reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since
|
|
160
|
+
* a newer Next.js update that made it break when sending the same object reference to the client twice.
|
|
161
|
+
*
|
|
162
|
+
* We can use deepCopyObjectSimple as client props should be JSON-serializable.
|
|
163
|
+
*/
|
|
164
|
+
const FieldComponent = incomingField.editor.FieldComponent;
|
|
165
|
+
if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {
|
|
166
|
+
FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps);
|
|
167
|
+
}
|
|
168
|
+
field.admin.components.Field = createMappedComponent(FieldComponent, serverProps, undefined, 'incomingField.editor.FieldComponent');
|
|
169
|
+
const CellComponent = incomingField.editor.CellComponent;
|
|
170
|
+
if (typeof CellComponent === 'object' && CellComponent.clientProps) {
|
|
171
|
+
CellComponent.clientProps = deepCopyObjectSimple(CellComponent.clientProps);
|
|
172
|
+
}
|
|
173
|
+
field.admin.components.Cell = createMappedComponent(CellComponent, serverProps, undefined, 'incomingField.editor.CellComponent');
|
|
156
174
|
if (incomingField.editor.generateComponentMap) {
|
|
157
175
|
const {
|
|
158
176
|
Component: generateComponentMap,
|
|
@@ -205,6 +223,9 @@ export const createClientField = ({
|
|
|
205
223
|
}
|
|
206
224
|
break;
|
|
207
225
|
}
|
|
226
|
+
// case 'joins': {
|
|
227
|
+
//
|
|
228
|
+
// }
|
|
208
229
|
case 'select':
|
|
209
230
|
case 'radio':
|
|
210
231
|
{
|