canopycms 0.0.61-int.75 → 0.0.62
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/ai/handler.js +1 -1
- package/dist/ai/handler.js.map +1 -1
- package/dist/ai/json-to-markdown.js +1 -2
- package/dist/ai/json-to-markdown.js.map +1 -1
- package/dist/api/__test__/mock-client.d.ts +5 -1
- package/dist/api/__test__/mock-client.d.ts.map +1 -1
- package/dist/api/__test__/mock-client.js +9 -2
- package/dist/api/__test__/mock-client.js.map +1 -1
- package/dist/api/admin-branch-health.d.ts +36 -1
- package/dist/api/admin-branch-health.d.ts.map +1 -1
- package/dist/api/admin-branch-health.js +176 -2
- package/dist/api/admin-branch-health.js.map +1 -1
- package/dist/api/admin.d.ts +8 -1
- package/dist/api/admin.d.ts.map +1 -1
- package/dist/api/admin.js.map +1 -1
- package/dist/api/assets.d.ts.map +1 -1
- package/dist/api/assets.js +36 -4
- package/dist/api/assets.js.map +1 -1
- package/dist/api/branch-status.d.ts.map +1 -1
- package/dist/api/branch-status.js +56 -0
- package/dist/api/branch-status.js.map +1 -1
- package/dist/api/branch-withdraw.d.ts.map +1 -1
- package/dist/api/branch-withdraw.js +14 -3
- package/dist/api/branch-withdraw.js.map +1 -1
- package/dist/api/branch.d.ts +31 -2
- package/dist/api/branch.d.ts.map +1 -1
- package/dist/api/branch.js +268 -15
- package/dist/api/branch.js.map +1 -1
- package/dist/api/client.d.ts +5 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +6 -0
- package/dist/api/client.js.map +1 -1
- package/dist/api/comments.d.ts +2 -2
- package/dist/api/content.d.ts +11 -5
- package/dist/api/content.d.ts.map +1 -1
- package/dist/api/content.js +91 -10
- package/dist/api/content.js.map +1 -1
- package/dist/api/entries.d.ts +10 -0
- package/dist/api/entries.d.ts.map +1 -1
- package/dist/api/entries.js +51 -24
- package/dist/api/entries.js.map +1 -1
- package/dist/api/guards.d.ts.map +1 -1
- package/dist/api/guards.js +12 -5
- package/dist/api/guards.js.map +1 -1
- package/dist/api/permissions.d.ts +2 -2
- package/dist/api/permissions.d.ts.map +1 -1
- package/dist/api/permissions.js +51 -3
- package/dist/api/permissions.js.map +1 -1
- package/dist/api/reference-options.d.ts.map +1 -1
- package/dist/api/reference-options.js +10 -17
- package/dist/api/reference-options.js.map +1 -1
- package/dist/api/resolve-references.d.ts.map +1 -1
- package/dist/api/resolve-references.js +3 -1
- package/dist/api/resolve-references.js.map +1 -1
- package/dist/api/schema.d.ts +4 -4
- package/dist/api/schema.d.ts.map +1 -1
- package/dist/api/schema.js +16 -15
- package/dist/api/schema.js.map +1 -1
- package/dist/api/settings-helpers.d.ts.map +1 -1
- package/dist/api/settings-helpers.js +6 -5
- package/dist/api/settings-helpers.js.map +1 -1
- package/dist/assets/pipeline.d.ts +11 -2
- package/dist/assets/pipeline.d.ts.map +1 -1
- package/dist/assets/pipeline.js +114 -2
- package/dist/assets/pipeline.js.map +1 -1
- package/dist/assets/transform-directives.d.ts +18 -0
- package/dist/assets/transform-directives.d.ts.map +1 -1
- package/dist/assets/transform-directives.js +18 -0
- package/dist/assets/transform-directives.js.map +1 -1
- package/dist/assets/transform.d.ts.map +1 -1
- package/dist/assets/transform.js +20 -16
- package/dist/assets/transform.js.map +1 -1
- package/dist/auth/types.d.ts +29 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +1 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +1 -1
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/protected-branch.d.ts +75 -0
- package/dist/authorization/protected-branch.d.ts.map +1 -1
- package/dist/authorization/protected-branch.js +39 -0
- package/dist/authorization/protected-branch.js.map +1 -1
- package/dist/branch-health.d.ts +13 -0
- package/dist/branch-health.d.ts.map +1 -1
- package/dist/branch-health.js +23 -0
- package/dist/branch-health.js.map +1 -1
- package/dist/branch-registry.d.ts.map +1 -1
- package/dist/branch-registry.js +5 -1
- package/dist/branch-registry.js.map +1 -1
- package/dist/branch-schema-cache.d.ts.map +1 -1
- package/dist/branch-schema-cache.js +9 -0
- package/dist/branch-schema-cache.js.map +1 -1
- package/dist/build/generate-ai-content.js +1 -1
- package/dist/build/generate-ai-content.js.map +1 -1
- package/dist/cli/cli.js +2215 -1280
- package/dist/cli/generate-ai-content.js +1158 -585
- package/dist/cli/init.d.ts +8 -2
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +459 -152
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/project-detect.d.ts +89 -0
- package/dist/cli/project-detect.d.ts.map +1 -0
- package/dist/cli/project-detect.js +240 -0
- package/dist/cli/project-detect.js.map +1 -0
- package/dist/cli/template-files/Dockerfile.cms.template +30 -7
- package/dist/cli/template-files/canopycms.config.ts.template +7 -0
- package/dist/cli/template-files/cdk-app.ts.template +82 -0
- package/dist/cli/template-files/cdk.json.template +9 -0
- package/dist/cli/template-files/cms-stack.ts.template +130 -0
- package/dist/cli/template-files/deploy-cms.yml.template +125 -13
- package/dist/cli/template-files/dockerignore.template +2 -1
- package/dist/cli/templates.d.ts +26 -2
- package/dist/cli/templates.d.ts.map +1 -1
- package/dist/cli/templates.js +36 -4
- package/dist/cli/templates.js.map +1 -1
- package/dist/client.d.ts +1 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js.map +1 -1
- package/dist/config/schemas/config.d.ts +2 -3
- package/dist/config/schemas/config.d.ts.map +1 -1
- package/dist/config/schemas/config.js +21 -1
- package/dist/config/schemas/config.js.map +1 -1
- package/dist/config/schemas/field.d.ts +15 -15
- package/dist/config/types.d.ts +2 -2
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +0 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.d.ts +18 -0
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +36 -12
- package/dist/config/validation.js.map +1 -1
- package/dist/content-id-index.d.ts +97 -5
- package/dist/content-id-index.d.ts.map +1 -1
- package/dist/content-id-index.js +170 -18
- package/dist/content-id-index.js.map +1 -1
- package/dist/content-reader.js +1 -1
- package/dist/content-reader.js.map +1 -1
- package/dist/content-store.d.ts +92 -7
- package/dist/content-store.d.ts.map +1 -1
- package/dist/content-store.js +445 -259
- package/dist/content-store.js.map +1 -1
- package/dist/dev-content-watcher.d.ts.map +1 -1
- package/dist/dev-content-watcher.js +4 -1
- package/dist/dev-content-watcher.js.map +1 -1
- package/dist/editor/BranchManager.d.ts +15 -0
- package/dist/editor/BranchManager.d.ts.map +1 -1
- package/dist/editor/BranchManager.js +61 -15
- package/dist/editor/BranchManager.js.map +1 -1
- package/dist/editor/CanopyEditor.d.ts.map +1 -1
- package/dist/editor/CanopyEditor.js +3 -3
- package/dist/editor/CanopyEditor.js.map +1 -1
- package/dist/editor/CanopyEditorPage.d.ts +9 -1
- package/dist/editor/CanopyEditorPage.d.ts.map +1 -1
- package/dist/editor/CanopyEditorPage.js +9 -2
- package/dist/editor/CanopyEditorPage.js.map +1 -1
- package/dist/editor/Editor.d.ts +9 -1
- package/dist/editor/Editor.d.ts.map +1 -1
- package/dist/editor/Editor.js +156 -60
- package/dist/editor/Editor.js.map +1 -1
- package/dist/editor/FormRenderer.d.ts.map +1 -1
- package/dist/editor/FormRenderer.js +12 -0
- package/dist/editor/FormRenderer.js.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.d.ts.map +1 -1
- package/dist/editor/admin/SystemHealthPanel.js +14 -9
- package/dist/editor/admin/SystemHealthPanel.js.map +1 -1
- package/dist/editor/components/EditorHeader.d.ts +6 -0
- package/dist/editor/components/EditorHeader.d.ts.map +1 -1
- package/dist/editor/components/EditorHeader.js +76 -23
- package/dist/editor/components/EditorHeader.js.map +1 -1
- package/dist/editor/components/EntryCreateModal.d.ts +9 -1
- package/dist/editor/components/EntryCreateModal.d.ts.map +1 -1
- package/dist/editor/components/EntryCreateModal.js +25 -7
- package/dist/editor/components/EntryCreateModal.js.map +1 -1
- package/dist/editor/context/SWRProvider.d.ts +31 -0
- package/dist/editor/context/SWRProvider.d.ts.map +1 -0
- package/dist/editor/context/SWRProvider.js +12 -0
- package/dist/editor/context/SWRProvider.js.map +1 -0
- package/dist/editor/context/index.d.ts +3 -0
- package/dist/editor/context/index.d.ts.map +1 -1
- package/dist/editor/context/index.js +3 -0
- package/dist/editor/context/index.js.map +1 -1
- package/dist/editor/editor-utils.d.ts.map +1 -1
- package/dist/editor/editor-utils.js +8 -2
- package/dist/editor/editor-utils.js.map +1 -1
- package/dist/editor/fields/DateTimeField.d.ts +46 -0
- package/dist/editor/fields/DateTimeField.d.ts.map +1 -0
- package/dist/editor/fields/DateTimeField.js +66 -0
- package/dist/editor/fields/DateTimeField.js.map +1 -0
- package/dist/editor/fields/ImageField.d.ts.map +1 -1
- package/dist/editor/fields/ImageField.js +27 -3
- package/dist/editor/fields/ImageField.js.map +1 -1
- package/dist/editor/fields/NumberField.d.ts +34 -0
- package/dist/editor/fields/NumberField.d.ts.map +1 -0
- package/dist/editor/fields/NumberField.js +53 -0
- package/dist/editor/fields/NumberField.js.map +1 -0
- package/dist/editor/fields/NumberListField.d.ts +25 -0
- package/dist/editor/fields/NumberListField.d.ts.map +1 -0
- package/dist/editor/fields/NumberListField.js +53 -0
- package/dist/editor/fields/NumberListField.js.map +1 -0
- package/dist/editor/fields/ReferenceField.d.ts.map +1 -1
- package/dist/editor/fields/ReferenceField.js +52 -31
- package/dist/editor/fields/ReferenceField.js.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.d.ts +38 -3
- package/dist/editor/hooks/__test__/test-utils.d.ts.map +1 -1
- package/dist/editor/hooks/__test__/test-utils.js +50 -4
- package/dist/editor/hooks/__test__/test-utils.js.map +1 -1
- package/dist/editor/hooks/index.d.ts +4 -1
- package/dist/editor/hooks/index.d.ts.map +1 -1
- package/dist/editor/hooks/index.js +4 -1
- package/dist/editor/hooks/index.js.map +1 -1
- package/dist/editor/hooks/useBranchManager.d.ts +21 -1
- package/dist/editor/hooks/useBranchManager.d.ts.map +1 -1
- package/dist/editor/hooks/useBranchManager.js +183 -58
- package/dist/editor/hooks/useBranchManager.js.map +1 -1
- package/dist/editor/hooks/useBranchesData.d.ts +57 -0
- package/dist/editor/hooks/useBranchesData.d.ts.map +1 -0
- package/dist/editor/hooks/useBranchesData.js +69 -0
- package/dist/editor/hooks/useBranchesData.js.map +1 -0
- package/dist/editor/hooks/useCommentSystem.d.ts.map +1 -1
- package/dist/editor/hooks/useCommentSystem.js +24 -22
- package/dist/editor/hooks/useCommentSystem.js.map +1 -1
- package/dist/editor/hooks/useCommentsData.d.ts +29 -0
- package/dist/editor/hooks/useCommentsData.d.ts.map +1 -0
- package/dist/editor/hooks/useCommentsData.js +40 -0
- package/dist/editor/hooks/useCommentsData.js.map +1 -0
- package/dist/editor/hooks/useDraftManager.d.ts +8 -0
- package/dist/editor/hooks/useDraftManager.d.ts.map +1 -1
- package/dist/editor/hooks/useDraftManager.js +290 -36
- package/dist/editor/hooks/useDraftManager.js.map +1 -1
- package/dist/editor/hooks/useEntriesData.d.ts +35 -0
- package/dist/editor/hooks/useEntriesData.d.ts.map +1 -0
- package/dist/editor/hooks/useEntriesData.js +96 -0
- package/dist/editor/hooks/useEntriesData.js.map +1 -0
- package/dist/editor/hooks/useEntryManager.d.ts +29 -15
- package/dist/editor/hooks/useEntryManager.d.ts.map +1 -1
- package/dist/editor/hooks/useEntryManager.js +284 -119
- package/dist/editor/hooks/useEntryManager.js.map +1 -1
- package/dist/editor/hooks/usePermissionManager.d.ts +2 -2
- package/dist/editor/hooks/usePermissionManager.d.ts.map +1 -1
- package/dist/editor/hooks/usePermissionManager.js +11 -9
- package/dist/editor/hooks/usePermissionManager.js.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.d.ts.map +1 -1
- package/dist/editor/hooks/useReferenceResolution.js +24 -1
- package/dist/editor/hooks/useReferenceResolution.js.map +1 -1
- package/dist/editor/media/MediaLibraryBody.d.ts.map +1 -1
- package/dist/editor/media/MediaLibraryBody.js +12 -2
- package/dist/editor/media/MediaLibraryBody.js.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.d.ts.map +1 -1
- package/dist/editor/permission-manager/GroupSelector.js +7 -2
- package/dist/editor/permission-manager/GroupSelector.js.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts +3 -3
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.d.ts.map +1 -1
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js +1 -0
- package/dist/editor/permission-manager/hooks/useGroupsAndUsers.js.map +1 -1
- package/dist/editor/permission-manager/types.d.ts +6 -4
- package/dist/editor/permission-manager/types.d.ts.map +1 -1
- package/dist/editor/test-setup.js +8 -0
- package/dist/editor/test-setup.js.map +1 -1
- package/dist/editor/theme.d.ts +8 -8
- package/dist/git-manager.d.ts +175 -14
- package/dist/git-manager.d.ts.map +1 -1
- package/dist/git-manager.js +354 -39
- package/dist/git-manager.js.map +1 -1
- package/dist/github-service.d.ts.map +1 -1
- package/dist/github-service.js +13 -7
- package/dist/github-service.js.map +1 -1
- package/dist/http/handler.d.ts.map +1 -1
- package/dist/http/handler.js +78 -29
- package/dist/http/handler.js.map +1 -1
- package/dist/http/router.d.ts.map +1 -1
- package/dist/http/router.js +40 -3
- package/dist/http/router.js.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.d.ts.map +1 -1
- package/dist/operating-mode/client-unsafe-strategy.js +7 -8
- package/dist/operating-mode/client-unsafe-strategy.js.map +1 -1
- package/dist/operating-mode/deployment-name-fixtures.d.ts +29 -0
- package/dist/operating-mode/deployment-name-fixtures.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name-fixtures.js +55 -0
- package/dist/operating-mode/deployment-name-fixtures.js.map +1 -0
- package/dist/operating-mode/deployment-name.d.ts +37 -0
- package/dist/operating-mode/deployment-name.d.ts.map +1 -0
- package/dist/operating-mode/deployment-name.js +86 -0
- package/dist/operating-mode/deployment-name.js.map +1 -0
- package/dist/operating-mode/index.d.ts +6 -1
- package/dist/operating-mode/index.d.ts.map +1 -1
- package/dist/operating-mode/index.js +10 -1
- package/dist/operating-mode/index.js.map +1 -1
- package/dist/operating-mode/mode-env.d.ts +58 -0
- package/dist/operating-mode/mode-env.d.ts.map +1 -0
- package/dist/operating-mode/mode-env.js +97 -0
- package/dist/operating-mode/mode-env.js.map +1 -0
- package/dist/operating-mode/types.d.ts +13 -3
- package/dist/operating-mode/types.d.ts.map +1 -1
- package/dist/paths/branch-name.d.ts +38 -0
- package/dist/paths/branch-name.d.ts.map +1 -1
- package/dist/paths/branch-name.js +46 -0
- package/dist/paths/branch-name.js.map +1 -1
- package/dist/paths/index.d.ts +1 -1
- package/dist/paths/index.d.ts.map +1 -1
- package/dist/paths/index.js +1 -1
- package/dist/paths/index.js.map +1 -1
- package/dist/reference-resolver.d.ts +6 -2
- package/dist/reference-resolver.d.ts.map +1 -1
- package/dist/reference-resolver.js +8 -1
- package/dist/reference-resolver.js.map +1 -1
- package/dist/resolve-canopy-user.d.ts +34 -0
- package/dist/resolve-canopy-user.d.ts.map +1 -0
- package/dist/resolve-canopy-user.js +55 -0
- package/dist/resolve-canopy-user.js.map +1 -0
- package/dist/schema/meta-loader.d.ts.map +1 -1
- package/dist/schema/meta-loader.js +10 -2
- package/dist/schema/meta-loader.js.map +1 -1
- package/dist/schema/schema-store.d.ts +64 -4
- package/dist/schema/schema-store.d.ts.map +1 -1
- package/dist/schema/schema-store.js +113 -30
- package/dist/schema/schema-store.js.map +1 -1
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +40 -6
- package/dist/services.js.map +1 -1
- package/dist/settings-workspace.d.ts +27 -2
- package/dist/settings-workspace.d.ts.map +1 -1
- package/dist/settings-workspace.js +142 -58
- package/dist/settings-workspace.js.map +1 -1
- package/dist/types.d.ts +73 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/content-write-lock.d.ts +127 -0
- package/dist/utils/content-write-lock.d.ts.map +1 -0
- package/dist/utils/content-write-lock.js +170 -0
- package/dist/utils/content-write-lock.js.map +1 -0
- package/dist/utils/debug.d.ts +11 -0
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +12 -1
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/error.d.ts +1 -1
- package/dist/utils/error.js +1 -1
- package/dist/utils/git.d.ts +54 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +91 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/logger.d.ts +71 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +85 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/sanitize-href.d.ts +28 -3
- package/dist/utils/sanitize-href.d.ts.map +1 -1
- package/dist/utils/sanitize-href.js +64 -6
- package/dist/utils/sanitize-href.js.map +1 -1
- package/dist/validation/entry-link-validator.d.ts +1 -1
- package/dist/validation/entry-link-validator.js +3 -3
- package/dist/validation/entry-link-validator.js.map +1 -1
- package/dist/validation/entry-type-reference-validator.d.ts +33 -0
- package/dist/validation/entry-type-reference-validator.d.ts.map +1 -0
- package/dist/validation/entry-type-reference-validator.js +110 -0
- package/dist/validation/entry-type-reference-validator.js.map +1 -0
- package/dist/validation/entry-validator.js +1 -1
- package/dist/validation/entry-validator.js.map +1 -1
- package/dist/worker/cms-worker.d.ts +245 -3
- package/dist/worker/cms-worker.d.ts.map +1 -1
- package/dist/worker/cms-worker.js +1084 -253
- package/dist/worker/cms-worker.js.map +1 -1
- package/dist/worker/log.d.ts +61 -0
- package/dist/worker/log.d.ts.map +1 -0
- package/dist/worker/log.js +74 -0
- package/dist/worker/log.js.map +1 -0
- package/package.json +4 -2
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
2
2
|
import { notifications } from '@mantine/notifications';
|
|
3
3
|
import { modals } from '@mantine/modals';
|
|
4
|
+
import equal from 'fast-deep-equal';
|
|
4
5
|
import { getNotificationDuration } from '../utils/env.js';
|
|
5
6
|
import { validateEntryFormValue } from '../../validation/entry-validator.js';
|
|
6
7
|
import { SaveApiError } from './useEntryManager.js';
|
|
@@ -30,6 +31,38 @@ export const shallowEqualRecord = (a, b) => {
|
|
|
30
31
|
}
|
|
31
32
|
return true;
|
|
32
33
|
};
|
|
34
|
+
/** Storage-format tag for the persisted draft envelope (see `parsePersistedDrafts`). */
|
|
35
|
+
const DRAFTS_STORAGE_VERSION = 2;
|
|
36
|
+
/**
|
|
37
|
+
* Read the persisted draft store, tolerating the legacy pre-v2 shape.
|
|
38
|
+
*
|
|
39
|
+
* LEGACY DECISION: a pre-v2 payload carries no base versions at all, and we
|
|
40
|
+
* cannot reconstruct them -- the draft may predate any number of other
|
|
41
|
+
* people's saves. Every legacy draft is therefore restored with base version
|
|
42
|
+
* `null` ("unknown"), which surfaces a confirmation on save instead of
|
|
43
|
+
* trusting it. Trusting it is the bug being fixed; silently DISCARDING it is a
|
|
44
|
+
* quieter version of the same bug, so the draft is kept and the user gets the
|
|
45
|
+
* decision. Nothing here re-stamps `null` (the reconcile effect only fills ids
|
|
46
|
+
* NOT already present), so the ONLY thing that clears it is that confirmation
|
|
47
|
+
* -- which is why blocking on it unconditionally, as an earlier version did,
|
|
48
|
+
* made a legacy draft unsaveable by any sequence of actions, forever.
|
|
49
|
+
* This only affects drafts written before this change; everything written
|
|
50
|
+
* after carries a real base version.
|
|
51
|
+
*/
|
|
52
|
+
const parsePersistedDrafts = (raw) => {
|
|
53
|
+
const parsed = JSON.parse(raw);
|
|
54
|
+
if (!parsed || typeof parsed !== 'object')
|
|
55
|
+
return { drafts: {}, baseVersions: {} };
|
|
56
|
+
if (parsed.v === DRAFTS_STORAGE_VERSION) {
|
|
57
|
+
const envelope = parsed;
|
|
58
|
+
return { drafts: envelope.drafts ?? {}, baseVersions: envelope.baseVersions ?? {} };
|
|
59
|
+
}
|
|
60
|
+
const drafts = parsed;
|
|
61
|
+
const baseVersions = {};
|
|
62
|
+
for (const id of Object.keys(drafts))
|
|
63
|
+
baseVersions[id] = null;
|
|
64
|
+
return { drafts, baseVersions };
|
|
65
|
+
};
|
|
33
66
|
/**
|
|
34
67
|
* Custom hook for managing draft state (localStorage persistence, save/discard).
|
|
35
68
|
*
|
|
@@ -69,6 +102,26 @@ export function useDraftManager(options) {
|
|
|
69
102
|
// entry structurally impossible: there is no render where `errorState`
|
|
70
103
|
// exists but belongs to the wrong entry.
|
|
71
104
|
const [errorState, setErrorState] = useState(null);
|
|
105
|
+
// contentId -> the server version the CURRENT draft for that entry is based
|
|
106
|
+
// on. A ref rather than state: nothing renders from it, and the persist
|
|
107
|
+
// effect below must be able to read the value stamped moments earlier in the
|
|
108
|
+
// same commit. Three distinguishable states, all load-bearing:
|
|
109
|
+
// number - known base version
|
|
110
|
+
// null - draft restored from storage with no recorded base ("unknown")
|
|
111
|
+
// absent - draft created this session before any version was known
|
|
112
|
+
// (adopter-supplied `initialValues`, or an edit that somehow
|
|
113
|
+
// preceded the entry's first load); treated as safe, matching
|
|
114
|
+
// the behavior before base versions existed.
|
|
115
|
+
const draftBaseVersionsRef = useRef({});
|
|
116
|
+
// The draft ids the reconcile effect below has already accounted for. It
|
|
117
|
+
// prunes on an observed present -> absent TRANSITION rather than on "not
|
|
118
|
+
// currently in drafts": the restore effect stamps base versions for ids
|
|
119
|
+
// whose `setDrafts` has only been QUEUED, so a prune keyed on the current
|
|
120
|
+
// `drafts` would delete every restored base version in the same commit that
|
|
121
|
+
// recorded it -- and the next pass would then re-stamp those drafts with the
|
|
122
|
+
// freshly loaded version, which is exactly the false "no conflict" this
|
|
123
|
+
// mechanism exists to prevent.
|
|
124
|
+
const reconciledDraftIdsRef = useRef(new Set());
|
|
72
125
|
const storageKey = useMemo(() => `canopycms:drafts:${options.branchName}`, [options.branchName]);
|
|
73
126
|
// Draft keys are now content IDs, not paths
|
|
74
127
|
const currentId = options.currentEntry?.contentId;
|
|
@@ -86,12 +139,13 @@ export function useDraftManager(options) {
|
|
|
86
139
|
// as unsaved work — this is what keeps the branch-switch guard from silently
|
|
87
140
|
// discarding restored drafts.
|
|
88
141
|
//
|
|
89
|
-
// 2. The comparison uses `
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
//
|
|
94
|
-
const modifiedCount = useMemo(() => Object.keys(drafts).filter((id) => !loadedValues[id] ||
|
|
142
|
+
// 2. The comparison uses `fast-deep-equal`, a value-based deep equality
|
|
143
|
+
// check -- not property-order sensitive the way `JSON.stringify`
|
|
144
|
+
// comparison was. A rehydrated draft whose keys were serialized in a
|
|
145
|
+
// different order than the server-loaded object no longer shows as
|
|
146
|
+
// dirty when the values are semantically identical.
|
|
147
|
+
const modifiedCount = useMemo(() => Object.keys(drafts).filter((id) => !loadedValues[id] || !equal(drafts[id], loadedValues[id]))
|
|
148
|
+
.length, [drafts, loadedValues]);
|
|
95
149
|
const editedFiles = useMemo(() => {
|
|
96
150
|
const draftIds = Object.keys(drafts);
|
|
97
151
|
if (draftIds.length === 0)
|
|
@@ -109,6 +163,11 @@ export function useDraftManager(options) {
|
|
|
109
163
|
if (prevBranchRef.current && prevBranchRef.current !== options.branchName) {
|
|
110
164
|
setDrafts({});
|
|
111
165
|
setLoadedValues({});
|
|
166
|
+
// Base versions are file mtimes, i.e. inherently per-branch -- carrying
|
|
167
|
+
// them across a switch would compare one branch's version against
|
|
168
|
+
// another's.
|
|
169
|
+
draftBaseVersionsRef.current = {};
|
|
170
|
+
reconciledDraftIdsRef.current = new Set();
|
|
112
171
|
}
|
|
113
172
|
prevBranchRef.current = options.branchName;
|
|
114
173
|
}, [options.branchName]);
|
|
@@ -119,8 +178,15 @@ export function useDraftManager(options) {
|
|
|
119
178
|
try {
|
|
120
179
|
const raw = window.localStorage.getItem(storageKey);
|
|
121
180
|
if (raw) {
|
|
122
|
-
const
|
|
123
|
-
|
|
181
|
+
const { drafts: restored, baseVersions } = parsePersistedDrafts(raw);
|
|
182
|
+
// Stamp the base versions BEFORE queueing the state update: the
|
|
183
|
+
// reconcile effect below only stamps ids it has never seen, so
|
|
184
|
+
// recording them here is what stops a restored draft from being
|
|
185
|
+
// (wrongly) stamped with the version of the load that happens next.
|
|
186
|
+
for (const id of Object.keys(restored)) {
|
|
187
|
+
draftBaseVersionsRef.current[id] = baseVersions[id] ?? null;
|
|
188
|
+
}
|
|
189
|
+
setDrafts((prev) => ({ ...prev, ...restored }));
|
|
124
190
|
}
|
|
125
191
|
}
|
|
126
192
|
catch (err) {
|
|
@@ -136,7 +202,15 @@ export function useDraftManager(options) {
|
|
|
136
202
|
if (event.key !== storageKey || !event.newValue)
|
|
137
203
|
return;
|
|
138
204
|
try {
|
|
139
|
-
const parsed =
|
|
205
|
+
const { drafts: parsed, baseVersions } = parsePersistedDrafts(event.newValue);
|
|
206
|
+
// Same "only fill what's missing" rule as the merge below: an id we
|
|
207
|
+
// already have a base version for is one this tab is already drafting,
|
|
208
|
+
// so the other tab's base version must not overwrite ours.
|
|
209
|
+
for (const id of Object.keys(parsed)) {
|
|
210
|
+
if (!(id in draftBaseVersionsRef.current)) {
|
|
211
|
+
draftBaseVersionsRef.current[id] = baseVersions[id] ?? null;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
140
214
|
setDrafts((prev) => {
|
|
141
215
|
const missing = Object.keys(parsed).filter((id) => !(id in prev));
|
|
142
216
|
if (missing.length === 0)
|
|
@@ -162,6 +236,39 @@ export function useDraftManager(options) {
|
|
|
162
236
|
useEffect(() => {
|
|
163
237
|
draftsStorageKeyRef.current = storageKey;
|
|
164
238
|
}, [drafts]);
|
|
239
|
+
// Keep the per-draft base versions in step with `drafts`.
|
|
240
|
+
//
|
|
241
|
+
// A draft key appearing here for the first time was created by the user
|
|
242
|
+
// editing an entry they had already opened, so the version currently held
|
|
243
|
+
// for that entry IS the version their edit is based on. Keys that disappear
|
|
244
|
+
// (saved, discarded, reloaded) drop their base version with them, so the
|
|
245
|
+
// next edit re-stamps against whatever the server returned most recently.
|
|
246
|
+
//
|
|
247
|
+
// Declared BEFORE the persist effect so both run in the same commit, in this
|
|
248
|
+
// order -- the persist effect reads the ref this one just updated.
|
|
249
|
+
useEffect(() => {
|
|
250
|
+
const bases = draftBaseVersionsRef.current;
|
|
251
|
+
const draftIds = new Set(Object.keys(drafts));
|
|
252
|
+
for (const id of draftIds) {
|
|
253
|
+
if (id in bases)
|
|
254
|
+
continue;
|
|
255
|
+
const version = options.getEntryVersion?.(id);
|
|
256
|
+
// Only record a base we actually know. Leaving it absent (rather than
|
|
257
|
+
// writing `null`) keeps "never loaded, so nothing to compare" distinct
|
|
258
|
+
// from "restored with no recorded base", and lets a later edit stamp a
|
|
259
|
+
// real version once one is known.
|
|
260
|
+
if (version !== undefined)
|
|
261
|
+
bases[id] = version;
|
|
262
|
+
}
|
|
263
|
+
for (const id of reconciledDraftIdsRef.current) {
|
|
264
|
+
if (!draftIds.has(id))
|
|
265
|
+
delete bases[id];
|
|
266
|
+
}
|
|
267
|
+
reconciledDraftIdsRef.current = draftIds;
|
|
268
|
+
// Deliberately keyed on `drafts` alone: `options.getEntryVersion` is a
|
|
269
|
+
// fresh closure every render, and only a drafts change can add or remove
|
|
270
|
+
// the keys this effect reconciles.
|
|
271
|
+
}, [drafts]);
|
|
165
272
|
// Persist drafts to localStorage whenever they change
|
|
166
273
|
useEffect(() => {
|
|
167
274
|
if (typeof window === 'undefined')
|
|
@@ -169,7 +276,12 @@ export function useDraftManager(options) {
|
|
|
169
276
|
if (draftsStorageKeyRef.current !== storageKey)
|
|
170
277
|
return;
|
|
171
278
|
try {
|
|
172
|
-
|
|
279
|
+
const payload = {
|
|
280
|
+
v: DRAFTS_STORAGE_VERSION,
|
|
281
|
+
drafts,
|
|
282
|
+
baseVersions: draftBaseVersionsRef.current,
|
|
283
|
+
};
|
|
284
|
+
window.localStorage.setItem(storageKey, JSON.stringify(payload));
|
|
173
285
|
}
|
|
174
286
|
catch (err) {
|
|
175
287
|
console.warn('Failed to persist drafts', err);
|
|
@@ -215,9 +327,98 @@ export function useDraftManager(options) {
|
|
|
215
327
|
return shallowEqualRecord(prev.errors, next) ? prev : { entryId: prev.entryId, errors: next };
|
|
216
328
|
});
|
|
217
329
|
}, [effectiveValue, currentId, options.currentEntry?.schema, options.currentEntry?.format]);
|
|
330
|
+
/**
|
|
331
|
+
* The 409 presentation, in one place. The client-side stale-base check below
|
|
332
|
+
* and the server's own 409 response are the same situation from the user's
|
|
333
|
+
* point of view -- someone else's work is at risk -- so they must read
|
|
334
|
+
* identically, and "Reload" (now itself confirmed, see `handleReload`) is the
|
|
335
|
+
* recovery for both.
|
|
336
|
+
*/
|
|
337
|
+
const showConflictNotification = () => {
|
|
338
|
+
notifications.show({
|
|
339
|
+
message: 'Content was modified by another editor. Reload to see the latest changes.',
|
|
340
|
+
color: 'yellow',
|
|
341
|
+
autoClose: getNotificationDuration(8000),
|
|
342
|
+
withCloseButton: true,
|
|
343
|
+
});
|
|
344
|
+
};
|
|
345
|
+
const draftBaseState = () => {
|
|
346
|
+
if (!currentId || drafts[currentId] === undefined)
|
|
347
|
+
return 'ok';
|
|
348
|
+
const currentVersion = options.getEntryVersion?.(currentId);
|
|
349
|
+
// No server version known for this entry at all -- nothing to compare
|
|
350
|
+
// against, so this check has no opinion (the server's 409 still applies).
|
|
351
|
+
if (currentVersion === undefined)
|
|
352
|
+
return 'ok';
|
|
353
|
+
const base = draftBaseVersionsRef.current[currentId];
|
|
354
|
+
if (base === undefined)
|
|
355
|
+
return 'ok';
|
|
356
|
+
if (base === null)
|
|
357
|
+
return 'unknown-base';
|
|
358
|
+
return base !== currentVersion ? 'stale' : 'ok';
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* One-time upgrade prompt for a draft carried across the pre-v2 -> v2
|
|
362
|
+
* storage change.
|
|
363
|
+
*
|
|
364
|
+
* `null` (unknown base) used to be treated exactly like a known-stale
|
|
365
|
+
* draft: blocked, with Reload and Discard the only exits -- both of which
|
|
366
|
+
* destroy the draft. And nothing ever re-stamped it, because the reconcile
|
|
367
|
+
* effect only fills ids NOT already in `bases` and `null` is present. So a
|
|
368
|
+
* legacy draft was visible, permanently unsaveable, and the only advice
|
|
369
|
+
* offered destroyed it: "kept" meant "kept and unusable".
|
|
370
|
+
*
|
|
371
|
+
* A bounded, one-time population deserves a decision, not a dead end. On
|
|
372
|
+
* confirm the base is re-stamped to the version currently held, so the
|
|
373
|
+
* draft rejoins the ordinary flow and this is never asked again -- and the
|
|
374
|
+
* server's own OCC check remains the backstop for the case where the
|
|
375
|
+
* answer was wrong.
|
|
376
|
+
*/
|
|
377
|
+
const confirmUnknownBaseSave = () => new Promise((resolve) => {
|
|
378
|
+
let decided = false;
|
|
379
|
+
const settle = (value) => {
|
|
380
|
+
if (decided)
|
|
381
|
+
return;
|
|
382
|
+
decided = true;
|
|
383
|
+
resolve(value);
|
|
384
|
+
};
|
|
385
|
+
modals.openConfirmModal({
|
|
386
|
+
title: 'Unsaved draft from an older editor version',
|
|
387
|
+
children: 'This draft was saved by an earlier version of the editor, which did not record ' +
|
|
388
|
+
'which version of the file it was based on. Saving it will overwrite the copy ' +
|
|
389
|
+
'currently on the server, including any changes made by someone else since. ' +
|
|
390
|
+
'Reload or Discard this file instead if you would rather not risk that.',
|
|
391
|
+
labels: { confirm: 'Save anyway', cancel: 'Cancel' },
|
|
392
|
+
confirmProps: { color: 'red' },
|
|
393
|
+
onConfirm: () => settle(true),
|
|
394
|
+
// onCancel alone is not enough: Mantine does not fire it when the
|
|
395
|
+
// modal is dismissed via Escape or the overlay, which would leave
|
|
396
|
+
// this promise pending forever. onClose fires for every dismissal.
|
|
397
|
+
onCancel: () => settle(false),
|
|
398
|
+
onClose: () => settle(false),
|
|
399
|
+
});
|
|
400
|
+
});
|
|
218
401
|
const handleSave = async () => {
|
|
219
402
|
if (!options.currentEntry || !effectiveValue || !currentId)
|
|
220
403
|
return;
|
|
404
|
+
// Conflict check first: a stale-based draft must not be schema-validated
|
|
405
|
+
// into a green "Saved" -- and nagging about field errors is noise when the
|
|
406
|
+
// save is not going out at all.
|
|
407
|
+
const baseState = draftBaseState();
|
|
408
|
+
if (baseState === 'stale') {
|
|
409
|
+
showConflictNotification();
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
if (baseState === 'unknown-base') {
|
|
413
|
+
if (!(await confirmUnknownBaseSave()))
|
|
414
|
+
return;
|
|
415
|
+
// Re-stamp so the draft rejoins the ordinary flow: from here on its base
|
|
416
|
+
// is a real version and the normal stale check applies. Done BEFORE the
|
|
417
|
+
// write so a failed save doesn't re-prompt on every retry.
|
|
418
|
+
const currentVersion = options.getEntryVersion?.(currentId);
|
|
419
|
+
if (currentVersion !== undefined)
|
|
420
|
+
draftBaseVersionsRef.current[currentId] = currentVersion;
|
|
421
|
+
}
|
|
221
422
|
// Client-side pre-save validation (ED-H1): the same pure schema rules the
|
|
222
423
|
// server enforces authoritatively at the write boundary. Blocks the save
|
|
223
424
|
// and surfaces per-field errors in the form instead of a green "Saved".
|
|
@@ -269,23 +470,37 @@ export function useDraftManager(options) {
|
|
|
269
470
|
// validateEntry hook; show its message and map per-field errors (e.g.
|
|
270
471
|
// reference existence, which only the server can check) into the form.
|
|
271
472
|
const isValidation = err instanceof SaveApiError && err.status === 422;
|
|
473
|
+
// 403 = the writableBranch guard refused the write outright (base
|
|
474
|
+
// branch read-only, status past 'editing', or unreadable metadata --
|
|
475
|
+
// see api/guards.ts). This is exactly the window a fail-closed but
|
|
476
|
+
// still momentarily-stale client can hit: the branch list hasn't
|
|
477
|
+
// caught up yet, or the editor rendered before the server's answer
|
|
478
|
+
// arrived, so a Save that looked enabled got rejected server-side.
|
|
479
|
+
// #189 wrote specific guard copy explaining WHICH lock applies and how
|
|
480
|
+
// to recover (e.g. "withdraw it to make changes") -- falling through to
|
|
481
|
+
// the generic 'Save failed' below would throw that away in precisely
|
|
482
|
+
// the moment the user is most confused, so surface the server's own
|
|
483
|
+
// message instead, the same way the 422 branch already does.
|
|
484
|
+
const isForbidden = err instanceof SaveApiError && err.status === 403;
|
|
272
485
|
if (err instanceof SaveApiError &&
|
|
273
486
|
err.status === 422 &&
|
|
274
487
|
err.fieldErrors &&
|
|
275
488
|
err.fieldErrors.length > 0) {
|
|
276
489
|
setErrorState({ entryId: currentId, errors: toFieldErrorMap(err.fieldErrors) });
|
|
277
490
|
}
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
491
|
+
if (isConflict) {
|
|
492
|
+
showConflictNotification();
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
notifications.show({
|
|
496
|
+
...(isValidation ? { title: 'Save rejected' } : {}),
|
|
497
|
+
...(isForbidden ? { title: 'Save not allowed' } : {}),
|
|
498
|
+
message: isValidation || isForbidden ? err.message : 'Save failed',
|
|
499
|
+
color: 'red',
|
|
500
|
+
autoClose: getNotificationDuration(isValidation || isForbidden ? 8000 : 6000),
|
|
501
|
+
withCloseButton: true,
|
|
502
|
+
});
|
|
503
|
+
}
|
|
289
504
|
}
|
|
290
505
|
finally {
|
|
291
506
|
options.setBusy(false);
|
|
@@ -339,9 +554,15 @@ export function useDraftManager(options) {
|
|
|
339
554
|
if (typeof window !== 'undefined') {
|
|
340
555
|
const raw = window.localStorage.getItem(storageKey);
|
|
341
556
|
if (raw) {
|
|
342
|
-
const
|
|
343
|
-
delete
|
|
344
|
-
|
|
557
|
+
const { drafts: persisted, baseVersions } = parsePersistedDrafts(raw);
|
|
558
|
+
delete persisted[currentId];
|
|
559
|
+
delete baseVersions[currentId];
|
|
560
|
+
const payload = {
|
|
561
|
+
v: DRAFTS_STORAGE_VERSION,
|
|
562
|
+
drafts: persisted,
|
|
563
|
+
baseVersions,
|
|
564
|
+
};
|
|
565
|
+
window.localStorage.setItem(storageKey, JSON.stringify(payload));
|
|
345
566
|
}
|
|
346
567
|
}
|
|
347
568
|
}
|
|
@@ -356,10 +577,10 @@ export function useDraftManager(options) {
|
|
|
356
577
|
});
|
|
357
578
|
};
|
|
358
579
|
// Only prompt when there is a real draft that actually differs from the
|
|
359
|
-
// loaded value (`isSelectedDirty()` below uses the exact same
|
|
360
|
-
//
|
|
361
|
-
//
|
|
362
|
-
//
|
|
580
|
+
// loaded value (`isSelectedDirty()` below uses the exact same deep-equal
|
|
581
|
+
// comparison as `modifiedCount`). Discarding a draft that's identical to
|
|
582
|
+
// the loaded value, or discarding when there's no draft at all, has
|
|
583
|
+
// nothing to lose, so it clears silently.
|
|
363
584
|
const handleDiscardFileDraft = () => {
|
|
364
585
|
if (!currentId)
|
|
365
586
|
return;
|
|
@@ -375,14 +596,25 @@ export function useDraftManager(options) {
|
|
|
375
596
|
onConfirm: performDiscardFileDraft,
|
|
376
597
|
});
|
|
377
598
|
};
|
|
378
|
-
const
|
|
599
|
+
const performReload = async () => {
|
|
379
600
|
if (!options.currentEntry || !currentId)
|
|
380
601
|
return;
|
|
381
602
|
options.setBusy(true);
|
|
382
603
|
try {
|
|
383
604
|
const loaded = await options.loadEntry(options.currentEntry);
|
|
384
605
|
setLoadedValues((prev) => ({ ...prev, [currentId]: loaded }));
|
|
385
|
-
|
|
606
|
+
// Drop the draft rather than seeding it with `loaded`. `effectiveValue`
|
|
607
|
+
// falls back to `loadedValues`, so the rendered value is identical --
|
|
608
|
+
// and a draft that merely mirrors the server value is exactly the
|
|
609
|
+
// phantom-dirty snapshot this hook works to avoid (same reasoning as
|
|
610
|
+
// handleSave's drop above).
|
|
611
|
+
setDrafts((prev) => {
|
|
612
|
+
if (!(currentId in prev))
|
|
613
|
+
return prev;
|
|
614
|
+
const next = { ...prev };
|
|
615
|
+
delete next[currentId];
|
|
616
|
+
return next;
|
|
617
|
+
});
|
|
386
618
|
notifications.show({
|
|
387
619
|
message: 'Reloaded',
|
|
388
620
|
color: 'blue',
|
|
@@ -403,6 +635,29 @@ export function useDraftManager(options) {
|
|
|
403
635
|
options.setBusy(false);
|
|
404
636
|
}
|
|
405
637
|
};
|
|
638
|
+
// Reloading replaces the working value with the server's copy, so over a
|
|
639
|
+
// real draft it is every bit as destructive as "Discard draft" -- and it is
|
|
640
|
+
// what the conflict notification tells the losing editor to do, i.e. the one
|
|
641
|
+
// moment their unsaved work matters most. Guarded exactly like
|
|
642
|
+
// handleDiscardFileDraft: the same `isSelectedDirty()` test (nothing to lose
|
|
643
|
+
// -> no prompt) and the same confirm-modal shape.
|
|
644
|
+
const handleReload = async () => {
|
|
645
|
+
if (!options.currentEntry || !currentId)
|
|
646
|
+
return;
|
|
647
|
+
if (!isSelectedDirty()) {
|
|
648
|
+
await performReload();
|
|
649
|
+
return;
|
|
650
|
+
}
|
|
651
|
+
modals.openConfirmModal({
|
|
652
|
+
title: 'Reload file',
|
|
653
|
+
children: 'Reload this file from the server? Unsaved changes for this file will be lost.',
|
|
654
|
+
labels: { confirm: 'Reload', cancel: 'Cancel' },
|
|
655
|
+
confirmProps: { color: 'red' },
|
|
656
|
+
onConfirm: () => {
|
|
657
|
+
void performReload();
|
|
658
|
+
},
|
|
659
|
+
});
|
|
660
|
+
};
|
|
406
661
|
// Compute dirty state for a given entry
|
|
407
662
|
const isDirtyForEntry = (entryPath) => {
|
|
408
663
|
// Find entry by path to get its content ID
|
|
@@ -412,7 +667,7 @@ export function useDraftManager(options) {
|
|
|
412
667
|
const id = entry.contentId;
|
|
413
668
|
if (!drafts[id])
|
|
414
669
|
return false;
|
|
415
|
-
return !loadedValues[id] ||
|
|
670
|
+
return !loadedValues[id] || !equal(drafts[id], loadedValues[id]);
|
|
416
671
|
};
|
|
417
672
|
// Convenience helper for checking current selection
|
|
418
673
|
const isSelectedDirty = () => {
|
|
@@ -420,15 +675,14 @@ export function useDraftManager(options) {
|
|
|
420
675
|
return false;
|
|
421
676
|
if (!drafts[currentId])
|
|
422
677
|
return false;
|
|
423
|
-
return
|
|
424
|
-
JSON.stringify(drafts[currentId]) !== JSON.stringify(loadedValues[currentId]));
|
|
678
|
+
return !loadedValues[currentId] || !equal(drafts[currentId], loadedValues[currentId]);
|
|
425
679
|
};
|
|
426
680
|
// Returns true if ANY draft entry differs from its loaded value.
|
|
427
681
|
//
|
|
428
682
|
// Used for branch-switch guards so unsaved work in non-selected entries is not
|
|
429
|
-
// silently discarded. Derived from `modifiedCount`, so
|
|
430
|
-
// above also
|
|
431
|
-
//
|
|
683
|
+
// silently discarded. Derived from `modifiedCount`, so its semantics note
|
|
684
|
+
// above also applies: localStorage-restored drafts without a loaded value
|
|
685
|
+
// count as dirty.
|
|
432
686
|
const isAnyDirty = () => modifiedCount > 0;
|
|
433
687
|
return {
|
|
434
688
|
drafts,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDraftManager.js","sourceRoot":"","sources":["../../../src/editor/hooks/useDraftManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDraftManager.js","sourceRoot":"","sources":["../../../src/editor/hooks/useDraftManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CollectionItem } from '../../api/entries';
|
|
2
|
+
import type { ApiClient } from '../context';
|
|
3
|
+
import type { EditorEntry, EditorCollection } from '../Editor';
|
|
4
|
+
/** Cache key for a branch's combined schema + entries data. */
|
|
5
|
+
export declare const entriesKey: (branch: string) => string;
|
|
6
|
+
export interface EntriesData {
|
|
7
|
+
collections: EditorCollection[];
|
|
8
|
+
entries: EditorEntry[];
|
|
9
|
+
/** Entry-type schema names available on this branch (from entrySchemas' keys). */
|
|
10
|
+
availableSchemas: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface FetchEntriesParams {
|
|
13
|
+
resolvePreviewSrc: (entry: Partial<EditorEntry>) => string | undefined;
|
|
14
|
+
contentRoot?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Fetch every entry on a branch by following the list endpoint's pagination
|
|
18
|
+
* cursor. Deduped by logicalPath: the cursor is offset-based, so an item can
|
|
19
|
+
* repeat across pages if content changes between requests.
|
|
20
|
+
*
|
|
21
|
+
* Exported for direct unit testing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function listAllEntries(apiClient: {
|
|
24
|
+
entries: Pick<ApiClient['entries'], 'list'>;
|
|
25
|
+
}, branch: string): Promise<{
|
|
26
|
+
entries: CollectionItem[];
|
|
27
|
+
truncated: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* Fetch a branch's schema and full entry list, and build the EditorEntry/
|
|
31
|
+
* EditorCollection objects the editor renders. Exported for direct testing
|
|
32
|
+
* and for the imperative reload path (useEntryManager.refreshEntries).
|
|
33
|
+
*/
|
|
34
|
+
export declare function fetchEntriesAndSchema(apiClient: Pick<ApiClient, 'schema' | 'entries'>, branch: string, params: FetchEntriesParams): Promise<EntriesData>;
|
|
35
|
+
//# sourceMappingURL=useEntriesData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEntriesData.d.ts","sourceRoot":"","sources":["../../../src/editor/hooks/useEntriesData.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,mBAAmB,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAQ9D,+DAA+D;AAC/D,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,MAAoC,CAAA;AAEhF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,gBAAgB,EAAE,CAAA;IAC/B,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,MAAM,GAAG,SAAS,CAAA;IACtE,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE;IAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;CAAE,EAC1D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAkB5D;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,SAAS,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
|