@payloadcms/ui 4.0.0-internal.532221d → 4.0.0-internal.567a487
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AppHeader/index.css +5 -0
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +3 -0
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +1 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +45 -32
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +3 -0
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BranchSelector/NewBranchModal/index.css +46 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +12 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +1 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.js +174 -0
- package/dist/elements/BranchSelector/NewBranchModal/index.js.map +1 -0
- package/dist/elements/BranchSelector/index.css +172 -0
- package/dist/elements/BranchSelector/index.d.ts +13 -0
- package/dist/elements/BranchSelector/index.d.ts.map +1 -0
- package/dist/elements/BranchSelector/index.js +255 -0
- package/dist/elements/BranchSelector/index.js.map +1 -0
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/Button/index.css +2 -2
- package/dist/elements/ChangeSummary/index.css +18 -0
- package/dist/elements/ChangeSummary/index.d.ts +28 -0
- package/dist/elements/ChangeSummary/index.d.ts.map +1 -0
- package/dist/elements/ChangeSummary/index.js +147 -0
- package/dist/elements/ChangeSummary/index.js.map +1 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
- package/dist/elements/ColumnSelection/Popup.js +3 -3
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/Combobox/index.css +84 -23
- package/dist/elements/Combobox/index.d.ts +21 -0
- package/dist/elements/Combobox/index.d.ts.map +1 -1
- package/dist/elements/Combobox/index.js +66 -21
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +9 -2
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +4 -1
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.css +5 -3
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +12 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +12 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +83 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +14 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +28 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +1 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +32 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/Drawer/index.css +10 -4
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +6 -1
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +4 -1
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +3 -0
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
- package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
- package/dist/elements/IDLabel/index.css +6 -0
- package/dist/elements/IDLabel/index.d.ts +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +16 -21
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/MergeBranch/context.d.ts +67 -0
- package/dist/elements/MergeBranch/context.d.ts.map +1 -0
- package/dist/elements/MergeBranch/context.js +47 -0
- package/dist/elements/MergeBranch/context.js.map +1 -0
- package/dist/elements/MergeBranch/index.css +136 -0
- package/dist/elements/MergeBranch/index.d.ts +15 -0
- package/dist/elements/MergeBranch/index.d.ts.map +1 -0
- package/dist/elements/MergeBranch/index.js +545 -0
- package/dist/elements/MergeBranch/index.js.map +1 -0
- package/dist/elements/MergeBranch/provider.d.ts +12 -0
- package/dist/elements/MergeBranch/provider.d.ts.map +1 -0
- package/dist/elements/MergeBranch/provider.js +19 -0
- package/dist/elements/MergeBranch/provider.js.map +1 -0
- package/dist/elements/MergeBranch/slug.d.ts +9 -0
- package/dist/elements/MergeBranch/slug.d.ts.map +1 -0
- package/dist/elements/MergeBranch/slug.js +8 -0
- package/dist/elements/MergeBranch/slug.js.map +1 -0
- package/dist/elements/Nav/context.js +2 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts +6 -0
- package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
- package/dist/elements/Nav/getNavPrefs.js +14 -46
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/NavGroup/index.js +1 -1
- package/dist/elements/NavGroup/index.js.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
- package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
- package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.css +1 -1
- package/dist/elements/Popup/index.js +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +6 -2
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +4 -1
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +5 -2
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RestoreButton/index.d.ts.map +1 -1
- package/dist/elements/RestoreButton/index.js +4 -1
- package/dist/elements/RestoreButton/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.d.ts.map +1 -1
- package/dist/elements/RestoreMany/index.js +3 -0
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +15 -2
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +7 -1
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/SortHeader/index.d.ts.map +1 -1
- package/dist/elements/SortHeader/index.js +29 -26
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +16 -3
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/StepNav/index.css +71 -14
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +135 -69
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +34 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +13 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +1 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +51 -0
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -0
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +3 -11
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +3 -1
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +29 -23
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
- package/dist/elements/UnpublishButton/index.js +4 -1
- package/dist/elements/UnpublishButton/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +19 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +1 -0
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +2 -0
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +38 -10
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +1 -0
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +2 -0
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +1 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +22 -19
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +35 -7
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +5 -1
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +4 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +4 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +44 -40
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/icons/Branch/index.css +5 -0
- package/dist/icons/Branch/index.d.ts +7 -0
- package/dist/icons/Branch/index.d.ts.map +1 -0
- package/dist/icons/Branch/index.js +25 -0
- package/dist/icons/Branch/index.js.map +1 -0
- package/dist/icons/Edit/index.d.ts +0 -1
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +1 -0
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +43 -11
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
- package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
- package/dist/providers/Auth/authSessionRequests.js +119 -0
- package/dist/providers/Auth/authSessionRequests.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
- package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
- package/dist/providers/Auth/index.d.ts +2 -56
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +283 -135
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/sessionActivity.d.ts +23 -0
- package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
- package/dist/providers/Auth/sessionActivity.js +49 -0
- package/dist/providers/Auth/sessionActivity.js.map +1 -0
- package/dist/providers/Auth/sessionActivity.spec.js +44 -0
- package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
- package/dist/providers/Auth/sessionTiming.d.ts +11 -0
- package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
- package/dist/providers/Auth/sessionTiming.js +18 -0
- package/dist/providers/Auth/sessionTiming.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.js +263 -0
- package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.js +6 -0
- package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
- package/dist/providers/Auth/types.d.ts +65 -0
- package/dist/providers/Auth/types.d.ts.map +1 -0
- package/dist/providers/Auth/types.js +2 -0
- package/dist/providers/Auth/types.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
- package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
- package/dist/providers/Branch/index.d.ts +68 -0
- package/dist/providers/Branch/index.d.ts.map +1 -0
- package/dist/providers/Branch/index.js +193 -0
- package/dist/providers/Branch/index.js.map +1 -0
- package/dist/providers/Branch/index.server.d.ts +14 -0
- package/dist/providers/Branch/index.server.d.ts.map +1 -0
- package/dist/providers/Branch/index.server.js +125 -0
- package/dist/providers/Branch/index.server.js.map +1 -0
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +5 -1
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
- package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
- package/dist/providers/FormErrorHandler/index.d.ts +5 -1
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
- package/dist/providers/FormErrorHandler/index.js.map +1 -1
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +4 -1
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +41 -36
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts +3 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +9 -3
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Root/index.js +4 -4
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
- package/dist/providers/RouteTransition/index.d.ts +2 -0
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +42 -14
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/index.d.ts +1 -0
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +44 -36
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/getAdminPreferences.d.ts +14 -0
- package/dist/utilities/getAdminPreferences.d.ts.map +1 -0
- package/dist/utilities/getAdminPreferences.js +22 -0
- package/dist/utilities/getAdminPreferences.js.map +1 -0
- package/dist/utilities/getRequestBranch.d.ts +20 -0
- package/dist/utilities/getRequestBranch.d.ts.map +1 -0
- package/dist/utilities/getRequestBranch.js +35 -0
- package/dist/utilities/getRequestBranch.js.map +1 -0
- package/dist/utilities/getVersions.d.ts +6 -1
- package/dist/utilities/getVersions.d.ts.map +1 -1
- package/dist/utilities/getVersions.js +5 -0
- package/dist/utilities/getVersions.js.map +1 -1
- package/dist/utilities/initReq.d.ts.map +1 -1
- package/dist/utilities/initReq.js +8 -0
- package/dist/utilities/initReq.js.map +1 -1
- package/dist/utilities/matchesSearchQuery.d.ts +12 -0
- package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
- package/dist/utilities/matchesSearchQuery.js +23 -0
- package/dist/utilities/matchesSearchQuery.js.map +1 -0
- package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
- package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
- package/dist/utilities/scheduleMergeHandler.d.ts +33 -0
- package/dist/utilities/scheduleMergeHandler.d.ts.map +1 -0
- package/dist/utilities/scheduleMergeHandler.js +119 -0
- package/dist/utilities/scheduleMergeHandler.js.map +1 -0
- package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
- package/dist/utilities/schedulePublishHandler.js +10 -0
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +6 -0
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +10 -2
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Branch/BranchChanges/index.d.ts +23 -0
- package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -0
- package/dist/views/Branch/BranchChanges/index.js +150 -0
- package/dist/views/Branch/BranchChanges/index.js.map +1 -0
- package/dist/views/Branch/ChangedDocuments/index.css +118 -0
- package/dist/views/Branch/ChangedDocuments/index.d.ts +34 -0
- package/dist/views/Branch/ChangedDocuments/index.d.ts.map +1 -0
- package/dist/views/Branch/ChangedDocuments/index.js +233 -0
- package/dist/views/Branch/ChangedDocuments/index.js.map +1 -0
- package/dist/views/Branch/DiscardChangesButton/index.d.ts +16 -0
- package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +1 -0
- package/dist/views/Branch/DiscardChangesButton/index.js +106 -0
- package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -0
- package/dist/views/Branch/Manage/index.d.ts +11 -0
- package/dist/views/Branch/Manage/index.d.ts.map +1 -0
- package/dist/views/Branch/Manage/index.js +71 -0
- package/dist/views/Branch/Manage/index.js.map +1 -0
- package/dist/views/Branch/MergeChangesButton/index.d.ts +14 -0
- package/dist/views/Branch/MergeChangesButton/index.d.ts.map +1 -0
- package/dist/views/Branch/MergeChangesButton/index.js +55 -0
- package/dist/views/Branch/MergeChangesButton/index.js.map +1 -0
- package/dist/views/Branch/MergeLedger/index.css +137 -0
- package/dist/views/Branch/MergeLedger/index.d.ts +31 -0
- package/dist/views/Branch/MergeLedger/index.d.ts.map +1 -0
- package/dist/views/Branch/MergeLedger/index.js +211 -0
- package/dist/views/Branch/MergeLedger/index.js.map +1 -0
- package/dist/views/Branch/ScheduledMerges/index.css +83 -0
- package/dist/views/Branch/ScheduledMerges/index.d.ts +32 -0
- package/dist/views/Branch/ScheduledMerges/index.d.ts.map +1 -0
- package/dist/views/Branch/ScheduledMerges/index.js +183 -0
- package/dist/views/Branch/ScheduledMerges/index.js.map +1 -0
- package/dist/views/Branch/index.css +77 -0
- package/dist/views/Branch/index.d.ts +17 -0
- package/dist/views/Branch/index.d.ts.map +1 -0
- package/dist/views/Branch/index.js +188 -0
- package/dist/views/Branch/index.js.map +1 -0
- package/dist/views/Branch/renderBranchDiff.d.ts +29 -0
- package/dist/views/Branch/renderBranchDiff.d.ts.map +1 -0
- package/dist/views/Branch/renderBranchDiff.js +151 -0
- package/dist/views/Branch/renderBranchDiff.js.map +1 -0
- package/dist/views/Branch/renderMergeDiff.d.ts +24 -0
- package/dist/views/Branch/renderMergeDiff.d.ts.map +1 -0
- package/dist/views/Branch/renderMergeDiff.js +94 -0
- package/dist/views/Branch/renderMergeDiff.js.map +1 -0
- package/dist/views/Branches/index.d.ts +16 -0
- package/dist/views/Branches/index.d.ts.map +1 -0
- package/dist/views/Branches/index.js +54 -0
- package/dist/views/Branches/index.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
- package/dist/views/Document/getDocumentView.d.ts.map +1 -1
- package/dist/views/Document/getDocumentView.js +21 -2
- package/dist/views/Document/getDocumentView.js.map +1 -1
- package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
- package/dist/views/Document/getMetaBySegment.js +9 -0
- package/dist/views/Document/getMetaBySegment.js.map +1 -1
- package/dist/views/Document/index.d.ts +3 -1
- package/dist/views/Document/index.d.ts.map +1 -1
- package/dist/views/Document/index.js +8 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +1 -10
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +1 -3
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +0 -14
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +5 -0
- package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Root/getCustomViewByKey.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +12 -4
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +1 -0
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/Default/index.css +26 -2
- package/dist/views/Version/Default/index.d.ts.map +1 -1
- package/dist/views/Version/Default/index.js +18 -6
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/Default/types.d.ts +9 -0
- package/dist/views/Version/Default/types.d.ts.map +1 -1
- package/dist/views/Version/Default/types.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +8 -0
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +6 -3
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/index.d.ts.map +1 -1
- package/dist/views/Version/index.js +4 -0
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/buildColumns.d.ts +2 -1
- package/dist/views/Versions/buildColumns.d.ts.map +1 -1
- package/dist/views/Versions/buildColumns.js +21 -1
- package/dist/views/Versions/buildColumns.js.map +1 -1
- package/dist/views/Versions/cells/Branch/index.d.ts +12 -0
- package/dist/views/Versions/cells/Branch/index.d.ts.map +1 -0
- package/dist/views/Versions/cells/Branch/index.js +27 -0
- package/dist/views/Versions/cells/Branch/index.js.map +1 -0
- package/dist/views/Versions/index.client.d.ts +0 -1
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.d.ts.map +1 -1
- package/dist/views/Versions/index.js +2 -14
- package/dist/views/Versions/index.js.map +1 -1
- package/package.json +5 -5
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
- package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
- package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
- package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
- package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","branchesCollectionSlug","MAIN_BRANCH","PREFERENCE_KEYS","React","createContext","use","useCallback","useEffect","useState","useConfig","useDocumentEvents","usePreferences","useRouter","useRouteTransition","Context","activeBranch","branches","isEnabled","setBranch","BranchProvider","t0","$","activeBranchFromServer","children","staleBranch","config","t1","branching","setPreference","router","startRouteTransition","Boolean","enabled","setActiveBranchState","t2","t3","t4","slug","t5","refresh","t6","undefined","ADMIN","branch","mostRecentUpdate","entitySlug","operation","createdSlug","doc","t7","t8","t9","_jsx","value","useBranch","useBranchParam","useShowBranchSelector"],"sources":["../../../src/providers/Branch/index.tsx"],"sourcesContent":["'use client'\n\nimport { branchesCollectionSlug, MAIN_BRANCH, PREFERENCE_KEYS } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useDocumentEvents } from '../DocumentEvents/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useRouter } from '../RouterAdapter/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type BranchOption = {\n /** Absent for `main`, which is a sentinel rather than a document. */\n id?: number | string\n /**\n * Merged with nothing pending since — still a usable workspace, but worth\n * distinguishing from a branch with work on it.\n */\n isMerged?: boolean\n /** A merge is queued for this branch — worth knowing before switching onto it. */\n isScheduled?: boolean\n name: string\n slug: string\n}\n\nexport type BranchContext = {\n /** Slug of the branch every read on this request resolved through. */\n activeBranch: string\n /** Branches the user can read, excluding `main`. */\n branches: BranchOption[]\n /** Whether branching is enabled for this Payload instance. */\n isEnabled: boolean\n /**\n * Switches the active branch: stores the choice in the user's preferences and\n * re-renders the current view against it.\n */\n setBranch: (slug: string, options?: { refresh?: boolean }) => void\n}\n\nconst Context = createContext<BranchContext>({\n activeBranch: MAIN_BRANCH,\n branches: [],\n isEnabled: false,\n setBranch: () => null,\n})\n\nexport type BranchProviderProps = {\n /** Branch resolved for the request that rendered this page. */\n activeBranch: string\n branches: BranchOption[]\n children: React.ReactNode\n /**\n * Set when the request resolved to a branch the user can no longer see, so\n * the stored preference pointing at it can be cleared.\n */\n staleBranch?: null | string\n}\n\n/**\n * Holds the active branch for the admin UI.\n *\n * The selection lives in the user's `admin` preference and nowhere else, so it\n * follows them between browsers and machines. The server resolves it during\n * request initialization, which is why switching is a preference write followed\n * by a refresh rather than any client-side state that has to be kept in sync.\n */\nexport const BranchProvider: React.FC<BranchProviderProps> = ({\n activeBranch: activeBranchFromServer,\n branches,\n children,\n staleBranch,\n}) => {\n const {\n config: { branching },\n } = useConfig()\n\n const { setPreference } = usePreferences()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const isEnabled = Boolean(branching?.enabled)\n\n // Tracked optimistically so the trigger label updates before the server\n // components finish re-rendering.\n const [activeBranch, setActiveBranchState] = useState(activeBranchFromServer)\n\n useEffect(() => {\n setActiveBranchState(activeBranchFromServer)\n }, [activeBranchFromServer])\n\n const setBranch = useCallback(\n (slug: string, { refresh = true }: { refresh?: boolean } = {}) => {\n if (slug === activeBranch) {\n return\n }\n\n setActiveBranchState(slug)\n\n // Merged, not replaced: the `admin` preference also carries nav state, and\n // a plain write would drop it. Awaited before refreshing, because the\n // server re-reads this preference to resolve the branch — refreshing first\n // would race the write and re-render against the branch we just left.\n void (async () => {\n await setPreference(PREFERENCE_KEYS.ADMIN, { branch: slug }, true)\n\n if (refresh) {\n startRouteTransition(() => {\n router.refresh()\n })\n }\n })()\n },\n [activeBranch, router, setPreference, startRouteTransition],\n )\n\n // Creating a branch is a declaration of intent to work on it, so the switch\n // follows the save. Listening for the document event rather than wiring up\n // the create view means this covers every route a branch can be created\n // from — the full create page, and any drawer that ever opens onto it.\n const { mostRecentUpdate } = useDocumentEvents()\n\n useEffect(() => {\n if (\n mostRecentUpdate?.entitySlug !== branchesCollectionSlug ||\n mostRecentUpdate.operation !== 'create'\n ) {\n return\n }\n\n const createdSlug = (mostRecentUpdate.doc as { slug?: string } | undefined)?.slug\n\n if (createdSlug) {\n // No refresh: the create view redirects to the new document immediately\n // after this fires, and that navigation re-resolves the branch.\n setBranch(createdSlug, { refresh: false })\n }\n }, [mostRecentUpdate, setBranch])\n\n // Drops a stored selection pointing at a branch that no longer resolves, so\n // the next request starts clean on main instead of resurrecting it.\n useEffect(() => {\n if (staleBranch) {\n void setPreference(PREFERENCE_KEYS.ADMIN, { branch: MAIN_BRANCH }, true)\n }\n }, [setPreference, staleBranch])\n\n return (\n <Context\n value={{\n activeBranch,\n branches,\n isEnabled,\n setBranch,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useBranch = (): BranchContext => use(Context)\n\n/**\n * The value to pass as the `branch` argument on an API call, or `undefined`\n * when the call should run against production.\n *\n * `main` is returned as `undefined` on purpose: passing no branch already means\n * `main` everywhere in Payload, so omitting it keeps ordinary requests free of\n * a parameter that changes nothing.\n */\nexport const useBranchParam = (): string | undefined => {\n const { activeBranch, isEnabled } = useBranch()\n\n return isEnabled && activeBranch !== MAIN_BRANCH ? activeBranch : undefined\n}\n\n/**\n * Whether to render the branch switcher at all.\n *\n * Shown whenever branching is enabled, even with no branches yet: the switcher\n * hosts the \"new branch\" action, so hiding it until a branch exists would leave\n * a project with no way to create its first one.\n */\nexport const useShowBranchSelector = (): boolean => {\n const { isEnabled } = useBranch()\n\n return isEnabled\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { PayloadRequest } from 'payload';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Loads the branches the user can read and their stored branch preference, then
|
|
5
|
+
* hands both to the client provider.
|
|
6
|
+
*
|
|
7
|
+
* Renders nothing of its own when branching is disabled, so a config without
|
|
8
|
+
* `branching` pays for none of this.
|
|
9
|
+
*/
|
|
10
|
+
export declare const RenderBranchProvider: ({ children, req, }: {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
req?: PayloadRequest;
|
|
13
|
+
}) => Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode>>;
|
|
14
|
+
//# sourceMappingURL=index.server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../../src/providers/Branch/index.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,uBAG9B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,gGAyGA,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { resolveBranch } from 'payload';
|
|
3
|
+
import { branchesCollectionSlug, MAIN_BRANCH } from 'payload/shared';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary
|
|
6
|
+
import { BranchProvider } from '../../exports/client/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* Loads the branches the user can read and their stored branch preference, then
|
|
9
|
+
* hands both to the client provider.
|
|
10
|
+
*
|
|
11
|
+
* Renders nothing of its own when branching is disabled, so a config without
|
|
12
|
+
* `branching` pays for none of this.
|
|
13
|
+
*/
|
|
14
|
+
export const RenderBranchProvider = async ({
|
|
15
|
+
children,
|
|
16
|
+
req
|
|
17
|
+
}) => {
|
|
18
|
+
const payload = req?.payload;
|
|
19
|
+
if (!payload?.config.branching.enabled || !req.user) {
|
|
20
|
+
return children;
|
|
21
|
+
}
|
|
22
|
+
let branches = [];
|
|
23
|
+
// Which branches have a merge queued, so the switcher can say so. One small query
|
|
24
|
+
// rather than one per branch — the switcher renders on every admin page.
|
|
25
|
+
let scheduledSlugs = new Set();
|
|
26
|
+
try {
|
|
27
|
+
const {
|
|
28
|
+
docs
|
|
29
|
+
} = await payload.find({
|
|
30
|
+
collection: branchesCollectionSlug,
|
|
31
|
+
depth: 0,
|
|
32
|
+
overrideAccess: false,
|
|
33
|
+
pagination: false,
|
|
34
|
+
req,
|
|
35
|
+
// `id` so the switcher can link to the branch itself, not just switch to it;
|
|
36
|
+
// `status` so a merged-but-open branch can be labelled as one.
|
|
37
|
+
select: {
|
|
38
|
+
id: true,
|
|
39
|
+
name: true,
|
|
40
|
+
slug: true,
|
|
41
|
+
status: true
|
|
42
|
+
},
|
|
43
|
+
sort: 'name',
|
|
44
|
+
user: req.user,
|
|
45
|
+
// Everything except `closed`. A `merged` branch is still a workspace — §16
|
|
46
|
+
// makes merging an event rather than an ending, and the branch returns to
|
|
47
|
+
// `open` the moment it has a change again. Filtering it out here was what
|
|
48
|
+
// made "keep the branch open" a dead end: the branch survived, but there was
|
|
49
|
+
// no way back onto it to use it.
|
|
50
|
+
where: {
|
|
51
|
+
status: {
|
|
52
|
+
not_equals: 'closed'
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
branches = docs.reduce((acc, doc) => {
|
|
57
|
+
const slug = typeof doc.slug === 'string' ? doc.slug : undefined;
|
|
58
|
+
// `main` is a sentinel rather than a row, so a branch that claims the slug
|
|
59
|
+
// would render a duplicate entry alongside the one the selector adds.
|
|
60
|
+
if (slug && slug !== MAIN_BRANCH) {
|
|
61
|
+
acc.push({
|
|
62
|
+
id: doc.id,
|
|
63
|
+
name: typeof doc.name === 'string' && doc.name ? doc.name : slug,
|
|
64
|
+
slug,
|
|
65
|
+
isMerged: doc.status === 'merged'
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
return acc;
|
|
69
|
+
}, []);
|
|
70
|
+
if (branches.length) {
|
|
71
|
+
const {
|
|
72
|
+
docs: scheduled
|
|
73
|
+
} = await payload.find({
|
|
74
|
+
collection: 'payload-jobs',
|
|
75
|
+
depth: 0,
|
|
76
|
+
limit: 100,
|
|
77
|
+
overrideAccess: true,
|
|
78
|
+
pagination: false,
|
|
79
|
+
req,
|
|
80
|
+
select: {
|
|
81
|
+
input: true
|
|
82
|
+
},
|
|
83
|
+
where: {
|
|
84
|
+
and: [{
|
|
85
|
+
taskSlug: {
|
|
86
|
+
equals: 'scheduleMerge'
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
waitUntil: {
|
|
90
|
+
greater_than: new Date()
|
|
91
|
+
}
|
|
92
|
+
}]
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
scheduledSlugs = new Set(scheduled.map(job => job.input?.branch).filter(value => Boolean(value)));
|
|
96
|
+
branches = branches.map(option => ({
|
|
97
|
+
...option,
|
|
98
|
+
isScheduled: scheduledSlugs.has(option.slug)
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
} catch (_err) {
|
|
102
|
+
// Read access to `payload-branches` can legitimately be denied — a user
|
|
103
|
+
// without it simply has no branches to switch between, which must not take
|
|
104
|
+
// the whole admin panel down with it.
|
|
105
|
+
branches = [];
|
|
106
|
+
}
|
|
107
|
+
// Already resolved from the user's preference during request initialization,
|
|
108
|
+
// so this is a read of what every query on this request actually used —
|
|
109
|
+
// not a second source of truth that could disagree with the data on screen.
|
|
110
|
+
const activeBranch = resolveBranch(req);
|
|
111
|
+
// A branch the user can no longer see — merged, closed, deleted, or never
|
|
112
|
+
// theirs — must not be presented as the active one. Otherwise the switcher
|
|
113
|
+
// claims a branch while reads quietly fall through to main, which reads as
|
|
114
|
+
// "my edits vanished" rather than "that branch is gone".
|
|
115
|
+
const isActiveBranchStale = activeBranch !== MAIN_BRANCH && !branches.some(({
|
|
116
|
+
slug
|
|
117
|
+
}) => slug === activeBranch);
|
|
118
|
+
return /*#__PURE__*/_jsx(BranchProvider, {
|
|
119
|
+
activeBranch: isActiveBranchStale ? MAIN_BRANCH : activeBranch,
|
|
120
|
+
branches: branches,
|
|
121
|
+
staleBranch: isActiveBranchStale ? activeBranch : null,
|
|
122
|
+
children: children
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=index.server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.server.js","names":["resolveBranch","branchesCollectionSlug","MAIN_BRANCH","React","BranchProvider","RenderBranchProvider","children","req","payload","config","branching","enabled","user","branches","scheduledSlugs","Set","docs","find","collection","depth","overrideAccess","pagination","select","id","name","slug","status","sort","where","not_equals","reduce","acc","doc","undefined","push","isMerged","length","scheduled","limit","input","and","taskSlug","equals","waitUntil","greater_than","Date","map","job","branch","filter","value","Boolean","option","isScheduled","has","_err","activeBranch","isActiveBranchStale","some","_jsx","staleBranch"],"sources":["../../../src/providers/Branch/index.server.tsx"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { resolveBranch } from 'payload'\nimport { branchesCollectionSlug, MAIN_BRANCH } from 'payload/shared'\nimport React from 'react'\n\nimport type { BranchOption } from './index.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { BranchProvider } from '../../exports/client/index.js'\n\n/**\n * Loads the branches the user can read and their stored branch preference, then\n * hands both to the client provider.\n *\n * Renders nothing of its own when branching is disabled, so a config without\n * `branching` pays for none of this.\n */\nexport const RenderBranchProvider = async ({\n children,\n req,\n}: {\n children: React.ReactNode\n req?: PayloadRequest\n}) => {\n const payload = req?.payload\n\n if (!payload?.config.branching.enabled || !req.user) {\n return children\n }\n\n let branches: BranchOption[] = []\n // Which branches have a merge queued, so the switcher can say so. One small query\n // rather than one per branch — the switcher renders on every admin page.\n let scheduledSlugs = new Set<string>()\n\n try {\n const { docs } = await payload.find({\n collection: branchesCollectionSlug,\n depth: 0,\n overrideAccess: false,\n pagination: false,\n req,\n // `id` so the switcher can link to the branch itself, not just switch to it;\n // `status` so a merged-but-open branch can be labelled as one.\n select: { id: true, name: true, slug: true, status: true },\n sort: 'name',\n user: req.user,\n // Everything except `closed`. A `merged` branch is still a workspace — §16\n // makes merging an event rather than an ending, and the branch returns to\n // `open` the moment it has a change again. Filtering it out here was what\n // made \"keep the branch open\" a dead end: the branch survived, but there was\n // no way back onto it to use it.\n where: { status: { not_equals: 'closed' } },\n })\n\n branches = docs.reduce<BranchOption[]>((acc, doc) => {\n const slug = typeof doc.slug === 'string' ? doc.slug : undefined\n\n // `main` is a sentinel rather than a row, so a branch that claims the slug\n // would render a duplicate entry alongside the one the selector adds.\n if (slug && slug !== MAIN_BRANCH) {\n acc.push({\n id: doc.id,\n name: typeof doc.name === 'string' && doc.name ? doc.name : slug,\n slug,\n isMerged: doc.status === 'merged',\n })\n }\n\n return acc\n }, [])\n\n if (branches.length) {\n const { docs: scheduled } = await payload.find({\n collection: 'payload-jobs',\n depth: 0,\n limit: 100,\n overrideAccess: true,\n pagination: false,\n req,\n select: { input: true },\n where: {\n and: [\n { taskSlug: { equals: 'scheduleMerge' } },\n { waitUntil: { greater_than: new Date() } },\n ],\n },\n })\n\n scheduledSlugs = new Set(\n scheduled\n .map((job) => (job as { input?: { branch?: string } }).input?.branch)\n .filter((value): value is string => Boolean(value)),\n )\n\n branches = branches.map((option) => ({\n ...option,\n isScheduled: scheduledSlugs.has(option.slug),\n }))\n }\n } catch (_err) {\n // Read access to `payload-branches` can legitimately be denied — a user\n // without it simply has no branches to switch between, which must not take\n // the whole admin panel down with it.\n branches = []\n }\n\n // Already resolved from the user's preference during request initialization,\n // so this is a read of what every query on this request actually used —\n // not a second source of truth that could disagree with the data on screen.\n const activeBranch = resolveBranch(req)\n\n // A branch the user can no longer see — merged, closed, deleted, or never\n // theirs — must not be presented as the active one. Otherwise the switcher\n // claims a branch while reads quietly fall through to main, which reads as\n // \"my edits vanished\" rather than \"that branch is gone\".\n const isActiveBranchStale =\n activeBranch !== MAIN_BRANCH && !branches.some(({ slug }) => slug === activeBranch)\n\n return (\n <BranchProvider\n activeBranch={isActiveBranchStale ? MAIN_BRANCH : activeBranch}\n branches={branches}\n staleBranch={isActiveBranchStale ? activeBranch : null}\n >\n {children}\n </BranchProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AAuXtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
|
|
@@ -7,6 +7,7 @@ import React, { createContext, use, useCallback, useEffect, useMemo, useRef, use
|
|
|
7
7
|
import { useControllableState } from '../../hooks/useControllableState.js';
|
|
8
8
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
9
9
|
import { requests } from '../../utilities/api.js';
|
|
10
|
+
import { useBranchParam } from '../Branch/index.js';
|
|
10
11
|
import { useConfig } from '../Config/index.js';
|
|
11
12
|
import { DocumentTitleProvider } from '../DocumentTitle/index.js';
|
|
12
13
|
import { useLocale, useLocaleLoading } from '../Locale/index.js';
|
|
@@ -97,6 +98,7 @@ const DocumentInfo = ({
|
|
|
97
98
|
const {
|
|
98
99
|
code: locale
|
|
99
100
|
} = useLocale();
|
|
101
|
+
const branch = useBranchParam();
|
|
100
102
|
const {
|
|
101
103
|
localeIsLoading
|
|
102
104
|
} = useLocaleLoading();
|
|
@@ -202,6 +204,7 @@ const DocumentInfo = ({
|
|
|
202
204
|
const getDocPermissions = useGetDocPermissions({
|
|
203
205
|
id: id,
|
|
204
206
|
api,
|
|
207
|
+
branch,
|
|
205
208
|
collectionSlug,
|
|
206
209
|
globalSlug,
|
|
207
210
|
i18n,
|
|
@@ -265,6 +268,7 @@ const DocumentInfo = ({
|
|
|
265
268
|
const action = React.useMemo(() => {
|
|
266
269
|
const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`;
|
|
267
270
|
return `${baseAPIPath}${docPath}${qs.stringify({
|
|
271
|
+
branch,
|
|
268
272
|
depth: 0,
|
|
269
273
|
'fallback-locale': 'null',
|
|
270
274
|
locale,
|
|
@@ -272,7 +276,7 @@ const DocumentInfo = ({
|
|
|
272
276
|
}, {
|
|
273
277
|
addQueryPrefix: true
|
|
274
278
|
})}`;
|
|
275
|
-
}, [baseAPIPath, locale, pluralType, id, slug, uploadEdits]);
|
|
279
|
+
}, [baseAPIPath, branch, locale, pluralType, id, slug, uploadEdits]);
|
|
276
280
|
const value = {
|
|
277
281
|
...props,
|
|
278
282
|
action,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","hasScheduledPublish","hasScheduledPublishFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","collections","routes","api","getEntityConfig","collectionConfig","globalConfig","hasLockedDocumentsCollection","some","collection","slug","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","setHasScheduledPublish","Boolean","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","data","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseAPIPath","apiRoute","path","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docPath","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences, User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n hasScheduledPublish: hasScheduledPublishFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n collections,\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n // Check if the locked-documents collection exists in the config\n const hasLockedDocumentsCollection = collections.some(\n (collection) => collection.slug === 'payload-locked-documents',\n )\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [hasScheduledPublish, setHasScheduledPublish] = useState(\n Boolean(hasScheduledPublishFromProps),\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<null | User>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: number | string | User\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked, hasLockedDocumentsCollection],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: number | string | User) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug, hasLockedDocumentsCollection],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n hasScheduledPublish,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setHasPublishedDoc,\n setHasScheduledPublish,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","useBranchParam","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","hasScheduledPublish","hasScheduledPublishFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","collections","routes","api","getEntityConfig","collectionConfig","globalConfig","hasLockedDocumentsCollection","some","collection","slug","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","setHasScheduledPublish","Boolean","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","data","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","branch","localeIsLoading","isInitializing","undefined","baseAPIPath","apiRoute","path","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docPath","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences, User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useBranchParam } from '../Branch/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n hasScheduledPublish: hasScheduledPublishFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n collections,\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n // Check if the locked-documents collection exists in the config\n const hasLockedDocumentsCollection = collections.some(\n (collection) => collection.slug === 'payload-locked-documents',\n )\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [hasScheduledPublish, setHasScheduledPublish] = useState(\n Boolean(hasScheduledPublishFromProps),\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<null | User>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: number | string | User\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked, hasLockedDocumentsCollection],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: number | string | User) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug, hasLockedDocumentsCollection],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n branch,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n branch,\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, branch, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n hasScheduledPublish,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setHasPublishedDoc,\n setHasScheduledPublish,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export type GetDocPermissions = (data?: Data) => Promise<void>;
|
|
4
|
-
export declare const useGetDocPermissions: ({ id, api, collectionSlug, globalSlug, i18n, locale, permissions, setDocPermissions, setHasPublishPermission, setHasSavePermission, }: {
|
|
4
|
+
export declare const useGetDocPermissions: ({ id, api, branch, collectionSlug, globalSlug, i18n, locale, permissions, setDocPermissions, setHasPublishPermission, setHasSavePermission, }: {
|
|
5
5
|
api: string;
|
|
6
|
+
branch: string | undefined;
|
|
6
7
|
collectionSlug: string;
|
|
7
8
|
globalSlug: string;
|
|
8
9
|
i18n: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,kJAY9B;IACD,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAyGD,CAAA"}
|
|
@@ -6,6 +6,7 @@ import { isEditing as getIsEditing } from '../../utilities/isEditing.js';
|
|
|
6
6
|
export const useGetDocPermissions = ({
|
|
7
7
|
id,
|
|
8
8
|
api,
|
|
9
|
+
branch,
|
|
9
10
|
collectionSlug,
|
|
10
11
|
globalSlug,
|
|
11
12
|
i18n,
|
|
@@ -16,6 +17,7 @@ export const useGetDocPermissions = ({
|
|
|
16
17
|
setHasSavePermission
|
|
17
18
|
}) => React.useCallback(async data => {
|
|
18
19
|
const params = {
|
|
20
|
+
branch,
|
|
19
21
|
locale: locale || undefined
|
|
20
22
|
};
|
|
21
23
|
const idToUse = data?.id || id;
|
|
@@ -83,5 +85,5 @@ export const useGetDocPermissions = ({
|
|
|
83
85
|
isEditing: newIsEditing
|
|
84
86
|
}));
|
|
85
87
|
}
|
|
86
|
-
}, [locale, id, collectionSlug, globalSlug, api, i18n.language, setDocPermissions, setHasSavePermission, setHasPublishPermission, permissions?.collections, permissions?.globals]);
|
|
88
|
+
}, [branch, locale, id, collectionSlug, globalSlug, api, i18n.language, setDocPermissions, setHasSavePermission, setHasPublishPermission, permissions?.collections, permissions?.globals]);
|
|
87
89
|
//# sourceMappingURL=useGetDocPermissions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGetDocPermissions.js","names":["formatAdminURL","qs","React","hasSavePermission","getHasSavePermission","isEditing","getIsEditing","useGetDocPermissions","id","api","collectionSlug","globalSlug","i18n","locale","permissions","setDocPermissions","setHasPublishPermission","setHasSavePermission","useCallback","data","params","undefined","idToUse","newIsEditing","docAccessPath","res","fetch","apiRoute","path","stringify","addQueryPrefix","body","JSON","doc","_status","credentials","headers","language","method","json","publishedAccessJSON","then","docPermissions","update","newDocPermissions","collections","globals"],"sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"sourcesContent":["import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise<void>\n\nexport const useGetDocPermissions = ({\n id,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>\n setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>\n setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,MAAW;AAElB,SAASC,iBAAA,IAAqBC,oBAAoB,QAAQ;AAC1D,SAASC,SAAA,IAAaC,YAAY,QAAQ;AAI1C,OAAO,MAAMC,oBAAA,GAAuBA,CAAC;EACnCC,EAAE;EACFC,GAAG;EACHC,cAAc;EACdC,UAAU;EACVC,IAAI;EACJC,MAAM;EACNC,WAAW;EACXC,iBAAiB;EACjBC,uBAAuB;EACvBC;AAAoB,
|
|
1
|
+
{"version":3,"file":"useGetDocPermissions.js","names":["formatAdminURL","qs","React","hasSavePermission","getHasSavePermission","isEditing","getIsEditing","useGetDocPermissions","id","api","branch","collectionSlug","globalSlug","i18n","locale","permissions","setDocPermissions","setHasPublishPermission","setHasSavePermission","useCallback","data","params","undefined","idToUse","newIsEditing","docAccessPath","res","fetch","apiRoute","path","stringify","addQueryPrefix","body","JSON","doc","_status","credentials","headers","language","method","json","publishedAccessJSON","then","docPermissions","update","newDocPermissions","collections","globals"],"sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"sourcesContent":["import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise<void>\n\nexport const useGetDocPermissions = ({\n id,\n api,\n branch,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n branch: string | undefined\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>\n setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>\n setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n branch,\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n branch,\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,8 +13,12 @@ export type NonFieldError = {
|
|
|
13
13
|
*
|
|
14
14
|
* Multiple handlers can be chained by composing providers; the first one to
|
|
15
15
|
* return `true` wins.
|
|
16
|
+
*
|
|
17
|
+
* `retry` re-submits the form that produced the error, allowing the user to
|
|
18
|
+
* retry after resolving the underlying issue (e.g. deleting documents to free
|
|
19
|
+
* up quota).
|
|
16
20
|
*/
|
|
17
|
-
export type FormErrorHandler = (err: NonFieldError) => boolean;
|
|
21
|
+
export type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean;
|
|
18
22
|
export declare const FormErrorHandlerContext: import("react").Context<FormErrorHandler>;
|
|
19
23
|
export declare const useFormErrorHandler: () => FormErrorHandler | undefined;
|
|
20
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/FormErrorHandler/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/FormErrorHandler/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,OAAO,CAAA;AAEjF,eAAO,MAAM,uBAAuB,2CAAyD,CAAA;AAE7F,eAAO,MAAM,mBAAmB,QAAO,gBAAgB,GAAG,SAAyC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n */\nexport type FormErrorHandler = (err: NonFieldError) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n *\n * `retry` re-submits the form that produced the error, allowing the user to\n * retry after resolving the underlying issue (e.g. deleting documents to free\n * up quota).\n */\nexport type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAyBnC,OAAO,MAAMC,uBAAA,gBAA0BF,aAAA,CAA4CG,SAAA;AAEnF,OAAO,MAAMC,mBAAA,GAAsBA,CAAA,KAAoCH,GAAA,CAAIC,uBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Hierarchy/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAEV,qBAAqB,EAGrB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Hierarchy/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAEV,qBAAqB,EAGrB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAUnB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsZ9D,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,qBAM/B,CAAA"}
|
|
@@ -5,6 +5,7 @@ import { DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL, PREFERENCE_KEYS } from 'p
|
|
|
5
5
|
import * as qs from 'qs-esm';
|
|
6
6
|
import React, { createContext, use, useCallback, useState } from 'react';
|
|
7
7
|
import { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js';
|
|
8
|
+
import { useBranchParam } from '../Branch/index.js';
|
|
8
9
|
import { useConfig } from '../Config/index.js';
|
|
9
10
|
import { usePreferences } from '../Preferences/index.js';
|
|
10
11
|
import { useRouter } from '../RouterAdapter/index.js';
|
|
@@ -25,6 +26,7 @@ export const HierarchyProvider = ({
|
|
|
25
26
|
serverURL
|
|
26
27
|
}
|
|
27
28
|
} = useConfig();
|
|
29
|
+
const branch = useBranchParam();
|
|
28
30
|
const [baseFilter, setBaseFilter] = useState(null);
|
|
29
31
|
const [collectionSlug, setCollectionSlug] = useState(null);
|
|
30
32
|
const [parent, setParent] = useState(null);
|
|
@@ -237,6 +239,7 @@ export const HierarchyProvider = ({
|
|
|
237
239
|
}
|
|
238
240
|
};
|
|
239
241
|
const queryString = qs.stringify({
|
|
242
|
+
branch,
|
|
240
243
|
limit: treeLimit,
|
|
241
244
|
page: nextPage,
|
|
242
245
|
sort: useAsTitle ?? 'id',
|
|
@@ -282,7 +285,7 @@ export const HierarchyProvider = ({
|
|
|
282
285
|
setIsLoadingMore(false);
|
|
283
286
|
setLoadingNodeId(null);
|
|
284
287
|
}
|
|
285
|
-
}, [api, collectionSlug, isLoadingMore, parentFieldName, serverURL, treeCache, treeLimit, useAsTitle]);
|
|
288
|
+
}, [branch, api, collectionSlug, isLoadingMore, parentFieldName, serverURL, treeCache, treeLimit, useAsTitle]);
|
|
286
289
|
const reset = useCallback(() => {
|
|
287
290
|
setBaseFilter(null);
|
|
288
291
|
setCollectionSlug(null);
|