@pantheon-systems/puck-css 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/types.d.ts +17 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/data/dal/p1-store.d.ts +2 -0
- package/dist/data/dal/p1-store.d.ts.map +1 -1
- package/dist/data/dal/p1-store.js +14 -1
- package/dist/data/dal/p1-store.js.map +1 -1
- package/dist/editor/P1PuckProvider.d.ts.map +1 -1
- package/dist/editor/P1PuckProvider.js +177 -42
- package/dist/editor/P1PuckProvider.js.map +1 -1
- package/dist/editor/components/InspectorTabHeader.d.ts +18 -0
- package/dist/editor/components/InspectorTabHeader.d.ts.map +1 -0
- package/dist/editor/components/InspectorTabHeader.js +16 -0
- package/dist/editor/components/InspectorTabHeader.js.map +1 -0
- package/dist/editor/components/P1InspectorFields.d.ts +16 -0
- package/dist/editor/components/P1InspectorFields.d.ts.map +1 -0
- package/dist/editor/components/P1InspectorFields.js +54 -0
- package/dist/editor/components/P1InspectorFields.js.map +1 -0
- package/dist/editor/components/P1TemplateFields.d.ts +11 -0
- package/dist/editor/components/P1TemplateFields.d.ts.map +1 -0
- package/dist/editor/components/P1TemplateFields.js +52 -0
- package/dist/editor/components/P1TemplateFields.js.map +1 -0
- package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
- package/dist/editor/components/VersionBannerOverride.js +10 -2
- package/dist/editor/components/VersionBannerOverride.js.map +1 -1
- package/dist/editor/plugin/P1Plugin.d.ts +7 -0
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +36 -18
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/plugin/context-sync-key.d.ts +30 -0
- package/dist/editor/plugin/context-sync-key.d.ts.map +1 -0
- package/dist/editor/plugin/context-sync-key.js +36 -0
- package/dist/editor/plugin/context-sync-key.js.map +1 -0
- package/dist/editor/plugin/createP1Overrides.d.ts +2 -7
- package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +8 -70
- package/dist/editor/plugin/createP1Overrides.js.map +1 -1
- package/dist/editor/plugin/document-sync-plugin.d.ts +35 -0
- package/dist/editor/plugin/document-sync-plugin.d.ts.map +1 -0
- package/dist/editor/plugin/document-sync-plugin.js +130 -0
- package/dist/editor/plugin/document-sync-plugin.js.map +1 -0
- package/dist/editor/useComponentRegistry.d.ts +2 -5
- package/dist/editor/useComponentRegistry.d.ts.map +1 -1
- package/dist/editor/useComponentRegistry.js +3 -172
- package/dist/editor/useComponentRegistry.js.map +1 -1
- package/dist/editor/useDocuments.d.ts.map +1 -1
- package/dist/editor/useDocuments.js +27 -15
- package/dist/editor/useDocuments.js.map +1 -1
- package/dist/editor/useP1Editor.d.ts +1 -9
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +65 -17
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +6 -0
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +1 -0
- package/dist/editor/useP1Plugin.js.map +1 -1
- package/dist/editor/utils/componentRegistry.d.ts +22 -2
- package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
- package/dist/editor/utils/componentRegistry.js +9 -2
- package/dist/editor/utils/componentRegistry.js.map +1 -1
- package/dist/editor/utils/puckYjsBinding.d.ts.map +1 -1
- package/dist/editor/utils/puckYjsBinding.js +6 -4
- package/dist/editor/utils/puckYjsBinding.js.map +1 -1
- package/dist/editor/utils/snapshotToPuckData.d.ts +11 -0
- package/dist/editor/utils/snapshotToPuckData.d.ts.map +1 -0
- package/dist/editor/utils/snapshotToPuckData.js +27 -0
- package/dist/editor/utils/snapshotToPuckData.js.map +1 -0
- package/dist/editor/utils/syncComponentRegistry.d.ts +29 -0
- package/dist/editor/utils/syncComponentRegistry.d.ts.map +1 -0
- package/dist/editor/utils/syncComponentRegistry.js +238 -0
- package/dist/editor/utils/syncComponentRegistry.js.map +1 -0
- package/dist/editor/utils/syncComponentRegistryWriteOnly.d.ts +24 -0
- package/dist/editor/utils/syncComponentRegistryWriteOnly.d.ts.map +1 -0
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js +41 -0
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js.map +1 -0
- package/dist/editor/utils/templatePath.d.ts +8 -0
- package/dist/editor/utils/templatePath.d.ts.map +1 -0
- package/dist/editor/utils/templatePath.js +14 -0
- package/dist/editor/utils/templatePath.js.map +1 -0
- package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts +9 -4
- package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -1
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js +27 -8
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
- package/dist/features/content-type-templates/validation/structural-validation.d.ts +4 -4
- package/dist/features/content-type-templates/validation/structural-validation.d.ts.map +1 -1
- package/dist/features/content-type-templates/validation/structural-validation.js +123 -50
- package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/p1/editor/client.js +1 -1
- package/dist/p1/editor/client.js.map +1 -1
- package/dist/p1/editor/connect/connect-field-modal.js +1 -1
- package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.js +1 -1
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/p1/editor/{hooks.d.ts → hooks/api-hooks.d.ts} +5 -16
- package/dist/p1/editor/hooks/api-hooks.d.ts.map +1 -0
- package/dist/p1/editor/{hooks.js → hooks/api-hooks.js} +33 -45
- package/dist/p1/editor/hooks/api-hooks.js.map +1 -0
- package/dist/p1/editor/hooks/index.d.ts +4 -0
- package/dist/p1/editor/hooks/index.d.ts.map +1 -0
- package/dist/p1/editor/hooks/index.js +4 -0
- package/dist/p1/editor/hooks/index.js.map +1 -0
- package/dist/p1/editor/hooks/useEditorContext.d.ts +13 -0
- package/dist/p1/editor/hooks/useEditorContext.d.ts.map +1 -0
- package/dist/p1/editor/hooks/useEditorContext.js +16 -0
- package/dist/p1/editor/hooks/useEditorContext.js.map +1 -0
- package/dist/p1/editor/hooks/useP1Plugins.d.ts +3 -0
- package/dist/p1/editor/hooks/useP1Plugins.d.ts.map +1 -0
- package/dist/p1/editor/hooks/useP1Plugins.js +31 -0
- package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -0
- package/dist/p1/editor/index.d.ts +1 -1
- package/dist/p1/editor/index.d.ts.map +1 -1
- package/dist/p1/editor/index.js +1 -1
- package/dist/p1/editor/index.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.js +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.js.map +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js.map +1 -1
- package/dist/pds/components/LoadingMessage.d.ts +16 -0
- package/dist/pds/components/LoadingMessage.d.ts.map +1 -0
- package/dist/pds/components/LoadingMessage.js +6 -0
- package/dist/pds/components/LoadingMessage.js.map +1 -0
- package/dist/pds/components/LoadingMessage.module.css +44 -0
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +1 -1
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.module.css +2 -4
- package/dist/pds/components/P1EditorSubheader.module.css +5 -2
- package/dist/pds/index.d.ts +2 -0
- package/dist/pds/index.d.ts.map +1 -1
- package/dist/pds/index.js +1 -0
- package/dist/pds/index.js.map +1 -1
- package/dist/pds/theme/pds-core-content.d.ts +1 -1
- package/dist/pds/theme/pds-core-content.d.ts.map +1 -1
- package/dist/pds/theme/pds-core-content.js +3 -2
- package/dist/pds/theme/pds-core-content.js.map +1 -1
- package/dist/registry-sync.d.ts +7 -0
- package/dist/registry-sync.d.ts.map +1 -0
- package/dist/registry-sync.js +8 -0
- package/dist/registry-sync.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js.map +1 -1
- package/dist/versioning/components/ReadOnlyFieldsGuard.d.ts +14 -0
- package/dist/versioning/components/ReadOnlyFieldsGuard.d.ts.map +1 -0
- package/dist/versioning/components/ReadOnlyFieldsGuard.js +8 -0
- package/dist/versioning/components/ReadOnlyFieldsGuard.js.map +1 -0
- package/dist/versioning/components/VersionReadOnlyBanner.d.ts +12 -0
- package/dist/versioning/components/VersionReadOnlyBanner.d.ts.map +1 -0
- package/dist/versioning/components/VersionReadOnlyBanner.js +5 -0
- package/dist/versioning/components/VersionReadOnlyBanner.js.map +1 -0
- package/dist/versioning/index.d.ts +4 -0
- package/dist/versioning/index.d.ts.map +1 -1
- package/dist/versioning/index.js +2 -0
- package/dist/versioning/index.js.map +1 -1
- package/package.json +14 -4
- package/src/pds/theme/pds-core-content.ts +3 -2
- package/src/pds/theme/pds-core.css +3 -2
- package/src/styles.css +179 -0
- package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts +0 -15
- package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts.map +0 -1
- package/dist/features/content-type-templates/editor/useTemplateScaffold.js +0 -29
- package/dist/features/content-type-templates/editor/useTemplateScaffold.js.map +0 -1
- package/dist/p1/editor/hooks.d.ts.map +0 -1
- package/dist/p1/editor/hooks.js.map +0 -1
package/dist/core/config.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface P1Config {
|
|
|
14
14
|
maxRetries?: number;
|
|
15
15
|
userRole?: ContentRole;
|
|
16
16
|
}
|
|
17
|
-
export declare const PRODUCTION_BASE_URL = "https://ccr.p1.pantheon";
|
|
17
|
+
export declare const PRODUCTION_BASE_URL = "https://ccr.p1.pantheon.io";
|
|
18
18
|
export declare function createP1Config(envSource: Record<string, string | undefined>, options?: {
|
|
19
19
|
prefix?: string;
|
|
20
20
|
overrides?: Partial<P1Config>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAShE,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC7C,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAC/B,GACA,QAAQ,CA4CV;AAED,wBAAgB,gBAAgB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAiBxE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,CAAC,EAAE;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,eAAe,GAAG,IAAI,CASzB"}
|
package/dist/core/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { P1ContentClient } from '@pantheon-systems/css-client';
|
|
2
|
-
export const PRODUCTION_BASE_URL = 'https://ccr.p1.pantheon';
|
|
2
|
+
export const PRODUCTION_BASE_URL = 'https://ccr.p1.pantheon.io';
|
|
3
3
|
const VALID_AUTH_MODES = ['mock', 'broker'];
|
|
4
4
|
const DEFAULT_AUTH_MODE = 'broker';
|
|
5
5
|
function httpToWs(url) {
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAgB/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -170,6 +170,12 @@ export interface P1PuckContextValue {
|
|
|
170
170
|
* Current Puck data.
|
|
171
171
|
*/
|
|
172
172
|
currentData: PuckData | null;
|
|
173
|
+
/**
|
|
174
|
+
* True while loadDocument is fetching a document. Distinguishes "no
|
|
175
|
+
* document because a switch is in flight" (keep the canvas as-is) from
|
|
176
|
+
* "genuinely no document" (show the empty state).
|
|
177
|
+
*/
|
|
178
|
+
documentLoading: boolean;
|
|
173
179
|
/**
|
|
174
180
|
* Save status.
|
|
175
181
|
*/
|
|
@@ -252,6 +258,12 @@ export interface P1PuckContextValue {
|
|
|
252
258
|
* Whether currently viewing a historical (non-latest) version.
|
|
253
259
|
*/
|
|
254
260
|
isViewingHistoricalVersion: boolean;
|
|
261
|
+
/**
|
|
262
|
+
* True while returnToLatest is fetching the latest version from the server.
|
|
263
|
+
* Surfaced so the historical-version banner can show progress during the
|
|
264
|
+
* network round trip.
|
|
265
|
+
*/
|
|
266
|
+
isReturningToLatest: boolean;
|
|
255
267
|
/**
|
|
256
268
|
* Load a specific version by ID into the editor.
|
|
257
269
|
*/
|
|
@@ -464,7 +476,11 @@ export interface P1PuckContextValue {
|
|
|
464
476
|
*/
|
|
465
477
|
resolvePermissions?: (item: {
|
|
466
478
|
type: string;
|
|
467
|
-
|
|
479
|
+
props?: {
|
|
480
|
+
id?: string;
|
|
481
|
+
[key: string]: unknown;
|
|
482
|
+
};
|
|
483
|
+
}, appState: unknown) => {
|
|
468
484
|
edit: boolean;
|
|
469
485
|
drag: boolean;
|
|
470
486
|
delete: boolean;
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Each read/write/delete makes a real API call to the P1 backend.
|
|
5
5
|
* No data is cached in memory — the backend is the source of truth.
|
|
6
6
|
*/
|
|
7
|
+
import type { SeoMetadata } from "@pantheon-systems/css-client";
|
|
7
8
|
import type { PageStore } from "./types";
|
|
8
9
|
/**
|
|
9
10
|
* Minimal subset of P1Client used by the store.
|
|
@@ -48,6 +49,7 @@ export interface P1StoreClient {
|
|
|
48
49
|
export interface P1ContentClientInterface {
|
|
49
50
|
getPage(path: string): Promise<{
|
|
50
51
|
data: Record<string, unknown>;
|
|
52
|
+
metadata?: SeoMetadata;
|
|
51
53
|
} | null>;
|
|
52
54
|
}
|
|
53
55
|
export interface P1StoreConfig {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p1-store.d.ts","sourceRoot":"","sources":["../../../src/data/dal/p1-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAgC,MAAM,SAAS,CAAC;AAGvE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QACT,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,EAAE,CAAC,CAAC;QAC5G,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzJ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7E,CAAC;IACF,QAAQ,EAAE;QACR,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;QAChH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/H,CAAC;CACH;AAED,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"p1-store.d.ts","sourceRoot":"","sources":["../../../src/data/dal/p1-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAgC,MAAM,SAAS,CAAC;AAGvE;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE;QACT,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,EAAE,CAAC,CAAC;QAC5G,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,eAAe,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACzJ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7E,CAAC;IACF,QAAQ,EAAE;QACR,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;QAChH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KAC/H,CAAC;CACH;AAED,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,QAAQ,CAAC,EAAE,WAAW,CAAC;KACxB,GAAG,IAAI,CAAC,CAAC;CACX;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,aAAa,CAAC;IAC1D,4GAA4G;IAC5G,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAwCD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CA2KlE"}
|
|
@@ -79,7 +79,20 @@ export function createP1PageStore(config) {
|
|
|
79
79
|
if (contentClient && !getRequestAuthToken()) {
|
|
80
80
|
try {
|
|
81
81
|
const result = await contentClient.getPage(toDocPath(path));
|
|
82
|
-
|
|
82
|
+
const data = result?.data;
|
|
83
|
+
if (!data)
|
|
84
|
+
return undefined;
|
|
85
|
+
// Fold SEO metadata onto root.props._seo so it flows through the Data
|
|
86
|
+
// pipeline to generateMetadata. Public reads only (PCC-3407).
|
|
87
|
+
if (result?.metadata) {
|
|
88
|
+
const root = (data.root ?? {});
|
|
89
|
+
const props = (root.props ?? {});
|
|
90
|
+
return {
|
|
91
|
+
...data,
|
|
92
|
+
root: { ...root, props: { ...props, _seo: result.metadata } },
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return data;
|
|
83
96
|
}
|
|
84
97
|
catch (err) {
|
|
85
98
|
console.info("[css-store] get(%s) failed:", path, err.message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p1-store.js","sourceRoot":"","sources":["../../../src/data/dal/p1-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"p1-store.js","sourceRoot":"","sources":["../../../src/data/dal/p1-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P1PuckProvider.d.ts","sourceRoot":"","sources":["../../src/editor/P1PuckProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"P1PuckProvider.d.ts","sourceRoot":"","sources":["../../src/editor/P1PuckProvider.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AASjF,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,kBAAkB,CAAC;AAcpG,OAAO,KAAK,EAAE,eAAe,EAAuB,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAQhE,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACtD;;;;OAIG;IACH,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,eAAe,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAM7E"}
|
|
@@ -13,6 +13,7 @@ import { debounce } from '../core/utils/debounce.js';
|
|
|
13
13
|
import { withRetry } from '../core/utils/retry.js';
|
|
14
14
|
import { useRealtime } from './useRealtime.js';
|
|
15
15
|
import { useDocuments } from './useDocuments.js';
|
|
16
|
+
import { snapshotToPuckData } from './utils/snapshotToPuckData.js';
|
|
16
17
|
import { resolveFeatureConfig } from '../core/featureConfig.js';
|
|
17
18
|
import { resolveActivePlugins, composeProviders } from './composePlugins.js';
|
|
18
19
|
import { DEFAULT_CSS_FEATURE_PLUGINS } from './defaultPlugins.js';
|
|
@@ -126,6 +127,10 @@ userRole = 'editor', children, }) {
|
|
|
126
127
|
// Document state
|
|
127
128
|
const [currentDocument, setCurrentDocument] = useState(null);
|
|
128
129
|
const [currentData, setCurrentData] = useState(null);
|
|
130
|
+
// True while loadDocument is in flight. Consumers use it to distinguish
|
|
131
|
+
// "no document while switching" (keep showing the old canvas) from
|
|
132
|
+
// "genuinely no document" (show the empty state).
|
|
133
|
+
const [documentLoading, setDocumentLoading] = useState(false);
|
|
129
134
|
// Template state (PROPOSAL-010)
|
|
130
135
|
const [currentTemplate, setCurrentTemplate] = useState(null);
|
|
131
136
|
// Save state
|
|
@@ -163,7 +168,15 @@ userRole = 'editor', children, }) {
|
|
|
163
168
|
const [autoSavePaused, setAutoSavePaused] = useState(false);
|
|
164
169
|
// Version viewing state
|
|
165
170
|
const [viewingVersion, setViewingVersion] = useState(null);
|
|
166
|
-
|
|
171
|
+
// True while returnToLatest is fetching the latest version from the server,
|
|
172
|
+
// so the banner can show progress during the round trip.
|
|
173
|
+
const [isReturningToLatest, setIsReturningToLatest] = useState(false);
|
|
174
|
+
// Last known "latest" snapshot — a write-only internal fallback for
|
|
175
|
+
// returnToLatest when no live Yjs snapshot is available and the server
|
|
176
|
+
// re-fetch fails. Backed by a ref (not state): nothing renders from it, so
|
|
177
|
+
// making it state would add a setState on every autosave and churn the
|
|
178
|
+
// context memo / returnToLatest identity for no consumer benefit.
|
|
179
|
+
const latestVersionDataRef = useRef(null);
|
|
167
180
|
// Remote sync key - changes when remote updates arrive to trigger Puck sync
|
|
168
181
|
const [remoteSyncKey, setRemoteSyncKey] = useState(null);
|
|
169
182
|
// Counter to track pending remote updates that will trigger onChange callbacks.
|
|
@@ -184,6 +197,10 @@ userRole = 'editor', children, }) {
|
|
|
184
197
|
const REMOTE_SYNC_DEBOUNCE_DELAY = 50;
|
|
185
198
|
// Ref to track viewingVersion for use in callbacks (avoids stale closure)
|
|
186
199
|
const viewingVersionRef = useRef(null);
|
|
200
|
+
// Tracks the latest data seen by saveData when NOT viewing historical.
|
|
201
|
+
// Used by returnToLatest to restore unsaved edits that were in Puck's
|
|
202
|
+
// memory when the user navigated to a historical version.
|
|
203
|
+
const latestLocalDataRef = useRef(null);
|
|
187
204
|
// Helper to cancel any pending remote sync - used when loading documents/versions
|
|
188
205
|
// This prevents race conditions where a pending remote update overrides loaded data
|
|
189
206
|
const cancelPendingRemoteSync = useCallback(() => {
|
|
@@ -386,14 +403,14 @@ userRole = 'editor', children, }) {
|
|
|
386
403
|
// The list endpoint carries no layout content; fetch the full template.
|
|
387
404
|
const fullTemplate = await userClient.templates.get(siteId, branchIdRef.current, template.id);
|
|
388
405
|
// A template without a content array has no stored layout snapshot;
|
|
389
|
-
//
|
|
406
|
+
// creating a page from it would silently produce a blank page. An empty
|
|
390
407
|
// array is a legitimate empty layout and passes.
|
|
391
408
|
if (!fullTemplate.content) {
|
|
392
409
|
throw new Error(`Template "${template.label || template.name}" has no layout yet. Open it in the editor and add components before creating pages from it.`);
|
|
393
410
|
}
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
await createDocumentRawRef.current(path,
|
|
411
|
+
// The backend builds the initial version from the template, preserving
|
|
412
|
+
// each component's durable slot id; no client snapshot is sent.
|
|
413
|
+
await createDocumentRawRef.current(path, undefined, {
|
|
397
414
|
templateId: fullTemplate.id,
|
|
398
415
|
templateVersion: fullTemplate.version,
|
|
399
416
|
title,
|
|
@@ -534,6 +551,10 @@ userRole = 'editor', children, }) {
|
|
|
534
551
|
pendingDataRef.current = null;
|
|
535
552
|
setSaveStatus('saved');
|
|
536
553
|
setLastSaved(new Date());
|
|
554
|
+
// Keep the "latest" cache in sync with what was just persisted (REST
|
|
555
|
+
// success = confirmed persistence) so returning from a historical preview
|
|
556
|
+
// restores the correct content even if the on-return re-fetch fails.
|
|
557
|
+
latestVersionDataRef.current = dataToSave;
|
|
537
558
|
}
|
|
538
559
|
catch (error) {
|
|
539
560
|
setSaveStatus('error');
|
|
@@ -630,6 +651,11 @@ userRole = 'editor', children, }) {
|
|
|
630
651
|
return;
|
|
631
652
|
}
|
|
632
653
|
}
|
|
654
|
+
// Only genuine user edits reach here — load/restore echoes arm
|
|
655
|
+
// suppressNextSaveRef before they fire and are returned early above.
|
|
656
|
+
if (!viewingVersionRef.current) {
|
|
657
|
+
latestLocalDataRef.current = data;
|
|
658
|
+
}
|
|
633
659
|
// When realtime is enabled, detect whether this onChange came from a remote
|
|
634
660
|
// sync (Yjs update from another client) vs. a local user edit.
|
|
635
661
|
// Remote updates should NOT trigger a REST save — the DO handles persistence.
|
|
@@ -678,9 +704,20 @@ userRole = 'editor', children, }) {
|
|
|
678
704
|
// Update save status directly (skip debouncedSave/performSave chain).
|
|
679
705
|
setSaveStatus('saved');
|
|
680
706
|
setLastSaved(new Date());
|
|
707
|
+
// NOTE: intentionally do NOT update latestVersionDataRef here. This
|
|
708
|
+
// is the optimistic local send, before the DO confirms persistence —
|
|
709
|
+
// caching it would assert content that may never be saved. Realtime
|
|
710
|
+
// returns use the live Yjs snapshot (or the server re-fetch), not
|
|
711
|
+
// this cache (PCC-3421).
|
|
681
712
|
return;
|
|
682
713
|
}
|
|
683
714
|
}
|
|
715
|
+
// Mirror the realtime guard: don't save when previewing a historical version.
|
|
716
|
+
// Without this, the PuckDataSynchronizer echo from loadVersion resumes the
|
|
717
|
+
// debounce and writes historical data to the server.
|
|
718
|
+
if (viewingVersionRef.current !== null) {
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
684
721
|
pendingDataRef.current = data;
|
|
685
722
|
if (debouncedSave.isPaused()) {
|
|
686
723
|
debouncedSave.resume();
|
|
@@ -733,8 +770,10 @@ userRole = 'editor', children, }) {
|
|
|
733
770
|
// will no longer match — signaling that our response is stale.
|
|
734
771
|
loadRequestIdRef.current += 1;
|
|
735
772
|
const thisRequestId = loadRequestIdRef.current;
|
|
736
|
-
|
|
737
|
-
//
|
|
773
|
+
setDocumentLoading(true);
|
|
774
|
+
// Pre-clear the current document so nothing can save against the old
|
|
775
|
+
// one while the fetch is in flight. The canvas keeps showing the
|
|
776
|
+
// previous document — documentLoading suppresses the empty state.
|
|
738
777
|
currentDataDocumentPathRef.current = null;
|
|
739
778
|
setCurrentData(null);
|
|
740
779
|
setCurrentDocument(null);
|
|
@@ -776,7 +815,7 @@ userRole = 'editor', children, }) {
|
|
|
776
815
|
}
|
|
777
816
|
// Get latest version
|
|
778
817
|
const version = await userClient.versions.getLatest(siteId, branchId, doc.id);
|
|
779
|
-
const puckData = version.snapshot;
|
|
818
|
+
const puckData = snapshotToPuckData(version.snapshot);
|
|
780
819
|
// Staleness check: a newer loadDocument call has started
|
|
781
820
|
if (thisRequestId !== loadRequestIdRef.current) {
|
|
782
821
|
console.debug('[P1PuckProvider] Stale loadDocument — skipping (after getLatest)');
|
|
@@ -815,7 +854,7 @@ userRole = 'editor', children, }) {
|
|
|
815
854
|
currentDataDocumentPathRef.current = doc.path;
|
|
816
855
|
suppressNextSaveRef.current = puckData;
|
|
817
856
|
setCurrentData(puckData);
|
|
818
|
-
|
|
857
|
+
latestVersionDataRef.current = puckData;
|
|
819
858
|
setViewingVersion(null);
|
|
820
859
|
// Clear remoteSyncKey so document sync takes priority
|
|
821
860
|
setRemoteSyncKey(null);
|
|
@@ -834,6 +873,13 @@ userRole = 'editor', children, }) {
|
|
|
834
873
|
setCurrentDocument(null);
|
|
835
874
|
throw error;
|
|
836
875
|
}
|
|
876
|
+
finally {
|
|
877
|
+
// Guarded so a stale call's completion can't clear the flag while a
|
|
878
|
+
// newer load is still in flight.
|
|
879
|
+
if (thisRequestId === loadRequestIdRef.current) {
|
|
880
|
+
setDocumentLoading(false);
|
|
881
|
+
}
|
|
882
|
+
}
|
|
837
883
|
}, [userClient, siteId, branchId, cancelPendingRemoteSync, enableRealtime, debouncedSave, performSave]);
|
|
838
884
|
// Load a specific version into the editor
|
|
839
885
|
const loadVersion = useCallback(async (version) => {
|
|
@@ -856,12 +902,9 @@ userRole = 'editor', children, }) {
|
|
|
856
902
|
console.warn('Could not fetch full version data, using version from list:', fetchError);
|
|
857
903
|
}
|
|
858
904
|
}
|
|
859
|
-
|
|
860
|
-
//
|
|
861
|
-
|
|
862
|
-
if (!puckData || (!puckData.content && !puckData.root)) {
|
|
863
|
-
puckData = { content: [], root: { props: {} } };
|
|
864
|
-
}
|
|
905
|
+
// Parses a JSON-string snapshot and falls back to blank Puck data for
|
|
906
|
+
// an empty/invalid snapshot (e.g. version 1's initial blank state).
|
|
907
|
+
const puckData = snapshotToPuckData(versionToUse.snapshot);
|
|
865
908
|
// IMPORTANT: Update the ref BEFORE state updates to block any incoming remote updates
|
|
866
909
|
// The effect that syncs viewingVersionRef runs AFTER render, which is too late
|
|
867
910
|
// Remote updates check this ref, so we need it set synchronously
|
|
@@ -896,28 +939,73 @@ userRole = 'editor', children, }) {
|
|
|
896
939
|
dataToRestore = currentYjsData;
|
|
897
940
|
}
|
|
898
941
|
}
|
|
899
|
-
//
|
|
942
|
+
// 1. Edits typed inside the debounce window — cleared from pendingDataRef by loadVersion but still live here.
|
|
943
|
+
const hadLocalEdits = !!latestLocalDataRef.current;
|
|
944
|
+
dataToRestore ??= latestLocalDataRef.current;
|
|
945
|
+
latestLocalDataRef.current = null; // consume — prevents stale ref short-circuiting server fetch on next history visit
|
|
946
|
+
// Re-fetch the true latest from the server when no live Yjs snapshot is
|
|
947
|
+
// available. The cached latestVersionDataRef is only a last-resort fallback
|
|
948
|
+
// (e.g. no current document); it is NOT used on fetch failure — silently
|
|
949
|
+
// editing on a possibly-stale snapshot and resuming autosave is the exact
|
|
950
|
+
// data-loss path from PCC-3421. On failure we notify and abort instead,
|
|
951
|
+
// keeping the user in read-only preview so nothing is overwritten.
|
|
900
952
|
if (!dataToRestore) {
|
|
901
|
-
|
|
953
|
+
const doc = currentDocumentRef.current;
|
|
954
|
+
if (doc) {
|
|
955
|
+
// 2. Authoritative server state — the only source that reflects saves from other tabs, users, or agents.
|
|
956
|
+
setIsReturningToLatest(true);
|
|
957
|
+
try {
|
|
958
|
+
const version = await userClient.versions.getLatest(siteId, branchId, doc.id);
|
|
959
|
+
dataToRestore = version.snapshot;
|
|
960
|
+
}
|
|
961
|
+
catch (error) {
|
|
962
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
963
|
+
console.error('[P1PuckProvider] Failed to fetch latest version on return:', err);
|
|
964
|
+
if (showErrorNotifications) {
|
|
965
|
+
notificationContext.addError(`Couldn't load the latest version. Staying on the previewed version — try again.`, () => void returnToLatest());
|
|
966
|
+
}
|
|
967
|
+
return;
|
|
968
|
+
}
|
|
969
|
+
finally {
|
|
970
|
+
setIsReturningToLatest(false);
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
// 3. No document context — can't fetch; use last value written by performSave.
|
|
974
|
+
dataToRestore ??= latestVersionDataRef.current;
|
|
902
975
|
}
|
|
903
976
|
if (dataToRestore) {
|
|
904
977
|
// IMPORTANT: Update the ref BEFORE state updates
|
|
905
978
|
// Setting to null allows remote updates to resume
|
|
906
979
|
viewingVersionRef.current = null;
|
|
907
|
-
//
|
|
908
|
-
|
|
980
|
+
// Suppress the PuckDataSynchronizer echo: setCurrentData triggers a setData
|
|
981
|
+
// dispatch and Puck fires onChange → saveData. Arm the ref so saveData drops
|
|
982
|
+
// that echo; we control the save explicitly below.
|
|
983
|
+
suppressNextSaveRef.current = dataToRestore;
|
|
984
|
+
if (enableRealtime) {
|
|
985
|
+
pendingRemoteUpdatesRef.current += 1;
|
|
986
|
+
setTimeout(() => {
|
|
987
|
+
pendingRemoteUpdatesRef.current = 0;
|
|
988
|
+
}, 100);
|
|
989
|
+
}
|
|
909
990
|
currentDataDocumentPathRef.current = currentDocumentRef.current?.path ?? null;
|
|
910
991
|
setCurrentData(dataToRestore);
|
|
992
|
+
latestVersionDataRef.current = dataToRestore;
|
|
911
993
|
setViewingVersion(null);
|
|
912
994
|
// Clear remoteSyncKey so latest version sync takes priority
|
|
913
995
|
setRemoteSyncKey(null);
|
|
914
996
|
// Resume auto-save
|
|
915
997
|
debouncedSave.resume();
|
|
916
998
|
setAutoSavePaused(false);
|
|
917
|
-
|
|
999
|
+
// Only queue a save when restoring from local in-memory edits — those were
|
|
1000
|
+
// never persisted. Data from the server fetch is already the latest saved
|
|
1001
|
+
// version; queuing a save would create a spurious identical version.
|
|
1002
|
+
if (hadLocalEdits) {
|
|
1003
|
+
pendingDataRef.current = dataToRestore;
|
|
1004
|
+
debouncedSave();
|
|
1005
|
+
}
|
|
918
1006
|
setSaveStatus('idle');
|
|
919
1007
|
}
|
|
920
|
-
}, [
|
|
1008
|
+
}, [debouncedSave, cancelPendingRemoteSync, enableRealtime, realtime, userClient, siteId, branchId, showErrorNotifications, notificationContext]);
|
|
921
1009
|
// Computed property for whether viewing historical version
|
|
922
1010
|
const isViewingHistoricalVersion = viewingVersion !== null;
|
|
923
1011
|
// =========================================================================
|
|
@@ -1328,31 +1416,72 @@ userRole = 'editor', children, }) {
|
|
|
1328
1416
|
const result = await userClient.documents.publish(siteId, branchId, doc.id);
|
|
1329
1417
|
return result.checkpoint;
|
|
1330
1418
|
}, [userClient, siteId, branchId, debouncedSave, performSave, enableRealtime, realtime]);
|
|
1419
|
+
// Tracks the currently in-flight switchBranch flush (everything after the
|
|
1420
|
+
// synchronous branch-selection commit), so a rapid re-selection can await
|
|
1421
|
+
// the prior call instead of racing it. See switchBranch below.
|
|
1422
|
+
const switchBranchInFlightRef = useRef(null);
|
|
1331
1423
|
// Switch branch
|
|
1332
1424
|
const switchBranch = useCallback(async (newBranchId) => {
|
|
1333
|
-
//
|
|
1334
|
-
|
|
1335
|
-
//
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
//
|
|
1341
|
-
|
|
1425
|
+
// Commit the new workstream selection FIRST, synchronously, before the
|
|
1426
|
+
// async save-flush below. The UI (WorkstreamSwitcher) fires this inside
|
|
1427
|
+
// startTransition without awaiting it, so its "Switching..." busy state
|
|
1428
|
+
// clears as soon as this function's synchronous portion returns — well
|
|
1429
|
+
// before a save-flush of the outgoing document would resolve. If the
|
|
1430
|
+
// user navigates to a different document in that window, this provider
|
|
1431
|
+
// can remount (the editor route has no layout.tsx to shield it across
|
|
1432
|
+
// param changes), and its branchId initializer re-reads sessionStorage.
|
|
1433
|
+
// Persisting here — before the flush, not after — guarantees that read
|
|
1434
|
+
// always sees the newly selected branch instead of a stale one,
|
|
1435
|
+
// preventing the workstream selector from snapping back to Live/main.
|
|
1342
1436
|
setBranchId(newBranchId);
|
|
1343
1437
|
persistBranchId(newBranchId);
|
|
1344
|
-
setCurrentDocument(null);
|
|
1345
|
-
currentDataDocumentPathRef.current = null;
|
|
1346
|
-
setCurrentData(null);
|
|
1347
|
-
setViewingVersion(null);
|
|
1348
|
-
// Clear remoteSyncKey so new branch document sync takes priority
|
|
1349
|
-
setRemoteSyncKey(null);
|
|
1350
|
-
pendingDataRef.current = null;
|
|
1351
|
-
setSaveStatus('idle');
|
|
1352
|
-
setSaveError(null);
|
|
1353
|
-
// Update current branch
|
|
1354
1438
|
const branch = branches.find((b) => b.id === newBranchId);
|
|
1355
1439
|
setCurrentBranch(branch ?? null);
|
|
1440
|
+
// Serialize the flush portion below against any switchBranch call
|
|
1441
|
+
// still in flight. Because the branch commit above is synchronous but
|
|
1442
|
+
// the flush is not, a rapid second call (the switcher fires onSwitch
|
|
1443
|
+
// fire-and-forget, so its busy state clears well before the flush
|
|
1444
|
+
// resolves) can otherwise start its own flush while pendingDataRef
|
|
1445
|
+
// still holds the first call's outgoing edit — grabbing a performSave
|
|
1446
|
+
// closure already pointed at the intermediate branch and saving that
|
|
1447
|
+
// same edit a second time, to the wrong branch. Awaiting the prior
|
|
1448
|
+
// in-flight flush first guarantees only one flush ever reads/clears
|
|
1449
|
+
// pendingDataRef at a time, and that each flush's performSave targets
|
|
1450
|
+
// the branch that was current when that flush actually started.
|
|
1451
|
+
const previousSwitch = switchBranchInFlightRef.current;
|
|
1452
|
+
const thisSwitch = (async () => {
|
|
1453
|
+
if (previousSwitch) {
|
|
1454
|
+
// A prior switch's flush failure shouldn't block this one.
|
|
1455
|
+
await previousSwitch.catch(() => undefined);
|
|
1456
|
+
}
|
|
1457
|
+
// Cancel any pending remote sync - we're switching to a different branch
|
|
1458
|
+
cancelPendingRemoteSync();
|
|
1459
|
+
// Save any pending changes on the outgoing document/branch first
|
|
1460
|
+
if (pendingDataRef.current) {
|
|
1461
|
+
debouncedSave.cancel();
|
|
1462
|
+
await performSave();
|
|
1463
|
+
}
|
|
1464
|
+
// IMPORTANT: Update the ref BEFORE state updates
|
|
1465
|
+
viewingVersionRef.current = null;
|
|
1466
|
+
setCurrentDocument(null);
|
|
1467
|
+
currentDataDocumentPathRef.current = null;
|
|
1468
|
+
setCurrentData(null);
|
|
1469
|
+
setViewingVersion(null);
|
|
1470
|
+
// Clear remoteSyncKey so new branch document sync takes priority
|
|
1471
|
+
setRemoteSyncKey(null);
|
|
1472
|
+
pendingDataRef.current = null;
|
|
1473
|
+
setSaveStatus('idle');
|
|
1474
|
+
setSaveError(null);
|
|
1475
|
+
})();
|
|
1476
|
+
switchBranchInFlightRef.current = thisSwitch;
|
|
1477
|
+
try {
|
|
1478
|
+
await thisSwitch;
|
|
1479
|
+
}
|
|
1480
|
+
finally {
|
|
1481
|
+
if (switchBranchInFlightRef.current === thisSwitch) {
|
|
1482
|
+
switchBranchInFlightRef.current = null;
|
|
1483
|
+
}
|
|
1484
|
+
}
|
|
1356
1485
|
}, [branches, debouncedSave, performSave, cancelPendingRemoteSync, persistBranchId]);
|
|
1357
1486
|
// Presence context value (for hooks like useFocusRegionReporting)
|
|
1358
1487
|
const presenceContextValue = useMemo(() => {
|
|
@@ -1515,6 +1644,7 @@ userRole = 'editor', children, }) {
|
|
|
1515
1644
|
userId,
|
|
1516
1645
|
currentDocument,
|
|
1517
1646
|
currentData,
|
|
1647
|
+
documentLoading,
|
|
1518
1648
|
saveStatus,
|
|
1519
1649
|
lastSaved,
|
|
1520
1650
|
saveError,
|
|
@@ -1550,8 +1680,12 @@ userRole = 'editor', children, }) {
|
|
|
1550
1680
|
pauseAutoSave: stablePauseAutoSave,
|
|
1551
1681
|
resumeAutoSave: stableResumeAutoSave,
|
|
1552
1682
|
viewingVersion,
|
|
1553
|
-
|
|
1683
|
+
// Exposed for type/back-compat only — nothing renders from it. Read from
|
|
1684
|
+
// the ref; the memo already recomputes each save (via lastSaved), so this
|
|
1685
|
+
// stays adequately fresh without being a reactive dependency.
|
|
1686
|
+
latestVersionData: latestVersionDataRef.current,
|
|
1554
1687
|
isViewingHistoricalVersion,
|
|
1688
|
+
isReturningToLatest,
|
|
1555
1689
|
loadVersion: stableLoadVersion,
|
|
1556
1690
|
returnToLatest: stableReturnToLatest,
|
|
1557
1691
|
realtimeEnabled: enableRealtime,
|
|
@@ -1597,6 +1731,7 @@ userRole = 'editor', children, }) {
|
|
|
1597
1731
|
userId,
|
|
1598
1732
|
currentDocument,
|
|
1599
1733
|
currentData,
|
|
1734
|
+
documentLoading,
|
|
1600
1735
|
saveStatus,
|
|
1601
1736
|
lastSaved,
|
|
1602
1737
|
saveError,
|
|
@@ -1627,8 +1762,8 @@ userRole = 'editor', children, }) {
|
|
|
1627
1762
|
stablePauseAutoSave,
|
|
1628
1763
|
stableResumeAutoSave,
|
|
1629
1764
|
viewingVersion,
|
|
1630
|
-
latestVersionData,
|
|
1631
1765
|
isViewingHistoricalVersion,
|
|
1766
|
+
isReturningToLatest,
|
|
1632
1767
|
stableLoadVersion,
|
|
1633
1768
|
stableReturnToLatest,
|
|
1634
1769
|
enableRealtime,
|