@pantheon-systems/puck-css 0.7.0 → 0.9.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/agent/useAgentEdit.d.ts.map +1 -1
- package/dist/agent/useAgentEdit.js.map +1 -1
- package/dist/agent/useAgentTrigger.d.ts.map +1 -1
- package/dist/agent/useAgentTrigger.js.map +1 -1
- package/dist/auth/AuthGate.d.ts +1 -1
- package/dist/auth/AuthGate.d.ts.map +1 -1
- package/dist/collaboration/utils/avatarColor.d.ts +2 -8
- package/dist/collaboration/utils/avatarColor.d.ts.map +1 -1
- package/dist/collaboration/utils/avatarColor.js +4 -31
- package/dist/collaboration/utils/avatarColor.js.map +1 -1
- package/dist/collaboration/utils/focusHighlightConfig.d.ts.map +1 -1
- package/dist/collaboration/utils/focusHighlightConfig.js.map +1 -1
- package/dist/collaboration/utils/initials.d.ts +2 -0
- package/dist/collaboration/utils/initials.d.ts.map +1 -0
- package/dist/collaboration/utils/initials.js +27 -0
- package/dist/collaboration/utils/initials.js.map +1 -0
- package/dist/collaboration/utils/presenceIdentity.d.ts +29 -0
- package/dist/collaboration/utils/presenceIdentity.d.ts.map +1 -0
- package/dist/collaboration/utils/presenceIdentity.js +42 -0
- package/dist/collaboration/utils/presenceIdentity.js.map +1 -0
- package/dist/core/config.d.ts +2 -2
- 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 +21 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/data/css-queries/css-query-registry.d.ts +11 -0
- package/dist/data/css-queries/css-query-registry.d.ts.map +1 -0
- package/dist/data/css-queries/css-query-registry.js +28 -0
- package/dist/data/css-queries/css-query-registry.js.map +1 -0
- package/dist/data/dal/index.d.ts +1 -1
- package/dist/data/dal/index.d.ts.map +1 -1
- package/dist/data/dal/init.d.ts +5 -0
- package/dist/data/dal/init.d.ts.map +1 -1
- package/dist/data/dal/init.js +31 -4
- package/dist/data/dal/init.js.map +1 -1
- package/dist/data/dal/p1-store.d.ts +23 -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/data/page-editor-meta.d.ts.map +1 -1
- package/dist/data/page-editor-meta.js +0 -1
- package/dist/data/page-editor-meta.js.map +1 -1
- package/dist/data/query-provider.d.ts +1 -1
- package/dist/data/query-provider.d.ts.map +1 -1
- package/dist/data/remote-datasources/fetch-http-json.d.ts.map +1 -1
- package/dist/data/remote-datasources/fetch-http-json.js.map +1 -1
- package/dist/data/remote-datasources/loader.js +1 -1
- package/dist/data/remote-datasources/loader.js.map +1 -1
- package/dist/data/resolve-data-templates.d.ts.map +1 -1
- package/dist/data/resolve-data-templates.js +26 -4
- package/dist/data/resolve-data-templates.js.map +1 -1
- package/dist/editor/P1App.d.ts.map +1 -1
- package/dist/editor/P1App.js +1 -1
- package/dist/editor/P1App.js.map +1 -1
- package/dist/editor/P1PuckProvider.d.ts.map +1 -1
- package/dist/editor/P1PuckProvider.js +174 -57
- package/dist/editor/P1PuckProvider.js.map +1 -1
- package/dist/editor/aiPanelStore.d.ts +15 -0
- package/dist/editor/aiPanelStore.d.ts.map +1 -0
- package/dist/editor/aiPanelStore.js +43 -0
- package/dist/editor/aiPanelStore.js.map +1 -0
- package/dist/editor/components/CollapsibleFieldSection.d.ts +10 -0
- package/dist/editor/components/CollapsibleFieldSection.d.ts.map +1 -0
- package/dist/editor/components/CollapsibleFieldSection.js +9 -0
- package/dist/editor/components/CollapsibleFieldSection.js.map +1 -0
- package/dist/editor/components/CollapsibleSection.module.css +70 -0
- package/dist/editor/components/CollapsibleSectionHeader.d.ts +20 -0
- package/dist/editor/components/CollapsibleSectionHeader.d.ts.map +1 -0
- package/dist/editor/components/CollapsibleSectionHeader.js +10 -0
- package/dist/editor/components/CollapsibleSectionHeader.js.map +1 -0
- package/dist/editor/components/DraggableRow.d.ts +13 -0
- package/dist/editor/components/DraggableRow.d.ts.map +1 -0
- package/dist/editor/components/DraggableRow.js +20 -0
- package/dist/editor/components/DraggableRow.js.map +1 -0
- package/dist/editor/components/FieldHelpText.d.ts +6 -0
- package/dist/editor/components/FieldHelpText.d.ts.map +1 -0
- package/dist/editor/components/FieldHelpText.js +6 -0
- package/dist/editor/components/FieldHelpText.js.map +1 -0
- package/dist/editor/components/FieldHelpText.module.css +13 -0
- 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/OutlinePanel.d.ts +10 -0
- package/dist/editor/components/OutlinePanel.d.ts.map +1 -0
- package/dist/editor/components/OutlinePanel.js +64 -0
- package/dist/editor/components/OutlinePanel.js.map +1 -0
- package/dist/editor/components/OutlinePanel.module.css +111 -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 +61 -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/PanelHeader.d.ts +25 -0
- package/dist/editor/components/PanelHeader.d.ts.map +1 -0
- package/dist/editor/components/PanelHeader.js +12 -0
- package/dist/editor/components/PanelHeader.js.map +1 -0
- package/dist/editor/components/PanelHeader.module.css +34 -0
- package/dist/editor/components/PanelShell.d.ts +10 -0
- package/dist/editor/components/PanelShell.d.ts.map +1 -0
- package/dist/editor/components/PanelShell.js +7 -0
- package/dist/editor/components/PanelShell.js.map +1 -0
- package/dist/editor/components/PanelShell.module.css +15 -0
- package/dist/editor/components/PreviewPanelOverlay.d.ts +12 -0
- package/dist/editor/components/PreviewPanelOverlay.d.ts.map +1 -0
- package/dist/editor/components/PreviewPanelOverlay.js +7 -0
- package/dist/editor/components/PreviewPanelOverlay.js.map +1 -0
- package/dist/editor/components/PublishedStatusBadge.d.ts +1 -1
- package/dist/editor/components/PublishedStatusBadge.d.ts.map +1 -1
- package/dist/editor/components/VersionBannerOverride.d.ts +5 -1
- package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
- package/dist/editor/components/VersionBannerOverride.js +24 -7
- package/dist/editor/components/VersionBannerOverride.js.map +1 -1
- package/dist/editor/components/VersionTimeline.d.ts +20 -0
- package/dist/editor/components/VersionTimeline.d.ts.map +1 -0
- package/dist/editor/components/VersionTimeline.js +42 -0
- package/dist/editor/components/VersionTimeline.js.map +1 -0
- package/dist/editor/components/collapsibleSectionContext.d.ts +17 -0
- package/dist/editor/components/collapsibleSectionContext.d.ts.map +1 -0
- package/dist/editor/components/collapsibleSectionContext.js +13 -0
- package/dist/editor/components/collapsibleSectionContext.js.map +1 -0
- package/dist/editor/components/componentIconName.d.ts +15 -0
- package/dist/editor/components/componentIconName.d.ts.map +1 -0
- package/dist/editor/components/componentIconName.js +68 -0
- package/dist/editor/components/componentIconName.js.map +1 -0
- package/dist/editor/components/connectable.d.ts +1 -1
- package/dist/editor/components/connectable.d.ts.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewPanel.d.ts.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewPanel.js.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js +3 -15
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
- package/dist/editor/components/outlineTree.d.ts +68 -0
- package/dist/editor/components/outlineTree.d.ts.map +1 -0
- package/dist/editor/components/outlineTree.js +72 -0
- package/dist/editor/components/outlineTree.js.map +1 -0
- package/dist/editor/components/useDragReorder.d.ts +16 -0
- package/dist/editor/components/useDragReorder.d.ts.map +1 -0
- package/dist/editor/components/useDragReorder.js +35 -0
- package/dist/editor/components/useDragReorder.js.map +1 -0
- package/dist/editor/index.d.ts +13 -0
- package/dist/editor/index.d.ts.map +1 -1
- package/dist/editor/index.js +8 -0
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugin/P1Plugin.d.ts +25 -2
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +147 -63
- 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 +33 -50
- package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +54 -112
- 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/plugin/fieldGuidance.d.ts +45 -0
- package/dist/editor/plugin/fieldGuidance.d.ts.map +1 -0
- package/dist/editor/plugin/fieldGuidance.js +24 -0
- package/dist/editor/plugin/fieldGuidance.js.map +1 -0
- package/dist/editor/plugin/mergePreviewPlugin.d.ts.map +1 -1
- package/dist/editor/plugin/mergePreviewPlugin.js.map +1 -1
- package/dist/editor/plugin/selectHeaderCollaborators.d.ts +12 -0
- package/dist/editor/plugin/selectHeaderCollaborators.d.ts.map +1 -0
- package/dist/editor/plugin/selectHeaderCollaborators.js +15 -0
- package/dist/editor/plugin/selectHeaderCollaborators.js.map +1 -0
- package/dist/editor/thumbnails/LiveThumbnail.d.ts +47 -0
- package/dist/editor/thumbnails/LiveThumbnail.d.ts.map +1 -0
- package/dist/editor/thumbnails/LiveThumbnail.js +120 -0
- package/dist/editor/thumbnails/LiveThumbnail.js.map +1 -0
- package/dist/editor/thumbnails/ThumbnailCard.d.ts +37 -0
- package/dist/editor/thumbnails/ThumbnailCard.d.ts.map +1 -0
- package/dist/editor/thumbnails/ThumbnailCard.js +91 -0
- package/dist/editor/thumbnails/ThumbnailCard.js.map +1 -0
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts +33 -0
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.d.ts.map +1 -0
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js +79 -0
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js.map +1 -0
- package/dist/editor/thumbnails/humanizeComponentName.d.ts +18 -0
- package/dist/editor/thumbnails/humanizeComponentName.d.ts.map +1 -0
- package/dist/editor/thumbnails/humanizeComponentName.js +32 -0
- package/dist/editor/thumbnails/humanizeComponentName.js.map +1 -0
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts +15 -0
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.d.ts.map +1 -0
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js +19 -0
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js.map +1 -0
- package/dist/editor/thumbnails/thumbnailCache.d.ts +39 -0
- package/dist/editor/thumbnails/thumbnailCache.d.ts.map +1 -0
- package/dist/editor/thumbnails/thumbnailCache.js +97 -0
- package/dist/editor/thumbnails/thumbnailCache.js.map +1 -0
- 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 +15 -13
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +97 -20
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Overrides.d.ts +1 -1
- package/dist/editor/useP1Overrides.d.ts.map +1 -1
- package/dist/editor/useP1Overrides.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +20 -2
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +5 -0
- package/dist/editor/useP1Plugin.js.map +1 -1
- package/dist/editor/useRealtime.d.ts +2 -2
- package/dist/editor/useRealtime.d.ts.map +1 -1
- package/dist/editor/useRealtime.js.map +1 -1
- package/dist/editor/utils/componentRegistry.d.ts +4 -4
- package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
- package/dist/editor/utils/componentRegistry.js +0 -1
- 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/restoreDocumentVersion.d.ts +18 -0
- package/dist/editor/utils/restoreDocumentVersion.d.ts.map +1 -0
- package/dist/editor/utils/restoreDocumentVersion.js +49 -0
- package/dist/editor/utils/restoreDocumentVersion.js.map +1 -0
- package/dist/editor/utils/sanitizeRichtextDefaults.d.ts +22 -0
- package/dist/editor/utils/sanitizeRichtextDefaults.d.ts.map +1 -0
- package/dist/editor/utils/sanitizeRichtextDefaults.js +98 -0
- package/dist/editor/utils/sanitizeRichtextDefaults.js.map +1 -0
- 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.map +1 -1
- package/dist/editor/utils/syncComponentRegistry.js +32 -6
- package/dist/editor/utils/syncComponentRegistry.js.map +1 -1
- 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 +10 -7
- 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/stores/template-store-api.d.ts.map +1 -1
- package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts.map +1 -1
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js +1 -1
- package/dist/features/content-type-templates/ui/ActionBarPinButton.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 +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +1 -3
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js +2 -2
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js.map +1 -1
- package/dist/p1/editor/client.d.ts +1 -1
- package/dist/p1/editor/client.d.ts.map +1 -1
- package/dist/p1/editor/client.js +3 -3
- package/dist/p1/editor/client.js.map +1 -1
- package/dist/p1/editor/connect/connect-field-modal.d.ts +1 -1
- package/dist/p1/editor/connect/connect-field-modal.d.ts.map +1 -1
- package/dist/p1/editor/connect/connect-field-modal.js +2 -2
- package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
- package/dist/p1/editor/connect/connect-preview-config.d.ts +1 -1
- package/dist/p1/editor/connect/connect-preview-config.d.ts.map +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.js +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.d.ts +7 -1
- package/dist/p1/editor/editor-preview-resolve.d.ts.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.js +9 -2
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/p1/editor/{hooks.d.ts → hooks/api-hooks.d.ts} +9 -20
- package/dist/p1/editor/hooks/api-hooks.d.ts.map +1 -0
- package/dist/p1/editor/{hooks.js → hooks/api-hooks.js} +72 -57
- 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 +25 -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 +33 -0
- package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -0
- package/dist/p1/editor/icons/button-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/button-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/default-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/default-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/divider-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/divider-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/grid-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/grid-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/heading-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/heading-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/image-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/image-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/list-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/list-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/paragraph-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/paragraph-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/quote-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/quote-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/icons/spacer-block-icon.d.ts +1 -1
- package/dist/p1/editor/icons/spacer-block-icon.d.ts.map +1 -1
- package/dist/p1/editor/index.d.ts +2 -2
- package/dist/p1/editor/index.d.ts.map +1 -1
- package/dist/p1/editor/index.js +2 -2
- package/dist/p1/editor/index.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +65 -67
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts +4 -4
- package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.d.ts.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-form-helpers.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.d.ts.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.js +2 -2
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.js.map +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.d.ts.map +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js +2 -2
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.js.map +1 -1
- package/dist/p1/editor/template-autocomplete-layer.d.ts +2 -2
- package/dist/p1/editor/template-autocomplete-layer.d.ts.map +1 -1
- package/dist/p1/editor/template-autocomplete-layer.js +23 -3
- package/dist/p1/editor/template-autocomplete-layer.js.map +1 -1
- package/dist/p1/pages/render-client.d.ts +1 -1
- package/dist/p1/pages/render-client.d.ts.map +1 -1
- package/dist/pds/components/AgentChip.d.ts.map +1 -1
- package/dist/pds/components/AgentChip.js +1 -2
- package/dist/pds/components/AgentChip.js.map +1 -1
- package/dist/pds/components/CreatePageModal.d.ts +10 -1
- package/dist/pds/components/CreatePageModal.d.ts.map +1 -1
- package/dist/pds/components/CreatePageModal.js +29 -9
- package/dist/pds/components/CreatePageModal.js.map +1 -1
- package/dist/pds/components/CreatePageModal.module.css +34 -0
- package/dist/pds/components/DocStateBadge.d.ts +1 -1
- package/dist/pds/components/DocStateBadge.d.ts.map +1 -1
- package/dist/pds/components/DocStateBadge.js +1 -1
- package/dist/pds/components/DocStateBadge.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/NavIcon.js +1 -1
- package/dist/pds/components/NavIcon.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.d.ts +10 -2
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +16 -7
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.module.css +113 -35
- package/dist/pds/components/P1EditorSubheader.d.ts +1 -2
- package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorSubheader.js +10 -21
- package/dist/pds/components/P1EditorSubheader.js.map +1 -1
- package/dist/pds/components/P1EditorSubheader.module.css +7 -1
- package/dist/pds/components/PageNavigator.d.ts.map +1 -1
- package/dist/pds/components/PageNavigator.js.map +1 -1
- package/dist/pds/components/PresenceStack.d.ts +6 -5
- package/dist/pds/components/PresenceStack.d.ts.map +1 -1
- package/dist/pds/components/PresenceStack.js +43 -4
- package/dist/pds/components/PresenceStack.js.map +1 -1
- package/dist/pds/components/PresenceStack.module.css +52 -7
- package/dist/pds/components/PublishControl.js +2 -2
- package/dist/pds/components/PublishControl.js.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.d.ts +7 -2
- package/dist/pds/components/WorkstreamSwitcher.d.ts.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.js +5 -3
- package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
- 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 +1 -1
- package/dist/pds/theme/pds-core-content.js.map +1 -1
- package/dist/server.d.ts +4 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -1
- package/dist/server.js.map +1 -1
- package/dist/versioning/components/HistoricalVersionBanner.d.ts +19 -21
- package/dist/versioning/components/HistoricalVersionBanner.d.ts.map +1 -1
- package/dist/versioning/components/HistoricalVersionBanner.js +7 -19
- package/dist/versioning/components/HistoricalVersionBanner.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/VersionBannerActions.d.ts +15 -0
- package/dist/versioning/components/VersionBannerActions.d.ts.map +1 -0
- package/dist/versioning/components/VersionBannerActions.js +30 -0
- package/dist/versioning/components/VersionBannerActions.js.map +1 -0
- package/dist/versioning/components/VersionPublishedBadge.d.ts +1 -1
- package/dist/versioning/components/VersionPublishedBadge.d.ts.map +1 -1
- 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/components/version-compare/VisualVersionCompare.d.ts +2 -2
- package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts.map +1 -1
- 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/dist/versioning/utils/formatVersionDate.d.ts +15 -0
- package/dist/versioning/utils/formatVersionDate.d.ts.map +1 -0
- package/dist/versioning/utils/formatVersionDate.js +41 -0
- package/dist/versioning/utils/formatVersionDate.js.map +1 -0
- package/dist/versioning/utils/versionKind.d.ts +19 -0
- package/dist/versioning/utils/versionKind.d.ts.map +1 -0
- package/dist/versioning/utils/versionKind.js +30 -0
- package/dist/versioning/utils/versionKind.js.map +1 -0
- package/package.json +16 -8
- package/src/pds/theme/PuckEditorTheme.css +81 -0
- package/src/pds/theme/PuckEditorTheme.test.ts +50 -1
- package/src/pds/theme/pds-core-content.ts +1 -1
- package/src/pds/theme/pds-core.css +1 -1
- package/src/styles.css +693 -29
- 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
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* humanizeComponentName
|
|
3
|
+
*
|
|
4
|
+
* Derives a human-readable label from a Puck component key for display in the
|
|
5
|
+
* visual component sidebar. Callers should prefer a component's explicit
|
|
6
|
+
* `label` when one exists and fall back to this for the raw key.
|
|
7
|
+
*
|
|
8
|
+
* Transform: strip a trailing "Block" suffix, split PascalCase (and
|
|
9
|
+
* digit→capital boundaries) into words, and upper-case known acronyms.
|
|
10
|
+
*
|
|
11
|
+
* "HeroBlock" -> "Hero"
|
|
12
|
+
* "CardGridBlock" -> "Card Grid"
|
|
13
|
+
* "P1WelcomeBlock" -> "P1 Welcome"
|
|
14
|
+
* "CtaBannerBlock" -> "CTA Banner"
|
|
15
|
+
* "FaqBlock" -> "FAQ"
|
|
16
|
+
*/
|
|
17
|
+
/** Words (lower-cased) that should render fully upper-cased. */
|
|
18
|
+
const ACRONYMS = {
|
|
19
|
+
cta: 'CTA',
|
|
20
|
+
faq: 'FAQ',
|
|
21
|
+
};
|
|
22
|
+
export function humanizeComponentName(name) {
|
|
23
|
+
return name
|
|
24
|
+
.replace(/Block$/, '')
|
|
25
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1 $2')
|
|
26
|
+
.trim()
|
|
27
|
+
.split(/\s+/)
|
|
28
|
+
.filter(Boolean)
|
|
29
|
+
.map((word) => ACRONYMS[word.toLowerCase()] ?? word)
|
|
30
|
+
.join(' ');
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=humanizeComponentName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanizeComponentName.js","sourceRoot":"","sources":["../../../src/editor/thumbnails/humanizeComponentName.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,gEAAgE;AAChE,MAAM,QAAQ,GAA2B;IACvC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI;SACR,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;SACnD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveLiveThumbnailDrawer
|
|
3
|
+
*
|
|
4
|
+
* Decides whether useP1Editor should apply the live thumbnail component drawer,
|
|
5
|
+
* turning the `liveThumbnailDrawer` option into a Puck override layer (or null).
|
|
6
|
+
*
|
|
7
|
+
* The drawer is ON by default — passing `undefined` or `true` builds it, an
|
|
8
|
+
* options object builds it with those settings, and `false` opts out (Puck's
|
|
9
|
+
* default drawer is kept). Kept as a pure function so the default-on / opt-out
|
|
10
|
+
* policy is unit-testable independently of the drawer's rendering internals.
|
|
11
|
+
*/
|
|
12
|
+
import type { PuckOverrides } from '../plugin/index.js';
|
|
13
|
+
import { type LiveThumbnailDrawerOptions } from './buildLiveThumbnailDrawer.js';
|
|
14
|
+
export declare function resolveLiveThumbnailDrawer(config: unknown, option: boolean | LiveThumbnailDrawerOptions | undefined): Partial<PuckOverrides> | null;
|
|
15
|
+
//# sourceMappingURL=resolveLiveThumbnailDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveLiveThumbnailDrawer.d.ts","sourceRoot":"","sources":["../../../src/editor/thumbnails/resolveLiveThumbnailDrawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAA4B,KAAK,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE1G,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,GAAG,0BAA0B,GAAG,SAAS,GACvD,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAI/B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resolveLiveThumbnailDrawer
|
|
3
|
+
*
|
|
4
|
+
* Decides whether useP1Editor should apply the live thumbnail component drawer,
|
|
5
|
+
* turning the `liveThumbnailDrawer` option into a Puck override layer (or null).
|
|
6
|
+
*
|
|
7
|
+
* The drawer is ON by default — passing `undefined` or `true` builds it, an
|
|
8
|
+
* options object builds it with those settings, and `false` opts out (Puck's
|
|
9
|
+
* default drawer is kept). Kept as a pure function so the default-on / opt-out
|
|
10
|
+
* policy is unit-testable independently of the drawer's rendering internals.
|
|
11
|
+
*/
|
|
12
|
+
import { buildLiveThumbnailDrawer } from './buildLiveThumbnailDrawer.js';
|
|
13
|
+
export function resolveLiveThumbnailDrawer(config, option) {
|
|
14
|
+
if (option === false)
|
|
15
|
+
return null;
|
|
16
|
+
const options = typeof option === 'object' ? option : undefined;
|
|
17
|
+
return buildLiveThumbnailDrawer(config, options);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=resolveLiveThumbnailDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveLiveThumbnailDrawer.js","sourceRoot":"","sources":["../../../src/editor/thumbnails/resolveLiveThumbnailDrawer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,wBAAwB,EAAmC,MAAM,+BAA+B,CAAC;AAE1G,MAAM,UAAU,0BAA0B,CACxC,MAAe,EACf,MAAwD;IAExD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* thumbnailCache
|
|
3
|
+
*
|
|
4
|
+
* In-memory, client-side cache for rendered component-preview HTML: a
|
|
5
|
+
* module-level Map that survives editor/document remounts within a single
|
|
6
|
+
* page load (Puck is force-remounted via `key` on every document switch,
|
|
7
|
+
* which would otherwise re-render every preview from scratch).
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT persisted to localStorage: the cached value is later
|
|
10
|
+
* injected via `dangerouslySetInnerHTML` (see LiveThumbnail), and localStorage
|
|
11
|
+
* is writable by any same-origin script. Persisting it would let a same-origin
|
|
12
|
+
* write to a `p1-thumb:*` key plant markup that gets trusted and replayed on a
|
|
13
|
+
* future load. Keeping the cache in-memory only means an attacker would need
|
|
14
|
+
* live script execution in this exact session to influence it — at which
|
|
15
|
+
* point they already have full DOM control and this cache buys them nothing.
|
|
16
|
+
*
|
|
17
|
+
* A preview depends only on component name + defaultProps, NOT on the document
|
|
18
|
+
* being edited, so entries are reused across every page. The key embeds a hash
|
|
19
|
+
* of the defaultProps plus a caller-supplied version so stale entries
|
|
20
|
+
* invalidate when a component's inputs change.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Build a cache key for a component preview. Changing `defaultProps` or
|
|
24
|
+
* `version` yields a different key, so cached previews invalidate.
|
|
25
|
+
*/
|
|
26
|
+
export declare function makeThumbnailKey(name: string, defaultProps: unknown, version?: string): string;
|
|
27
|
+
/** Cache key for a component preview, shared by LiveThumbnail and ThumbnailCard. */
|
|
28
|
+
export declare function getThumbnailCacheKey(config: {
|
|
29
|
+
components?: Record<string, {
|
|
30
|
+
defaultProps?: unknown;
|
|
31
|
+
}>;
|
|
32
|
+
} | undefined, name: string, version?: string): string;
|
|
33
|
+
/** Read a cached preview (in-memory only — see file header for why). */
|
|
34
|
+
export declare function getCachedThumbnail(key: string): string | undefined;
|
|
35
|
+
/** Write a preview to the in-memory cache. */
|
|
36
|
+
export declare function setCachedThumbnail(key: string, html: string): void;
|
|
37
|
+
/** Clear the in-memory cache, plus any stray entries left by an older, localStorage-backed version of this cache. */
|
|
38
|
+
export declare function clearThumbnailCache(): void;
|
|
39
|
+
//# sourceMappingURL=thumbnailCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnailCache.d.ts","sourceRoot":"","sources":["../../../src/editor/thumbnails/thumbnailCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA8BH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,SAAM,GAAG,MAAM,CAS3F;AAUD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAE,GAAG,SAAS,EAC/E,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAER;AAED,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,8CAA8C;AAC9C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE;AAED,qHAAqH;AACrH,wBAAgB,mBAAmB,IAAI,IAAI,CAgB1C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* thumbnailCache
|
|
3
|
+
*
|
|
4
|
+
* In-memory, client-side cache for rendered component-preview HTML: a
|
|
5
|
+
* module-level Map that survives editor/document remounts within a single
|
|
6
|
+
* page load (Puck is force-remounted via `key` on every document switch,
|
|
7
|
+
* which would otherwise re-render every preview from scratch).
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT persisted to localStorage: the cached value is later
|
|
10
|
+
* injected via `dangerouslySetInnerHTML` (see LiveThumbnail), and localStorage
|
|
11
|
+
* is writable by any same-origin script. Persisting it would let a same-origin
|
|
12
|
+
* write to a `p1-thumb:*` key plant markup that gets trusted and replayed on a
|
|
13
|
+
* future load. Keeping the cache in-memory only means an attacker would need
|
|
14
|
+
* live script execution in this exact session to influence it — at which
|
|
15
|
+
* point they already have full DOM control and this cache buys them nothing.
|
|
16
|
+
*
|
|
17
|
+
* A preview depends only on component name + defaultProps, NOT on the document
|
|
18
|
+
* being edited, so entries are reused across every page. The key embeds a hash
|
|
19
|
+
* of the defaultProps plus a caller-supplied version so stale entries
|
|
20
|
+
* invalidate when a component's inputs change.
|
|
21
|
+
*/
|
|
22
|
+
// Legacy prefix from a prior localStorage-backed version of this cache.
|
|
23
|
+
// clearThumbnailCache() still purges any stray entries left behind on a
|
|
24
|
+
// user's machine, but nothing here reads or writes through it anymore.
|
|
25
|
+
const LEGACY_LS_PREFIX = 'p1-thumb:';
|
|
26
|
+
// In-memory only, lives as long as the JS runtime (browser tab).
|
|
27
|
+
const memory = new Map();
|
|
28
|
+
/** Small, dependency-free djb2 string hash. */
|
|
29
|
+
function hashString(input) {
|
|
30
|
+
let hash = 5381;
|
|
31
|
+
for (let i = 0; i < input.length; i++) {
|
|
32
|
+
hash = ((hash << 5) + hash + input.charCodeAt(i)) | 0;
|
|
33
|
+
}
|
|
34
|
+
return (hash >>> 0).toString(36);
|
|
35
|
+
}
|
|
36
|
+
/** localStorage if available, else null (SSR / disabled / private mode). */
|
|
37
|
+
function getStore() {
|
|
38
|
+
try {
|
|
39
|
+
return typeof globalThis !== 'undefined' && globalThis.localStorage
|
|
40
|
+
? globalThis.localStorage
|
|
41
|
+
: null;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Build a cache key for a component preview. Changing `defaultProps` or
|
|
49
|
+
* `version` yields a different key, so cached previews invalidate.
|
|
50
|
+
*/
|
|
51
|
+
export function makeThumbnailKey(name, defaultProps, version = '2') {
|
|
52
|
+
let serialized = '';
|
|
53
|
+
try {
|
|
54
|
+
serialized = JSON.stringify(defaultProps) ?? '';
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Non-serializable props — fall back to name+version only.
|
|
58
|
+
serialized = '';
|
|
59
|
+
}
|
|
60
|
+
return `${name}:${hashString(`${version}|${serialized}`)}`;
|
|
61
|
+
}
|
|
62
|
+
/** A component's defaultProps, resolved from its config entry. */
|
|
63
|
+
function defaultPropsFor(config, name) {
|
|
64
|
+
return config?.components?.[name]?.defaultProps ?? {};
|
|
65
|
+
}
|
|
66
|
+
/** Cache key for a component preview, shared by LiveThumbnail and ThumbnailCard. */
|
|
67
|
+
export function getThumbnailCacheKey(config, name, version) {
|
|
68
|
+
return makeThumbnailKey(name, defaultPropsFor(config, name), version);
|
|
69
|
+
}
|
|
70
|
+
/** Read a cached preview (in-memory only — see file header for why). */
|
|
71
|
+
export function getCachedThumbnail(key) {
|
|
72
|
+
return memory.get(key);
|
|
73
|
+
}
|
|
74
|
+
/** Write a preview to the in-memory cache. */
|
|
75
|
+
export function setCachedThumbnail(key, html) {
|
|
76
|
+
memory.set(key, html);
|
|
77
|
+
}
|
|
78
|
+
/** Clear the in-memory cache, plus any stray entries left by an older, localStorage-backed version of this cache. */
|
|
79
|
+
export function clearThumbnailCache() {
|
|
80
|
+
memory.clear();
|
|
81
|
+
const store = getStore();
|
|
82
|
+
if (store) {
|
|
83
|
+
try {
|
|
84
|
+
const keys = [];
|
|
85
|
+
for (let i = 0; i < store.length; i++) {
|
|
86
|
+
const k = store.key(i);
|
|
87
|
+
if (k && k.startsWith(LEGACY_LS_PREFIX))
|
|
88
|
+
keys.push(k);
|
|
89
|
+
}
|
|
90
|
+
keys.forEach((k) => store.removeItem(k));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// ignore
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=thumbnailCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnailCache.js","sourceRoot":"","sources":["../../../src/editor/thumbnails/thumbnailCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocuments.d.ts","sourceRoot":"","sources":["../../src/editor/useDocuments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAkB;IAC1B;;OAEG;IACH,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,CACN,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KACxE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;CACnD;AAUD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,kBAAkB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"useDocuments.d.ts","sourceRoot":"","sources":["../../src/editor/useDocuments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAE7D,UAAU,kBAAkB;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAkB;IAC1B;;OAEG;IACH,SAAS,EAAE,QAAQ,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,CACN,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,QAAQ,EACtB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KACxE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C;;OAEG;IACH,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B;;OAEG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;CACnD;AAUD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,QAAQ,GACT,EAAE,kBAAkB,GAAG,kBAAkB,CAqIzC"}
|
|
@@ -73,20 +73,28 @@ export function useDocuments({ client, siteId, branchId, }) {
|
|
|
73
73
|
}, [refresh, branchId]);
|
|
74
74
|
// Create a new document
|
|
75
75
|
const create = useCallback(async (path, initialData, options) => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
76
|
+
// Template pages get their initial version built by the backend from the
|
|
77
|
+
// template, which preserves each component's durable slot id. A
|
|
78
|
+
// client-built snapshot would be layered on top as a second version and
|
|
79
|
+
// bury those ids, so it is rejected here.
|
|
80
|
+
if (options?.templateId) {
|
|
81
|
+
if (initialData !== undefined) {
|
|
82
|
+
throw new Error('Cannot supply initialData when creating a document from a template; the backend builds the initial version from the template.');
|
|
83
|
+
}
|
|
84
|
+
const doc = await client.documents.create({
|
|
85
|
+
siteId,
|
|
86
|
+
branchId,
|
|
87
|
+
path,
|
|
81
88
|
templateId: options.templateId,
|
|
82
89
|
templateVersion: options.templateVersion ?? 1,
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
//
|
|
90
|
+
...(options.title ? { title: options.title } : {}),
|
|
91
|
+
});
|
|
92
|
+
await refresh();
|
|
93
|
+
return doc;
|
|
94
|
+
}
|
|
95
|
+
// Blank pages build their initial version on the client. A title seeds
|
|
96
|
+
// root.props.title (the same field Puck's root "title" input
|
|
97
|
+
// reads/writes) so it persists in the initial snapshot.
|
|
90
98
|
const baseData = initialData ?? DEFAULT_PUCK_DATA;
|
|
91
99
|
const data = options?.title
|
|
92
100
|
? {
|
|
@@ -97,12 +105,16 @@ export function useDocuments({ client, siteId, branchId, }) {
|
|
|
97
105
|
},
|
|
98
106
|
}
|
|
99
107
|
: baseData;
|
|
100
|
-
|
|
101
|
-
|
|
108
|
+
// Create the document and its initial version in a SINGLE call by passing
|
|
109
|
+
// the content inline as `snapshot`. Previously this was two calls
|
|
110
|
+
// (documents.create with no snapshot, then a separate versions.create),
|
|
111
|
+
// which produced two version rows for a brand-new page.
|
|
112
|
+
const doc = await client.documents.create({
|
|
113
|
+
siteId,
|
|
102
114
|
branchId,
|
|
115
|
+
path,
|
|
103
116
|
snapshot: data,
|
|
104
117
|
});
|
|
105
|
-
// Refresh the list
|
|
106
118
|
await refresh();
|
|
107
119
|
return doc;
|
|
108
120
|
}, [client, siteId, branchId, refresh]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocuments.js","sourceRoot":"","sources":["../../src/editor/useDocuments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAmDjE;;GAEG;AACH,MAAM,iBAAiB,GAAa;IAClC,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,MAAM,EACN,QAAQ,GACW;IACnB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,8EAA8E;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAS,QAAQ,CAAC,CAAC;IAEjD,kDAAkD;IAClD,kFAAkF;IAClF,4DAA4D;IAC5D,IAAI,QAAQ,KAAK,eAAe,CAAC,OAAO,EAAE,CAAC;QACzC,eAAe,CAAC,OAAO,GAAG,QAAQ,CAAC;QACnC,8DAA8D;QAC9D,0EAA0E;QAC1E,YAAY,CAAC,EAAE,CAAC,CAAC;QACjB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACrC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3D,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC5C,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/B,kDAAkD;IAClD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,OAAO,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAExB,wBAAwB;IACxB,MAAM,MAAM,GAAG,WAAW,CACxB,KAAK,EACH,IAAY,EACZ,WAAsB,EACtB,OAA2E,EACxD,EAAE;QACrB,
|
|
1
|
+
{"version":3,"file":"useDocuments.js","sourceRoot":"","sources":["../../src/editor/useDocuments.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Composes useP1Plugin and useP1Overrides internally, handles
|
|
6
|
-
* document loading, version management, historical version protection,
|
|
7
|
-
* and provides everything needed to render <Puck>.
|
|
8
|
-
*/
|
|
1
|
+
import type { Plugin } from '@puckeditor/core';
|
|
2
|
+
import type { PuckData } from '@pantheon-systems/css-client';
|
|
3
|
+
import type { UiState } from '@puckeditor/core';
|
|
4
|
+
import type { P1PuckContextValue } from '../core/types.js';
|
|
9
5
|
import type { ThumbnailMap } from './utils/buildThumbnailOverride.js';
|
|
6
|
+
import type { LiveThumbnailDrawerOptions } from './thumbnails/buildLiveThumbnailDrawer.js';
|
|
10
7
|
import type { UseP1PluginOptions } from './useP1Plugin.js';
|
|
11
8
|
import type { UseP1OverridesOptions } from './useP1Overrides.js';
|
|
12
9
|
import type { PuckOverrides } from './plugin/index.js';
|
|
13
|
-
import type { Plugin } from '@puckeditor/core';
|
|
14
|
-
import type { P1PuckContextValue } from '../core/types.js';
|
|
15
|
-
import type { PuckData } from '@pantheon-systems/css-client';
|
|
16
|
-
import type { UiState } from '@puckeditor/core';
|
|
17
10
|
/**
|
|
18
11
|
* Options for useP1Editor.
|
|
19
12
|
*/
|
|
@@ -45,6 +38,15 @@ export interface UseP1EditorOptions {
|
|
|
45
38
|
* ```
|
|
46
39
|
*/
|
|
47
40
|
thumbnails?: ThumbnailMap;
|
|
41
|
+
/**
|
|
42
|
+
* Live thumbnail component drawer — replaces Puck's default component list
|
|
43
|
+
* with collapsible categories of live-rendered preview cards. Defaults to
|
|
44
|
+
* ON for every consumer (no per-app wiring needed). Pass `false` to keep
|
|
45
|
+
* Puck's default drawer, or an options object to tune scale / card height.
|
|
46
|
+
*
|
|
47
|
+
* NOTE: this changes the default drawer for all `puck-css` editors.
|
|
48
|
+
*/
|
|
49
|
+
liveThumbnailDrawer?: boolean | LiveThumbnailDrawerOptions;
|
|
48
50
|
/** Customization options for overrides */
|
|
49
51
|
overrideOptions?: UseP1OverridesOptions;
|
|
50
52
|
/** Customization options for the CSS plugin (versions are managed internally) */
|
|
@@ -93,7 +95,7 @@ export interface UseP1EditorReturn {
|
|
|
93
95
|
loading: boolean;
|
|
94
96
|
/** Error from document loading, if any */
|
|
95
97
|
error: Error | null;
|
|
96
|
-
/** React key — pass directly as `<Puck key={puckKey} {...puckProps} />` to force clean remount on document
|
|
98
|
+
/** React key — pass directly as `<Puck key={puckKey} {...puckProps} />` to force a clean remount on role change (document switches sync in place) */
|
|
97
99
|
puckKey: string;
|
|
98
100
|
/** Props to spread onto <Puck> */
|
|
99
101
|
puckProps: PuckProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useP1Editor.d.ts","sourceRoot":"","sources":["../../src/editor/useP1Editor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useP1Editor.d.ts","sourceRoot":"","sources":["../../src/editor/useP1Editor.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAW3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,UAAU,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,aAAa,CAAC;IACpC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;IAC3D,0CAA0C;IAC1C,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,iFAAiF;IACjF,aAAa,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,iBAAiB,CAAC,CAAC;IACnH,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzE,wEAAwE;IACxE,kBAAkB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,mCAAmC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,6BAA6B;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,oFAAoF;IACpF,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oCAAoC;IACpC,SAAS,EAAE,aAAa,CAAC;IACzB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,kEAAkE;IAClE,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,QAAQ,EAAE,GAAG,KAAK;QAC9D,IAAI,EAAE,OAAO,CAAC;QACd,IAAI,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,OAAO,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,qGAAqG;IACrG,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACrD,oGAAoG;IACpG,EAAE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,qJAAqJ;IACrJ,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,oDAAoD;IACpD,GAAG,EAAE,kBAAkB,CAAC;IACxB;;;;OAIG;IACH,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA6gB1E"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
/**
|
|
2
3
|
* useP1Editor Hook
|
|
3
4
|
*
|
|
@@ -8,12 +9,15 @@
|
|
|
8
9
|
*/
|
|
9
10
|
import { useState, useEffect, useRef, useMemo, useCallback } from 'react';
|
|
10
11
|
import { useP1Puck } from '../core/P1PuckContext.js';
|
|
12
|
+
import { useVersions } from '../versioning/useVersions.js';
|
|
13
|
+
import { useP1Auth } from '../auth/index.js';
|
|
11
14
|
import { useP1Plugin } from './useP1Plugin.js';
|
|
12
15
|
import { useP1Overrides } from './useP1Overrides.js';
|
|
13
|
-
import { useVersions } from '../versioning/useVersions.js';
|
|
14
16
|
import { useComponentRegistry } from './useComponentRegistry.js';
|
|
15
|
-
import { useP1Auth } from '../auth/index.js';
|
|
16
17
|
import { buildThumbnailOverride } from './utils/buildThumbnailOverride.js';
|
|
18
|
+
import { restoreDocumentVersion } from './utils/restoreDocumentVersion.js';
|
|
19
|
+
import { createDocumentSyncStore, createDocumentSyncPlugin, documentSyncKey, } from './plugin/document-sync-plugin.js';
|
|
20
|
+
import { resolveLiveThumbnailDrawer } from './thumbnails/resolveLiveThumbnailDrawer.js';
|
|
17
21
|
/**
|
|
18
22
|
* All-in-one hook for setting up a P1-enabled Puck editor.
|
|
19
23
|
*
|
|
@@ -42,7 +46,7 @@ import { buildThumbnailOverride } from './utils/buildThumbnailOverride.js';
|
|
|
42
46
|
* ```
|
|
43
47
|
*/
|
|
44
48
|
export function useP1Editor(options) {
|
|
45
|
-
const { documentPath, puckConfig, additionalPlugins, additionalOverrides, thumbnails, overrideOptions, pluginOptions, onSelectionChange, onDocumentNotFound, } = options;
|
|
49
|
+
const { documentPath, puckConfig, additionalPlugins, additionalOverrides, thumbnails, liveThumbnailDrawer, overrideOptions, pluginOptions, onSelectionChange, onDocumentNotFound, } = options;
|
|
46
50
|
const css = useP1Puck();
|
|
47
51
|
const { user, logout } = useP1Auth();
|
|
48
52
|
// =========================================================================
|
|
@@ -155,6 +159,8 @@ export function useP1Editor(options) {
|
|
|
155
159
|
void css.loadVersion(version);
|
|
156
160
|
}
|
|
157
161
|
}, [versions, css.loadVersion, css.returnToLatest]);
|
|
162
|
+
// Revert to a prior version.
|
|
163
|
+
const handleRestoreVersion = useCallback((version) => restoreDocumentVersion(version, css, refreshVersions, () => { }), [css, refreshVersions]);
|
|
158
164
|
// =========================================================================
|
|
159
165
|
// Published Status (derived from version data)
|
|
160
166
|
// =========================================================================
|
|
@@ -207,9 +213,16 @@ export function useP1Editor(options) {
|
|
|
207
213
|
void refreshVersions();
|
|
208
214
|
consumerOnPublishSuccessRef.current?.(checkpoint);
|
|
209
215
|
}, [css, refreshVersions]);
|
|
216
|
+
const canRevert = css.userRole === 'admin' || css.userRole === 'editor';
|
|
217
|
+
// Pushes freshly loaded documents into the live Puck instance, replacing
|
|
218
|
+
// the remount-on-document-switch behavior the old document-scoped puckKey
|
|
219
|
+
// provided (see document-sync-plugin.tsx). Handed to the P1 plugin as well
|
|
220
|
+
// so its context sync defers document switches to this store.
|
|
221
|
+
const [documentSyncStore] = useState(createDocumentSyncStore);
|
|
210
222
|
const p1Plugin = useP1Plugin({
|
|
223
|
+
documentSyncStore,
|
|
211
224
|
onSelectionChange: handleSelectionChange,
|
|
212
|
-
currentUser: user ? { id:
|
|
225
|
+
currentUser: user ? { id: css.userId, name: user.name, email: user.email, avatar: user.picture } : undefined,
|
|
213
226
|
onLogout: logout,
|
|
214
227
|
puckConfig,
|
|
215
228
|
...pluginOptions,
|
|
@@ -219,6 +232,8 @@ export function useP1Editor(options) {
|
|
|
219
232
|
publishedStatus,
|
|
220
233
|
selectedVersionId: css.viewingVersion?.id ?? undefined,
|
|
221
234
|
onVersionSelect: handleVersionSelect,
|
|
235
|
+
onRestoreVersion: handleRestoreVersion,
|
|
236
|
+
canRevert,
|
|
222
237
|
});
|
|
223
238
|
const wrappedOnPublishSuccess = useCallback((checkpoint) => {
|
|
224
239
|
void refreshVersions();
|
|
@@ -232,32 +247,76 @@ export function useP1Editor(options) {
|
|
|
232
247
|
// =========================================================================
|
|
233
248
|
// Stable plugin array
|
|
234
249
|
// =========================================================================
|
|
250
|
+
if (process.env.NODE_ENV === "development") {
|
|
251
|
+
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
252
|
+
const prev = useRef(additionalPlugins);
|
|
253
|
+
if (prev.current !== additionalPlugins) {
|
|
254
|
+
const countChanged = (prev.current?.length ?? 0) !== (additionalPlugins?.length ?? 0);
|
|
255
|
+
if (!countChanged) {
|
|
256
|
+
console.warn("[useP1Editor] additionalPlugins ref is changing every render " +
|
|
257
|
+
"without a length change — the caller should memoise this array.");
|
|
258
|
+
}
|
|
259
|
+
prev.current = additionalPlugins;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
235
262
|
const additionalPluginsRef = useRef(additionalPlugins);
|
|
236
263
|
additionalPluginsRef.current = additionalPlugins;
|
|
264
|
+
const documentSyncPlugin = useMemo(() => createDocumentSyncPlugin(documentSyncStore), [documentSyncStore]);
|
|
265
|
+
// Read through a ref so a publish happens once per settled load, not on
|
|
266
|
+
// every safeData edit.
|
|
267
|
+
const safeDataRef = useRef(css.safeData);
|
|
268
|
+
safeDataRef.current = css.safeData;
|
|
269
|
+
const currentDocumentId = css.currentDocument?.id;
|
|
270
|
+
useEffect(() => {
|
|
271
|
+
if (loading || error || !currentDocumentId)
|
|
272
|
+
return;
|
|
273
|
+
documentSyncStore.publish({
|
|
274
|
+
syncKey: documentSyncKey(css.branchId, currentDocumentId),
|
|
275
|
+
data: safeDataRef.current,
|
|
276
|
+
});
|
|
277
|
+
}, [loading, error, css.branchId, currentDocumentId, documentSyncStore]);
|
|
237
278
|
const pluginCount = additionalPlugins?.length ?? 0;
|
|
238
279
|
const plugins = useMemo(() => {
|
|
239
|
-
const result = [p1Plugin];
|
|
280
|
+
const result = [p1Plugin, documentSyncPlugin];
|
|
240
281
|
if (additionalPluginsRef.current) {
|
|
241
282
|
result.push(...additionalPluginsRef.current);
|
|
242
283
|
}
|
|
243
284
|
return result;
|
|
244
|
-
}, [p1Plugin, pluginCount]);
|
|
285
|
+
}, [p1Plugin, documentSyncPlugin, pluginCount]);
|
|
245
286
|
// =========================================================================
|
|
246
|
-
// Stable onChange (disabled for historical versions
|
|
287
|
+
// Stable onChange (disabled for historical versions, guarded across
|
|
288
|
+
// document switches)
|
|
247
289
|
// =========================================================================
|
|
248
290
|
const isViewingHistoricalRef = useRef(css.isViewingHistoricalVersion);
|
|
249
291
|
isViewingHistoricalRef.current = css.isViewingHistoricalVersion;
|
|
292
|
+
// With Puck surviving document switches, onChange can fire while the canvas
|
|
293
|
+
// still shows the previous document but css already targets the new one
|
|
294
|
+
// (load in flight, or loaded but not yet pushed by the sync plugin). Saving
|
|
295
|
+
// then would write the old page's content into the new page — drop instead.
|
|
296
|
+
const saveTargetKeyRef = useRef(null);
|
|
297
|
+
saveTargetKeyRef.current = css.currentDocument?.id
|
|
298
|
+
? documentSyncKey(css.branchId, css.currentDocument.id)
|
|
299
|
+
: null;
|
|
250
300
|
const onChange = useCallback((data) => {
|
|
251
|
-
if (
|
|
252
|
-
|
|
301
|
+
if (isViewingHistoricalRef.current)
|
|
302
|
+
return;
|
|
303
|
+
const appliedKey = documentSyncStore.getAppliedKey();
|
|
304
|
+
if (appliedKey !== null && appliedKey !== saveTargetKeyRef.current) {
|
|
305
|
+
console.warn('[useP1Editor] save SKIPPED: canvas/document mismatch during switch.', 'canvas:', appliedKey, 'target:', saveTargetKeyRef.current);
|
|
306
|
+
return;
|
|
253
307
|
}
|
|
254
|
-
|
|
308
|
+
css.saveData(data);
|
|
309
|
+
}, [css.saveData, documentSyncStore]);
|
|
255
310
|
// =========================================================================
|
|
256
311
|
// Permissions (read-only for historical versions)
|
|
257
312
|
// =========================================================================
|
|
258
313
|
const permissions = useMemo(() => {
|
|
259
314
|
if (css.isViewingHistoricalVersion) {
|
|
260
|
-
|
|
315
|
+
// Omit edit:false so page/root fields are never locked by Puck's own
|
|
316
|
+
// readonly rendering. Interaction is blocked by ReadOnlyFieldsGuard
|
|
317
|
+
// (inert attribute) instead, which also covers root fields without
|
|
318
|
+
// requiring resolvePermissions on config.root.
|
|
319
|
+
return { delete: false, drag: false, duplicate: false, insert: false };
|
|
261
320
|
}
|
|
262
321
|
return { delete: true, drag: true, duplicate: true, edit: true, insert: true };
|
|
263
322
|
}, [css.isViewingHistoricalVersion]);
|
|
@@ -275,10 +334,20 @@ export function useP1Editor(options) {
|
|
|
275
334
|
// componentItem if needed.
|
|
276
335
|
const thumbnailsRef = useRef(thumbnails);
|
|
277
336
|
thumbnailsRef.current = thumbnails;
|
|
337
|
+
// Live thumbnail drawer — default ON for every consumer. Uses raw puckConfig
|
|
338
|
+
// (not configWithPermissions) so previews show all components regardless of
|
|
339
|
+
// role. Because useMemo deps on p1Overrides (stable after mount), changes to
|
|
340
|
+
// puckConfig or liveThumbnailDrawer after mount are not picked up.
|
|
341
|
+
const puckConfigRef = useRef(puckConfig);
|
|
342
|
+
puckConfigRef.current = puckConfig;
|
|
343
|
+
const liveThumbnailDrawerRef = useRef(liveThumbnailDrawer);
|
|
344
|
+
liveThumbnailDrawerRef.current = liveThumbnailDrawer;
|
|
278
345
|
const mergedOverrides = useMemo(() => {
|
|
279
|
-
// Layer order (last wins):
|
|
346
|
+
// Layer order (last wins):
|
|
347
|
+
// p1Overrides → liveThumbnailDrawer → thumbnailOverride → additionalOverrides
|
|
280
348
|
const layers = [
|
|
281
349
|
p1Overrides,
|
|
350
|
+
resolveLiveThumbnailDrawer(puckConfigRef.current, liveThumbnailDrawerRef.current),
|
|
282
351
|
thumbnailsRef.current ? buildThumbnailOverride(thumbnailsRef.current) : null,
|
|
283
352
|
additionalOverridesRef.current ?? null,
|
|
284
353
|
];
|
|
@@ -302,15 +371,15 @@ export function useP1Editor(options) {
|
|
|
302
371
|
// =========================================================================
|
|
303
372
|
// Assemble puckProps
|
|
304
373
|
// =========================================================================
|
|
305
|
-
// Key that forces Puck to remount on
|
|
374
|
+
// Key that forces Puck to remount on role change (let puck internally manage the change on document change),
|
|
306
375
|
// ensuring clean undo history, sidebar state, and fresh permission cache.
|
|
307
376
|
// Puck caches resolvePermissions results per component instance — the
|
|
308
377
|
// cache is only invalidated when component data changes, not when the
|
|
309
378
|
// resolver function changes. Including userRole in the key forces a
|
|
310
379
|
// clean remount with an empty cache when roles switch.
|
|
311
|
-
const puckKey = `css-${css.
|
|
380
|
+
const puckKey = `css-${css.userRole}`;
|
|
312
381
|
// Read persisted sidebar visibility from localStorage each time the Puck instance
|
|
313
|
-
// changes (puckKey changes on
|
|
382
|
+
// changes (puckKey changes on role switch). The value is passed as the
|
|
314
383
|
// initial `ui` prop so Puck never initializes with wrong defaults.
|
|
315
384
|
const initialSidebarUi = useMemo(() => {
|
|
316
385
|
try {
|
|
@@ -350,11 +419,19 @@ export function useP1Editor(options) {
|
|
|
350
419
|
const resolver = resolvePermsRef.current;
|
|
351
420
|
if (!resolver)
|
|
352
421
|
return params.permissions;
|
|
353
|
-
const basePerms = resolver({ type: name }, {});
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
422
|
+
const basePerms = resolver({ type: name, props: data?.props }, {});
|
|
423
|
+
// Template-authoring mode: the context resolver only sees a
|
|
424
|
+
// metadata summary (no pins), so the document's live _pinMap is the
|
|
425
|
+
// pin source. On a bound page the resolver reads the live template
|
|
426
|
+
// and already governs pins, so the page's own snapshot pinMap is
|
|
427
|
+
// ignored — otherwise a stale pin would stay locked after the
|
|
428
|
+
// template unpins it.
|
|
429
|
+
if (isTemplateMode) {
|
|
430
|
+
const pinMap = (params.appState?.data?.root?.props?._pinMap ?? {});
|
|
431
|
+
const compId = data?.props?.id;
|
|
432
|
+
if (compId && pinMap[compId]) {
|
|
433
|
+
return { ...basePerms, drag: false, delete: false };
|
|
434
|
+
}
|
|
358
435
|
}
|
|
359
436
|
return basePerms;
|
|
360
437
|
},
|