@pantheon-systems/puck-css 0.12.0 → 0.14.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/README.md +1 -1
- package/dist/agent/components/AgentActionButton.js +0 -13
- package/dist/agent/components/AgentActionButton.js.map +1 -1
- package/dist/agent/components/AgentActionModal.js +0 -13
- package/dist/agent/components/AgentActionModal.js.map +1 -1
- package/dist/agent/components/AgentStatusPanel.js +0 -10
- package/dist/agent/components/AgentStatusPanel.js.map +1 -1
- package/dist/agent/components/index.js +0 -5
- package/dist/agent/components/index.js.map +1 -1
- package/dist/agent/useAgentEdit.js +0 -12
- package/dist/agent/useAgentEdit.js.map +1 -1
- package/dist/agent/useAgentTrigger.js +0 -29
- package/dist/agent/useAgentTrigger.js.map +1 -1
- package/dist/auth/P1AuthProvider.d.ts +9 -2
- package/dist/auth/P1AuthProvider.d.ts.map +1 -1
- package/dist/auth/P1AuthProvider.js +21 -44
- package/dist/auth/P1AuthProvider.js.map +1 -1
- package/dist/auth/P1LoginPage.js +0 -18
- package/dist/auth/P1LoginPage.js.map +1 -1
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +1 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/logout.d.ts +23 -0
- package/dist/auth/logout.d.ts.map +1 -0
- package/dist/auth/logout.js +14 -0
- package/dist/auth/logout.js.map +1 -0
- package/dist/auth/storage-keys.d.ts +5 -0
- package/dist/auth/storage-keys.d.ts.map +1 -0
- package/dist/auth/storage-keys.js +3 -0
- package/dist/auth/storage-keys.js.map +1 -0
- package/dist/collaboration/components/AgentActivityBanner.js +0 -15
- package/dist/collaboration/components/AgentActivityBanner.js.map +1 -1
- package/dist/collaboration/components/CollaboratorAvatars.js +0 -17
- package/dist/collaboration/components/CollaboratorAvatars.js.map +1 -1
- package/dist/collaboration/components/FocusRegionHighlight.js +0 -9
- package/dist/collaboration/components/FocusRegionHighlight.js.map +1 -1
- package/dist/collaboration/components/PresenceIndicator.js +0 -9
- package/dist/collaboration/components/PresenceIndicator.js.map +1 -1
- package/dist/collaboration/useBranchPresence.js +0 -36
- package/dist/collaboration/useBranchPresence.js.map +1 -1
- package/dist/collaboration/useFocusRegionReporting.js +0 -75
- package/dist/collaboration/useFocusRegionReporting.js.map +1 -1
- package/dist/collaboration/usePresence.js +0 -37
- package/dist/collaboration/usePresence.js.map +1 -1
- package/dist/collaboration/useSitePresence.js +0 -36
- package/dist/collaboration/useSitePresence.js.map +1 -1
- package/dist/collaboration/utils/avatarColor.js +0 -3
- package/dist/collaboration/utils/avatarColor.js.map +1 -1
- package/dist/collaboration/utils/focusHighlightConfig.js +0 -61
- package/dist/collaboration/utils/focusHighlightConfig.js.map +1 -1
- package/dist/collaboration/utils/focusRegionMap.js +1 -80
- package/dist/collaboration/utils/focusRegionMap.js.map +1 -1
- package/dist/collaboration/utils/initials.js +0 -14
- package/dist/collaboration/utils/initials.js.map +1 -1
- package/dist/collaboration/utils/presenceIdentity.js +0 -26
- package/dist/collaboration/utils/presenceIdentity.js.map +1 -1
- package/dist/core/FocusHighlightContext.js +0 -31
- package/dist/core/FocusHighlightContext.js.map +1 -1
- package/dist/core/NotificationContext.js +2 -67
- package/dist/core/NotificationContext.js.map +1 -1
- package/dist/core/P1PuckContext.js +0 -31
- package/dist/core/P1PuckContext.js.map +1 -1
- package/dist/core/PresenceContext.js +0 -18
- package/dist/core/PresenceContext.js.map +1 -1
- package/dist/core/config.js +0 -11
- package/dist/core/config.js.map +1 -1
- package/dist/core/featureConfig.js +0 -32
- package/dist/core/featureConfig.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/plugin-types.d.ts +9 -0
- package/dist/core/plugin-types.d.ts.map +1 -1
- package/dist/core/types.d.ts +7 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +0 -3
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils/debounce.js +0 -18
- package/dist/core/utils/debounce.js.map +1 -1
- package/dist/core/utils/requestError.js +0 -5
- package/dist/core/utils/requestError.js.map +1 -1
- package/dist/core/utils/retry.js +0 -31
- package/dist/core/utils/retry.js.map +1 -1
- package/dist/core/utils/throttle.js +0 -24
- package/dist/core/utils/throttle.js.map +1 -1
- package/dist/data/cross-reference-resolve.js +0 -6
- package/dist/data/cross-reference-resolve.js.map +1 -1
- package/dist/data/cross-reference.js +0 -15
- package/dist/data/cross-reference.js.map +1 -1
- package/dist/data/css-queries/css-query-registry.d.ts +2 -2
- package/dist/data/css-queries/css-query-registry.js +1 -1
- package/dist/data/css-queries/css-query-registry.js.map +1 -1
- package/dist/data/dal/index.js +0 -21
- package/dist/data/dal/index.js.map +1 -1
- package/dist/data/dal/init.js +0 -40
- package/dist/data/dal/init.js.map +1 -1
- package/dist/data/dal/p1-store.d.ts.map +1 -1
- package/dist/data/dal/p1-store.js +11 -41
- package/dist/data/dal/p1-store.js.map +1 -1
- package/dist/data/data-list-block/builtin-components/cards.d.ts +1 -0
- package/dist/data/data-list-block/builtin-components/cards.d.ts.map +1 -1
- package/dist/data/data-list-block/builtin-components/cards.js +16 -16
- package/dist/data/data-list-block/builtin-components/cards.js.map +1 -1
- package/dist/data/data-list-block/builtin-components/listing.d.ts +1 -0
- package/dist/data/data-list-block/builtin-components/listing.d.ts.map +1 -1
- package/dist/data/data-list-block/builtin-components/listing.js +4 -3
- package/dist/data/data-list-block/builtin-components/listing.js.map +1 -1
- package/dist/data/data-list-block/builtin-components/rows.d.ts +1 -0
- package/dist/data/data-list-block/builtin-components/rows.d.ts.map +1 -1
- package/dist/data/data-list-block/builtin-components/rows.js +3 -3
- package/dist/data/data-list-block/builtin-components/rows.js.map +1 -1
- package/dist/data/data-list-block/create-data-list-block.d.ts +1 -0
- package/dist/data/data-list-block/create-data-list-block.d.ts.map +1 -1
- package/dist/data/data-list-block/create-data-list-block.js +7 -11
- package/dist/data/data-list-block/create-data-list-block.js.map +1 -1
- package/dist/data/data-list-block/data-list.css +314 -0
- package/dist/data/data-list-block/utils.js +0 -1
- package/dist/data/data-list-block/utils.js.map +1 -1
- package/dist/data/fields/pds-field-helpers.js +1 -4
- package/dist/data/fields/pds-field-helpers.js.map +1 -1
- package/dist/data/fields/visible-when.js +0 -5
- package/dist/data/fields/visible-when.js.map +1 -1
- package/dist/data/fields.d.ts.map +1 -1
- package/dist/data/fields.js +7 -14
- package/dist/data/fields.js.map +1 -1
- package/dist/data/get-page.js +0 -1
- package/dist/data/get-page.js.map +1 -1
- package/dist/data/page-editor-meta.js +0 -7
- package/dist/data/page-editor-meta.js.map +1 -1
- package/dist/data/page-store.js +0 -32
- package/dist/data/page-store.js.map +1 -1
- package/dist/data/page-structure.js +0 -3
- package/dist/data/page-structure.js.map +1 -1
- package/dist/data/paths.d.ts +6 -0
- package/dist/data/paths.d.ts.map +1 -1
- package/dist/data/paths.js +3 -16
- package/dist/data/paths.js.map +1 -1
- package/dist/data/query-provider.d.ts +14 -0
- package/dist/data/query-provider.d.ts.map +1 -1
- package/dist/data/query-provider.js +20 -9
- package/dist/data/query-provider.js.map +1 -1
- package/dist/data/remote-datasources/fetch-http-json.js +0 -5
- package/dist/data/remote-datasources/fetch-http-json.js.map +1 -1
- package/dist/data/remote-datasources/loader.js +0 -21
- package/dist/data/remote-datasources/loader.js.map +1 -1
- package/dist/data/remote-datasources/remote-datasource-registry.js +0 -4
- package/dist/data/remote-datasources/remote-datasource-registry.js.map +1 -1
- package/dist/data/resolve-data-templates.js +0 -24
- package/dist/data/resolve-data-templates.js.map +1 -1
- package/dist/data/route-templates.js +0 -29
- package/dist/data/route-templates.js.map +1 -1
- package/dist/data/semantic-ops.js +0 -11
- package/dist/data/semantic-ops.js.map +1 -1
- package/dist/data/styles.js +0 -2
- package/dist/data/styles.js.map +1 -1
- package/dist/data/template-autocomplete.js +0 -8
- package/dist/data/template-autocomplete.js.map +1 -1
- package/dist/data/utils.d.ts +16 -0
- package/dist/data/utils.d.ts.map +1 -1
- package/dist/data/utils.js +21 -1
- package/dist/data/utils.js.map +1 -1
- package/dist/editor/P1App.d.ts.map +1 -1
- package/dist/editor/P1App.js +6 -45
- package/dist/editor/P1App.js.map +1 -1
- package/dist/editor/P1PuckProvider.d.ts +1 -1
- package/dist/editor/P1PuckProvider.d.ts.map +1 -1
- package/dist/editor/P1PuckProvider.js +54 -561
- package/dist/editor/P1PuckProvider.js.map +1 -1
- package/dist/editor/aiPanelStore.js +0 -7
- package/dist/editor/aiPanelStore.js.map +1 -1
- package/dist/editor/components/BranchSelector.js +0 -21
- package/dist/editor/components/BranchSelector.js.map +1 -1
- package/dist/editor/components/CollapsibleSectionHeader.js +1 -4
- package/dist/editor/components/CollapsibleSectionHeader.js.map +1 -1
- package/dist/editor/components/DraggableRow.js +0 -1
- package/dist/editor/components/DraggableRow.js.map +1 -1
- package/dist/editor/components/EditorReloadOverlay.d.ts +16 -0
- package/dist/editor/components/EditorReloadOverlay.d.ts.map +1 -0
- package/dist/editor/components/EditorReloadOverlay.js +13 -0
- package/dist/editor/components/EditorReloadOverlay.js.map +1 -0
- package/dist/editor/components/NotificationContainer.js +0 -20
- package/dist/editor/components/NotificationContainer.js.map +1 -1
- package/dist/editor/components/OutlinePanel.js +1 -12
- package/dist/editor/components/OutlinePanel.js.map +1 -1
- package/dist/editor/components/P1InspectorFields.d.ts.map +1 -1
- package/dist/editor/components/P1InspectorFields.js +12 -14
- package/dist/editor/components/P1InspectorFields.js.map +1 -1
- package/dist/editor/components/P1TemplateFields.js +6 -12
- package/dist/editor/components/P1TemplateFields.js.map +1 -1
- package/dist/editor/components/PanelHeader.d.ts.map +1 -1
- package/dist/editor/components/PanelHeader.js +3 -2
- package/dist/editor/components/PanelHeader.js.map +1 -1
- package/dist/editor/components/PublishButton.js +0 -21
- package/dist/editor/components/PublishButton.js.map +1 -1
- package/dist/editor/components/PuckDataCapture.js +0 -14
- package/dist/editor/components/PuckDataCapture.js.map +1 -1
- package/dist/editor/components/PuckDataSynchronizer.js +0 -67
- package/dist/editor/components/PuckDataSynchronizer.js.map +1 -1
- package/dist/editor/components/PuckSelectionTracker.js +0 -62
- package/dist/editor/components/PuckSelectionTracker.js.map +1 -1
- package/dist/editor/components/SaveIndicator.js +0 -41
- package/dist/editor/components/SaveIndicator.js.map +1 -1
- package/dist/editor/components/Toast.js +1 -32
- package/dist/editor/components/Toast.js.map +1 -1
- package/dist/editor/components/VersionBannerOverride.d.ts +7 -1
- package/dist/editor/components/VersionBannerOverride.d.ts.map +1 -1
- package/dist/editor/components/VersionBannerOverride.js +17 -24
- package/dist/editor/components/VersionBannerOverride.js.map +1 -1
- package/dist/editor/components/collapsibleSectionContext.js +0 -10
- package/dist/editor/components/collapsibleSectionContext.js.map +1 -1
- package/dist/editor/components/componentIconName.js +0 -23
- package/dist/editor/components/componentIconName.js.map +1 -1
- package/dist/editor/components/connectable.js +0 -5
- package/dist/editor/components/connectable.js.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js +2 -74
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
- package/dist/editor/components/merge-preview/ScaledContent.js +0 -6
- package/dist/editor/components/merge-preview/ScaledContent.js.map +1 -1
- package/dist/editor/components/merge-preview/index.js +0 -5
- package/dist/editor/components/merge-preview/index.js.map +1 -1
- package/dist/editor/components/outlineTree.js +0 -31
- package/dist/editor/components/outlineTree.js.map +1 -1
- package/dist/editor/components/useDragReorder.js +0 -1
- package/dist/editor/components/useDragReorder.js.map +1 -1
- package/dist/editor/composePlugins.d.ts +9 -3
- package/dist/editor/composePlugins.d.ts.map +1 -1
- package/dist/editor/composePlugins.js +3 -8
- package/dist/editor/composePlugins.js.map +1 -1
- package/dist/editor/defaultPlugins.d.ts +1 -1
- package/dist/editor/defaultPlugins.d.ts.map +1 -1
- package/dist/editor/defaultPlugins.js +3 -1
- package/dist/editor/defaultPlugins.js.map +1 -1
- package/dist/editor/freshFieldTypes.d.ts +12 -0
- package/dist/editor/freshFieldTypes.d.ts.map +1 -0
- package/dist/editor/freshFieldTypes.js +11 -0
- package/dist/editor/freshFieldTypes.js.map +1 -0
- package/dist/editor/logout-store.d.ts +13 -0
- package/dist/editor/logout-store.d.ts.map +1 -0
- package/dist/editor/logout-store.js +23 -0
- package/dist/editor/logout-store.js.map +1 -0
- package/dist/editor/plugin/P1Plugin.d.ts +16 -3
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +21 -171
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/plugin/context-sync-key.js +0 -19
- package/dist/editor/plugin/context-sync-key.js.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +1 -49
- package/dist/editor/plugin/createP1Overrides.js.map +1 -1
- package/dist/editor/plugin/document-sync-plugin.js +0 -50
- package/dist/editor/plugin/document-sync-plugin.js.map +1 -1
- package/dist/editor/plugin/fieldGuidance.js +0 -5
- package/dist/editor/plugin/fieldGuidance.js.map +1 -1
- package/dist/editor/plugin/index.js +0 -6
- package/dist/editor/plugin/index.js.map +1 -1
- package/dist/editor/plugin/selectHeaderCollaborators.js +0 -8
- package/dist/editor/plugin/selectHeaderCollaborators.js.map +1 -1
- package/dist/editor/presets.js +2 -2
- package/dist/editor/stablePluginDeps.d.ts +9 -0
- package/dist/editor/stablePluginDeps.d.ts.map +1 -0
- package/dist/editor/stablePluginDeps.js +15 -0
- package/dist/editor/stablePluginDeps.js.map +1 -0
- package/dist/editor/thumbnails/LiveThumbnail.js +1 -49
- package/dist/editor/thumbnails/LiveThumbnail.js.map +1 -1
- package/dist/editor/thumbnails/ThumbnailCard.js +0 -25
- package/dist/editor/thumbnails/ThumbnailCard.js.map +1 -1
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js +0 -21
- package/dist/editor/thumbnails/buildLiveThumbnailDrawer.js.map +1 -1
- package/dist/editor/thumbnails/humanizeComponentName.js +0 -17
- package/dist/editor/thumbnails/humanizeComponentName.js.map +1 -1
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js +0 -11
- package/dist/editor/thumbnails/resolveLiveThumbnailDrawer.js.map +1 -1
- package/dist/editor/thumbnails/thumbnailCache.js +0 -38
- package/dist/editor/thumbnails/thumbnailCache.js.map +1 -1
- package/dist/editor/useAutoSave.js +0 -32
- package/dist/editor/useAutoSave.js.map +1 -1
- package/dist/editor/useBranches.js +0 -30
- package/dist/editor/useBranches.js.map +1 -1
- package/dist/editor/useComponentRegistry.d.ts +1 -1
- package/dist/editor/useComponentRegistry.js +0 -28
- package/dist/editor/useComponentRegistry.js.map +1 -1
- package/dist/editor/useDocuments.js +0 -51
- package/dist/editor/useDocuments.js.map +1 -1
- package/dist/editor/useMergePreview.js +8 -12
- package/dist/editor/useMergePreview.js.map +1 -1
- package/dist/editor/useP1Editor.d.ts +35 -7
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +146 -243
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Overrides.js +15 -50
- package/dist/editor/useP1Overrides.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +10 -4
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +34 -56
- package/dist/editor/useP1Plugin.js.map +1 -1
- package/dist/editor/useRealtime.d.ts +15 -3
- package/dist/editor/useRealtime.d.ts.map +1 -1
- package/dist/editor/useRealtime.js +12 -91
- package/dist/editor/useRealtime.js.map +1 -1
- package/dist/editor/useResponsivePanels.js +2 -35
- package/dist/editor/useResponsivePanels.js.map +1 -1
- package/dist/editor/useSidebarScrollPreservation.js +0 -14
- package/dist/editor/useSidebarScrollPreservation.js.map +1 -1
- package/dist/editor/utils/buildThumbnailOverride.js +0 -9
- package/dist/editor/utils/buildThumbnailOverride.js.map +1 -1
- package/dist/editor/utils/componentRegistry.d.ts +6 -11
- package/dist/editor/utils/componentRegistry.d.ts.map +1 -1
- package/dist/editor/utils/componentRegistry.js +1 -71
- package/dist/editor/utils/componentRegistry.js.map +1 -1
- package/dist/editor/utils/createStablePluginArray.js +0 -27
- package/dist/editor/utils/createStablePluginArray.js.map +1 -1
- package/dist/editor/utils/path.js +0 -6
- package/dist/editor/utils/path.js.map +1 -1
- package/dist/editor/utils/puckYjsBinding.d.ts +1 -1
- package/dist/editor/utils/puckYjsBinding.js +0 -99
- package/dist/editor/utils/puckYjsBinding.js.map +1 -1
- package/dist/editor/utils/restoreDocumentVersion.js +0 -12
- package/dist/editor/utils/restoreDocumentVersion.js.map +1 -1
- package/dist/editor/utils/sanitizeRichtextDefaults.js +0 -26
- package/dist/editor/utils/sanitizeRichtextDefaults.js.map +1 -1
- package/dist/editor/utils/snapshotToPuckData.js +0 -8
- package/dist/editor/utils/snapshotToPuckData.js.map +1 -1
- package/dist/editor/utils/syncComponentRegistry.d.ts +2 -2
- package/dist/editor/utils/syncComponentRegistry.js +1 -76
- package/dist/editor/utils/syncComponentRegistry.js.map +1 -1
- package/dist/editor/utils/syncComponentRegistryWriteOnly.d.ts +7 -7
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js +0 -22
- package/dist/editor/utils/syncComponentRegistryWriteOnly.js.map +1 -1
- package/dist/editor/utils/templatePath.js +0 -5
- package/dist/editor/utils/templatePath.js.map +1 -1
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js +0 -3
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js.map +1 -1
- package/dist/features/content-type-templates/hooks/useTemplateList.js +0 -30
- package/dist/features/content-type-templates/hooks/useTemplateList.js.map +1 -1
- package/dist/features/content-type-templates/index.js +0 -8
- package/dist/features/content-type-templates/index.js.map +1 -1
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js +1 -43
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -1
- package/dist/features/content-type-templates/permissions/role-permissions.d.ts +8 -0
- package/dist/features/content-type-templates/permissions/role-permissions.d.ts.map +1 -1
- package/dist/features/content-type-templates/permissions/role-permissions.js +3 -29
- package/dist/features/content-type-templates/permissions/role-permissions.js.map +1 -1
- package/dist/features/content-type-templates/permissions/useContentRole.js +0 -24
- package/dist/features/content-type-templates/permissions/useContentRole.js.map +1 -1
- package/dist/features/content-type-templates/permissions/useResolveContentRole.d.ts +5 -5
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js +2 -22
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js.map +1 -1
- package/dist/features/content-type-templates/stores/index.js +0 -5
- package/dist/features/content-type-templates/stores/index.js.map +1 -1
- package/dist/features/content-type-templates/stores/template-store-api.js +0 -14
- package/dist/features/content-type-templates/stores/template-store-api.js.map +1 -1
- package/dist/features/content-type-templates/stores/template-store.d.ts +1 -1
- package/dist/features/content-type-templates/stores/template-store.js +0 -12
- package/dist/features/content-type-templates/stores/template-store.js.map +1 -1
- package/dist/features/content-type-templates/types.js +0 -5
- package/dist/features/content-type-templates/types.js.map +1 -1
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js +12 -21
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -1
- package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js +0 -23
- package/dist/features/content-type-templates/ui/TemplateDetailsPanel.js.map +1 -1
- package/dist/features/content-type-templates/ui/TemplateSelector.js +0 -19
- package/dist/features/content-type-templates/ui/TemplateSelector.js.map +1 -1
- package/dist/features/content-type-templates/validation/structural-validation.js +0 -40
- package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -1
- package/dist/features/localization/authority.d.ts +26 -0
- package/dist/features/localization/authority.d.ts.map +1 -0
- package/dist/features/localization/authority.js +17 -0
- package/dist/features/localization/authority.js.map +1 -0
- package/dist/features/localization/index.d.ts +11 -0
- package/dist/features/localization/index.d.ts.map +1 -0
- package/dist/features/localization/index.js +7 -0
- package/dist/features/localization/index.js.map +1 -0
- package/dist/features/localization/prop-target.d.ts +26 -0
- package/dist/features/localization/prop-target.d.ts.map +1 -0
- package/dist/features/localization/prop-target.js +15 -0
- package/dist/features/localization/prop-target.js.map +1 -0
- package/dist/features/localization/puck-overrides.d.ts +12 -0
- package/dist/features/localization/puck-overrides.d.ts.map +1 -0
- package/dist/features/localization/puck-overrides.js +12 -0
- package/dist/features/localization/puck-overrides.js.map +1 -0
- package/dist/features/localization/relation.d.ts +14 -0
- package/dist/features/localization/relation.d.ts.map +1 -0
- package/dist/features/localization/relation.js +7 -0
- package/dist/features/localization/relation.js.map +1 -0
- package/dist/features/localization/translatable.d.ts +24 -0
- package/dist/features/localization/translatable.d.ts.map +1 -0
- package/dist/features/localization/translatable.js +30 -0
- package/dist/features/localization/translatable.js.map +1 -0
- package/dist/features/localization/types.d.ts +17 -0
- package/dist/features/localization/types.d.ts.map +1 -0
- package/dist/features/localization/types.js +2 -0
- package/dist/features/localization/types.js.map +1 -0
- package/dist/features/localization/ui/AuthorityFieldControl.d.ts +32 -0
- package/dist/features/localization/ui/AuthorityFieldControl.d.ts.map +1 -0
- package/dist/features/localization/ui/AuthorityFieldControl.js +36 -0
- package/dist/features/localization/ui/AuthorityFieldControl.js.map +1 -0
- package/dist/features/localization/ui/TranslatabilityToggle.d.ts +17 -0
- package/dist/features/localization/ui/TranslatabilityToggle.d.ts.map +1 -0
- package/dist/features/localization/ui/TranslatabilityToggle.js +16 -0
- package/dist/features/localization/ui/TranslatabilityToggle.js.map +1 -0
- package/dist/features/localization/useLocalizationData.d.ts +37 -0
- package/dist/features/localization/useLocalizationData.d.ts.map +1 -0
- package/dist/features/localization/useLocalizationData.js +88 -0
- package/dist/features/localization/useLocalizationData.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -43
- package/dist/index.js.map +1 -1
- package/dist/merge/components/conflict-notifications/ConflictNotificationToast.js +0 -19
- package/dist/merge/components/conflict-notifications/ConflictNotificationToast.js.map +1 -1
- package/dist/merge/components/conflict-notifications/index.js +0 -5
- package/dist/merge/components/conflict-notifications/index.js.map +1 -1
- package/dist/merge/components/conflict-notifications/useConflictNotifications.js +0 -48
- package/dist/merge/components/conflict-notifications/useConflictNotifications.js.map +1 -1
- package/dist/merge/components/conflict-resolution/ComponentConflictGroup.js +0 -36
- package/dist/merge/components/conflict-resolution/ComponentConflictGroup.js.map +1 -1
- package/dist/merge/components/conflict-resolution/PuckFieldResolutionPanel.js +0 -40
- package/dist/merge/components/conflict-resolution/PuckFieldResolutionPanel.js.map +1 -1
- package/dist/merge/components/conflict-resolution/RenderedResolutionPreview.js +0 -21
- package/dist/merge/components/conflict-resolution/RenderedResolutionPreview.js.map +1 -1
- package/dist/merge/components/conflict-resolution/index.js +0 -5
- package/dist/merge/components/conflict-resolution/index.js.map +1 -1
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +0 -44
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
- package/dist/merge/components/merge-resolution/ComponentClickOverlay.js +0 -24
- package/dist/merge/components/merge-resolution/ComponentClickOverlay.js.map +1 -1
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.d.ts.map +1 -1
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js +6 -31
- package/dist/merge/components/merge-resolution/DocumentResolutionDetail.js.map +1 -1
- package/dist/merge/components/merge-resolution/index.js +0 -3
- package/dist/merge/components/merge-resolution/index.js.map +1 -1
- package/dist/merge/useMergeResolution.d.ts +1 -1
- package/dist/merge/useMergeResolution.d.ts.map +1 -1
- package/dist/merge/useMergeResolution.js +6 -75
- package/dist/merge/useMergeResolution.js.map +1 -1
- package/dist/merge/utils/namespacePuckData.d.ts.map +1 -1
- package/dist/merge/utils/namespacePuckData.js +8 -8
- package/dist/merge/utils/namespacePuckData.js.map +1 -1
- package/dist/merge/utils/puckFieldClassifier.js +0 -183
- package/dist/merge/utils/puckFieldClassifier.js.map +1 -1
- package/dist/p1/editor/connect/connect-preview-config.js +0 -5
- package/dist/p1/editor/connect/connect-preview-config.js.map +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.js +0 -6
- package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.js +0 -13
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/p1/editor/hooks/api-hooks.js +0 -7
- package/dist/p1/editor/hooks/api-hooks.js.map +1 -1
- package/dist/p1/editor/hooks/useLiveEditorContext.d.ts.map +1 -1
- package/dist/p1/editor/hooks/useLiveEditorContext.js +2 -13
- package/dist/p1/editor/hooks/useLiveEditorContext.js.map +1 -1
- package/dist/p1/editor/hooks/useLiveRemoteDatasources.js +0 -22
- package/dist/p1/editor/hooks/useLiveRemoteDatasources.js.map +1 -1
- package/dist/p1/editor/hooks/useP1Plugins.js +0 -5
- package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js +0 -7
- package/dist/p1/editor/remote-datasources/remote-datasource-explorer-plugin.js.map +1 -1
- package/dist/p1/editor/template-autocomplete-layer.js +0 -4
- package/dist/p1/editor/template-autocomplete-layer.js.map +1 -1
- package/dist/pds/components/AgentChip.js +0 -3
- package/dist/pds/components/AgentChip.js.map +1 -1
- package/dist/pds/components/CreatePageModal.js +1 -97
- package/dist/pds/components/CreatePageModal.js.map +1 -1
- package/dist/pds/components/LoadingMessage.d.ts.map +1 -1
- package/dist/pds/components/LoadingMessage.js +2 -1
- package/dist/pds/components/LoadingMessage.js.map +1 -1
- package/dist/pds/components/LoadingMessage.module.css +2 -21
- package/dist/pds/components/LoadingOverlay.d.ts +17 -0
- package/dist/pds/components/LoadingOverlay.d.ts.map +1 -0
- package/dist/pds/components/LoadingOverlay.js +7 -0
- package/dist/pds/components/LoadingOverlay.js.map +1 -0
- package/dist/pds/components/LoadingOverlay.module.css +28 -0
- package/dist/pds/components/P1EditorHeader.d.ts +9 -2
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +6 -26
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.module.css +26 -0
- package/dist/pds/components/PageNavigator.js +0 -16
- package/dist/pds/components/PageNavigator.js.map +1 -1
- package/dist/pds/components/PageNotFound.d.ts +27 -0
- package/dist/pds/components/PageNotFound.d.ts.map +1 -0
- package/dist/pds/components/PageNotFound.js +24 -0
- package/dist/pds/components/PageNotFound.js.map +1 -0
- package/dist/pds/components/PageNotFound.module.css +51 -0
- package/dist/pds/components/PresenceStack.js +0 -9
- package/dist/pds/components/PresenceStack.js.map +1 -1
- package/dist/pds/components/PublishControl.js +0 -6
- package/dist/pds/components/PublishControl.js.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.js +1 -25
- package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
- package/dist/pds/index.d.ts +4 -0
- package/dist/pds/index.d.ts.map +1 -1
- package/dist/pds/index.js +2 -29
- package/dist/pds/index.js.map +1 -1
- package/dist/pds/theme/pds-core-content.js +0 -5
- package/dist/pds/theme/pds-core-content.js.map +1 -1
- package/dist/pds/utils/deriveDocState.js +0 -1
- package/dist/pds/utils/deriveDocState.js.map +1 -1
- package/dist/pds/utils/deriveLiveDocState.js +0 -13
- package/dist/pds/utils/deriveLiveDocState.js.map +1 -1
- package/dist/registry-sync.js +0 -4
- package/dist/registry-sync.js.map +1 -1
- package/dist/server.js +0 -7
- package/dist/server.js.map +1 -1
- package/dist/versioning/components/ReadOnlyFieldsGuard.js +0 -3
- package/dist/versioning/components/ReadOnlyFieldsGuard.js.map +1 -1
- package/dist/versioning/components/VersionBannerActions.js +0 -1
- package/dist/versioning/components/VersionBannerActions.js.map +1 -1
- package/dist/versioning/components/version-compare/BranchDiffHeader.js +0 -7
- package/dist/versioning/components/version-compare/BranchDiffHeader.js.map +1 -1
- package/dist/versioning/components/version-compare/BranchMergeCompare.js +0 -19
- package/dist/versioning/components/version-compare/BranchMergeCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/ComponentNode.js +0 -8
- package/dist/versioning/components/version-compare/ComponentNode.js.map +1 -1
- package/dist/versioning/components/version-compare/ComponentTree.js +0 -10
- package/dist/versioning/components/version-compare/ComponentTree.js.map +1 -1
- package/dist/versioning/components/version-compare/DiffHeader.js +0 -3
- package/dist/versioning/components/version-compare/DiffHeader.js.map +1 -1
- package/dist/versioning/components/version-compare/DocumentDiffList.js +0 -14
- package/dist/versioning/components/version-compare/DocumentDiffList.js.map +1 -1
- package/dist/versioning/components/version-compare/PropDiffPanel.js +0 -7
- package/dist/versioning/components/version-compare/PropDiffPanel.js.map +1 -1
- package/dist/versioning/components/version-compare/PropDiffRow.js +0 -3
- package/dist/versioning/components/version-compare/PropDiffRow.js.map +1 -1
- package/dist/versioning/components/version-compare/PropValueDisplay.js +0 -22
- package/dist/versioning/components/version-compare/PropValueDisplay.js.map +1 -1
- package/dist/versioning/components/version-compare/VersionComparePage.js +0 -13
- package/dist/versioning/components/version-compare/VersionComparePage.js.map +1 -1
- package/dist/versioning/components/version-compare/VisualBranchCompare.js +0 -17
- package/dist/versioning/components/version-compare/VisualBranchCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/VisualVersionCompare.js +0 -23
- package/dist/versioning/components/version-compare/VisualVersionCompare.js.map +1 -1
- package/dist/versioning/components/version-compare/index.js +0 -5
- package/dist/versioning/components/version-compare/index.js.map +1 -1
- package/dist/versioning/components/version-history/AgentCheckpointBadge.js +0 -14
- package/dist/versioning/components/version-history/AgentCheckpointBadge.js.map +1 -1
- package/dist/versioning/components/version-history/VersionItem.js +0 -7
- package/dist/versioning/components/version-history/VersionItem.js.map +1 -1
- package/dist/versioning/components/version-history/index.js +0 -5
- package/dist/versioning/components/version-history/index.js.map +1 -1
- package/dist/versioning/useCheckpoints.js +0 -28
- package/dist/versioning/useCheckpoints.js.map +1 -1
- package/dist/versioning/useVersions.js +0 -31
- package/dist/versioning/useVersions.js.map +1 -1
- package/dist/versioning/utils/branchDiff.js +0 -93
- package/dist/versioning/utils/branchDiff.js.map +1 -1
- package/dist/versioning/utils/diff.js +0 -79
- package/dist/versioning/utils/diff.js.map +1 -1
- package/dist/versioning/utils/formatVersionDate.js +0 -12
- package/dist/versioning/utils/formatVersionDate.js.map +1 -1
- package/dist/versioning/utils/highlightConfig.js +0 -42
- package/dist/versioning/utils/highlightConfig.js.map +1 -1
- package/dist/versioning/utils/versionKind.js +0 -10
- package/dist/versioning/utils/versionKind.js.map +1 -1
- package/package.json +7 -7
- package/src/data/data-list-block/data-list.css +314 -0
- package/src/pds/theme/PuckEditorTheme.css +5 -5
- package/src/styles.css +1 -1
- package/src/pds/theme/PuckEditorTheme.test.ts +0 -195
- package/src/pds/theme/pds-core-content.ts +0 -8
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Component Registry Utilities
|
|
3
|
-
*
|
|
4
|
-
* Utilities for serialising Puck component configs into machine-readable
|
|
5
|
-
* ComponentDescriptor objects, hashing them for change detection, and
|
|
6
|
-
* building the RegistryIndex stored at /_registry/index.
|
|
7
|
-
*/
|
|
8
|
-
// =============================================================================
|
|
9
|
-
// Field serialization
|
|
10
|
-
// =============================================================================
|
|
11
|
-
/**
|
|
12
|
-
* Converts a Puck field definition to a JSON-serializable SerializedField.
|
|
13
|
-
* Strips non-serializable properties (render functions, getItemSummary, etc.).
|
|
14
|
-
* Recursively handles array.arrayFields and object.objectFields.
|
|
15
|
-
*/
|
|
16
1
|
export function serializeField(field, name) {
|
|
17
2
|
const ai = field.ai;
|
|
18
3
|
switch (field.type) {
|
|
@@ -70,7 +55,6 @@ export function serializeField(field, name) {
|
|
|
70
55
|
};
|
|
71
56
|
}
|
|
72
57
|
default:
|
|
73
|
-
// Treat all unrecognised types (including custom with render functions) as 'custom'
|
|
74
58
|
return {
|
|
75
59
|
type: 'custom',
|
|
76
60
|
name,
|
|
@@ -79,13 +63,6 @@ export function serializeField(field, name) {
|
|
|
79
63
|
};
|
|
80
64
|
}
|
|
81
65
|
}
|
|
82
|
-
// =============================================================================
|
|
83
|
-
// Hash computation
|
|
84
|
-
// =============================================================================
|
|
85
|
-
/**
|
|
86
|
-
* Sorts object keys recursively to produce a canonical JSON representation.
|
|
87
|
-
* This ensures hash stability regardless of key insertion order.
|
|
88
|
-
*/
|
|
89
66
|
function sortKeys(value) {
|
|
90
67
|
if (Array.isArray(value))
|
|
91
68
|
return value.map(sortKeys);
|
|
@@ -96,37 +73,16 @@ function sortKeys(value) {
|
|
|
96
73
|
}
|
|
97
74
|
return value;
|
|
98
75
|
}
|
|
99
|
-
/**
|
|
100
|
-
* djb2 hash over the canonical JSON of a descriptor.
|
|
101
|
-
*
|
|
102
|
-
* The following fields are intentionally excluded from the hash input:
|
|
103
|
-
* - `descriptorHash`: the hash itself must not feed into its own computation.
|
|
104
|
-
* - `registeredAt`: a timestamp that changes on every registration run; including
|
|
105
|
-
* it would make every component appear "changed" on every editor open.
|
|
106
|
-
* - `provenance`: a classification artifact derived from comparing site vs upstream
|
|
107
|
-
* schemas; it does not describe the component's own shape and should not affect
|
|
108
|
-
* whether a write is triggered.
|
|
109
|
-
* - `upstreamHash`: similarly a comparative artifact, not part of the schema identity.
|
|
110
|
-
*
|
|
111
|
-
* This is an intentional improvement over the plan (which only called out
|
|
112
|
-
* `descriptorHash` and `registeredAt`). Excluding `provenance` and `upstreamHash`
|
|
113
|
-
* prevents spurious re-writes when the upstream config changes but the site
|
|
114
|
-
* component schema is unchanged.
|
|
115
|
-
*/
|
|
116
76
|
export function hashDescriptor(descriptor) {
|
|
117
77
|
const { descriptorHash: _ignored, registeredAt: _ts, provenance: _prov, upstreamHash: _up, ...hashable } = descriptor;
|
|
118
78
|
const json = JSON.stringify(sortKeys(hashable));
|
|
119
79
|
let hash = 5381;
|
|
120
80
|
for (let i = 0; i < json.length; i++) {
|
|
121
81
|
hash = ((hash << 5) + hash) ^ json.charCodeAt(i);
|
|
122
|
-
hash = hash >>> 0;
|
|
82
|
+
hash = hash >>> 0;
|
|
123
83
|
}
|
|
124
84
|
return hash.toString(16);
|
|
125
85
|
}
|
|
126
|
-
// =============================================================================
|
|
127
|
-
// Descriptor extraction
|
|
128
|
-
// =============================================================================
|
|
129
|
-
/** Builds a descriptor without provenance/hash/timestamp fields (used for hashing) */
|
|
130
86
|
function buildPartialDescriptor(name, compConfig) {
|
|
131
87
|
const rawFields = (compConfig.fields ?? {});
|
|
132
88
|
const fields = Object.entries(rawFields).map(([k, v]) => serializeField(v, k));
|
|
@@ -136,27 +92,17 @@ function buildPartialDescriptor(name, compConfig) {
|
|
|
136
92
|
fields,
|
|
137
93
|
defaultProps: compConfig.defaultProps ?? {},
|
|
138
94
|
};
|
|
139
|
-
// AI metadata (from @puckeditor/plugin-ai convention)
|
|
140
95
|
const ai = compConfig.ai;
|
|
141
96
|
if (ai !== undefined)
|
|
142
97
|
result.ai = ai;
|
|
143
|
-
// Slot constraints
|
|
144
98
|
const slots = compConfig.slots;
|
|
145
99
|
if (slots !== undefined)
|
|
146
100
|
result.slots = slots;
|
|
147
101
|
return result;
|
|
148
102
|
}
|
|
149
|
-
/**
|
|
150
|
-
* Extracts ComponentDescriptors from a Puck config object.
|
|
151
|
-
* Optionally classifies provenance against an upstream Puck config.
|
|
152
|
-
*
|
|
153
|
-
* @param puckConfig - The site's Puck config (as passed to <Puck config={...} />)
|
|
154
|
-
* @param upstreamConfig - Optional Custom Upstream's Puck config for provenance comparison
|
|
155
|
-
*/
|
|
156
103
|
export function extractDescriptors(puckConfig, upstreamConfig) {
|
|
157
104
|
const config = puckConfig;
|
|
158
105
|
const components = (config.components ?? {});
|
|
159
|
-
// Pre-compute upstream descriptors for O(1) hash lookup
|
|
160
106
|
let upstreamDescriptors = null;
|
|
161
107
|
if (upstreamConfig !== undefined) {
|
|
162
108
|
const upstream = upstreamConfig;
|
|
@@ -171,7 +117,6 @@ export function extractDescriptors(puckConfig, upstreamConfig) {
|
|
|
171
117
|
registeredAt: '',
|
|
172
118
|
});
|
|
173
119
|
}
|
|
174
|
-
// Also index upstream root if present
|
|
175
120
|
const upstreamRoot = (upstream.root ?? null);
|
|
176
121
|
if (upstreamRoot !== null) {
|
|
177
122
|
const partial = buildPartialDescriptor('__root__', { ...upstreamRoot, label: 'Page Root' });
|
|
@@ -185,7 +130,6 @@ export function extractDescriptors(puckConfig, upstreamConfig) {
|
|
|
185
130
|
}
|
|
186
131
|
const now = new Date().toISOString();
|
|
187
132
|
const results = [];
|
|
188
|
-
// Build a combined map: root (as __root__) + named components
|
|
189
133
|
const allComponents = new Map();
|
|
190
134
|
const rootConfig = (config.root ?? null);
|
|
191
135
|
if (rootConfig !== null) {
|
|
@@ -196,10 +140,6 @@ export function extractDescriptors(puckConfig, upstreamConfig) {
|
|
|
196
140
|
}
|
|
197
141
|
for (const [name, compConfig] of allComponents.entries()) {
|
|
198
142
|
const partial = buildPartialDescriptor(name, compConfig);
|
|
199
|
-
// Hash is computed from schema identity only (name, label, fields, defaultProps, ai, slots).
|
|
200
|
-
// `provenance` and `registeredAt` are passed here only to satisfy the TypeScript type signature
|
|
201
|
-
// of hashDescriptor; they are immediately stripped inside hashDescriptor before hashing begins.
|
|
202
|
-
// The same applies to `upstreamHash` and `descriptorHash` (when present).
|
|
203
143
|
const siteHash = hashDescriptor({ ...partial, provenance: 'site', registeredAt: now });
|
|
204
144
|
let provenance = 'site';
|
|
205
145
|
let upstreamHash;
|
|
@@ -220,16 +160,6 @@ export function extractDescriptors(puckConfig, upstreamConfig) {
|
|
|
220
160
|
}
|
|
221
161
|
return results;
|
|
222
162
|
}
|
|
223
|
-
// =============================================================================
|
|
224
|
-
// Registry index
|
|
225
|
-
// =============================================================================
|
|
226
|
-
/**
|
|
227
|
-
* Builds the RegistryIndex from a list of extracted descriptors.
|
|
228
|
-
*
|
|
229
|
-
* @param verifiedAt - Pass when a full per-component verification just ran
|
|
230
|
-
* (PCC-3430), to stamp the index with that confirmation time. Omit to
|
|
231
|
-
* carry an existing value forward unchanged on a fast-path-only run.
|
|
232
|
-
*/
|
|
233
163
|
export function buildRegistryIndex(descriptors, siteId, branchId, verifiedAt) {
|
|
234
164
|
return {
|
|
235
165
|
siteId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../../../src/editor/utils/componentRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../../../src/editor/utils/componentRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,11 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* createStablePluginArray
|
|
3
|
-
*
|
|
4
|
-
* Creates a memoized plugin array that only changes identity when
|
|
5
|
-
* the plugin references change. Filters out null/undefined entries.
|
|
6
|
-
*/
|
|
7
1
|
let lastPlugins = [];
|
|
8
2
|
let lastResult = [];
|
|
9
|
-
/**
|
|
10
|
-
* Creates a stable plugin array from the given plugins.
|
|
11
|
-
*
|
|
12
|
-
* Returns the same array reference if the same plugin instances
|
|
13
|
-
* are passed in the same order. Filters out null/undefined entries.
|
|
14
|
-
*
|
|
15
|
-
* This is useful for consumers who manually assemble plugin arrays
|
|
16
|
-
* outside of useP1Editor and want to avoid unnecessary Puck re-renders.
|
|
17
|
-
*
|
|
18
|
-
* @param plugins - Plugin instances to include
|
|
19
|
-
* @returns A stable array of non-null plugins
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```tsx
|
|
23
|
-
* const plugins = createStablePluginArray(p1Plugin, aiPlugin, pccPlugin);
|
|
24
|
-
* return <Puck plugins={plugins} />;
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
3
|
export function createStablePluginArray(...plugins) {
|
|
28
|
-
// Filter out null/undefined
|
|
29
4
|
const filtered = plugins.filter(Boolean);
|
|
30
|
-
// Check if the plugins are the same as last call
|
|
31
5
|
if (filtered.length === lastPlugins.length &&
|
|
32
6
|
filtered.every((p, i) => p === lastPlugins[i])) {
|
|
33
7
|
return lastResult;
|
|
34
8
|
}
|
|
35
|
-
// Cache and return new array
|
|
36
9
|
lastPlugins = filtered;
|
|
37
10
|
lastResult = [...filtered];
|
|
38
11
|
return lastResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStablePluginArray.js","sourceRoot":"","sources":["../../../src/editor/utils/createStablePluginArray.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createStablePluginArray.js","sourceRoot":"","sources":["../../../src/editor/utils/createStablePluginArray.ts"],"names":[],"mappings":"AASA,IAAI,WAAW,GAAiB,EAAE,CAAC;AACnC,IAAI,UAAU,GAAiB,EAAE,CAAC;AAoBlC,MAAM,UAAU,uBAAuB,CAAC,GAAG,OAAqB;IAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAGzC,IACE,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;QACtC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,EAC9C,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAGD,WAAW,GAAG,QAAQ,CAAC;IACvB,UAAU,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/editor/utils/path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../../src/editor/utils/path.ts"],"names":[],"mappings":"AAMA,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,OAAO,KAAK,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG;QAAE,KAAK,EAAE,CAAC;IACpD,OAAO,GAAG,GAAG,KAAK,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,GAAG,EAAE,CAAC;IACpD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAAiB;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,OAAO,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3C,CAAC"}
|
|
@@ -1,21 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Phase 3.1: Puck-Yjs Binding Utility
|
|
3
|
-
*
|
|
4
|
-
* Bidirectional binding between Puck data and Yjs CRDT.
|
|
5
|
-
* Prevents sync loops by using Yjs transaction origins.
|
|
6
|
-
*/
|
|
7
1
|
import * as Y from 'yjs';
|
|
8
|
-
/**
|
|
9
|
-
* Origin marker for local changes (prevents sync loops)
|
|
10
|
-
*/
|
|
11
2
|
const LOCAL_ORIGIN = 'local';
|
|
12
|
-
/**
|
|
13
|
-
* Incrementally patch a Y.Map to match a plain object.
|
|
14
|
-
* Only touches keys/values that actually differ, minimising Yjs operations
|
|
15
|
-
* (and therefore the size of the update binary that is broadcast).
|
|
16
|
-
*/
|
|
17
3
|
export function patchYMap(ymap, newObj) {
|
|
18
|
-
// Remove keys that no longer exist
|
|
19
4
|
for (const key of ymap.keys()) {
|
|
20
5
|
if (!(key in newObj)) {
|
|
21
6
|
ymap.delete(key);
|
|
@@ -23,7 +8,6 @@ export function patchYMap(ymap, newObj) {
|
|
|
23
8
|
}
|
|
24
9
|
for (const [key, newVal] of Object.entries(newObj)) {
|
|
25
10
|
const curVal = ymap.get(key);
|
|
26
|
-
// If both sides are Y.Map / plain-object, recurse
|
|
27
11
|
if (curVal instanceof Y.Map &&
|
|
28
12
|
newVal !== null &&
|
|
29
13
|
typeof newVal === 'object' &&
|
|
@@ -31,31 +15,23 @@ export function patchYMap(ymap, newObj) {
|
|
|
31
15
|
patchYMap(curVal, newVal);
|
|
32
16
|
continue;
|
|
33
17
|
}
|
|
34
|
-
// If both sides are Y.Array / plain-array, patch the array
|
|
35
18
|
if (curVal instanceof Y.Array && Array.isArray(newVal)) {
|
|
36
19
|
patchYArray(curVal, newVal);
|
|
37
20
|
continue;
|
|
38
21
|
}
|
|
39
|
-
// For primitives, skip if unchanged
|
|
40
22
|
if (!(curVal instanceof Y.Map) &&
|
|
41
23
|
!(curVal instanceof Y.Array) &&
|
|
42
24
|
JSON.stringify(curVal) === JSON.stringify(newVal)) {
|
|
43
25
|
continue;
|
|
44
26
|
}
|
|
45
|
-
// Value changed type or is a different primitive – replace wholesale
|
|
46
27
|
ymap.set(key, toYjsValue(newVal));
|
|
47
28
|
}
|
|
48
29
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Incrementally patch a Y.Array to match a plain array.
|
|
51
|
-
* Patches items in-place where possible, appends/trims as needed.
|
|
52
|
-
*/
|
|
53
30
|
export function patchYArray(yarr, newArr) {
|
|
54
31
|
const minLen = Math.min(yarr.length, newArr.length);
|
|
55
32
|
for (let i = 0; i < minLen; i++) {
|
|
56
33
|
const curItem = yarr.get(i);
|
|
57
34
|
const newItem = newArr[i];
|
|
58
|
-
// If both are Y.Map / plain-object, patch in place
|
|
59
35
|
if (curItem instanceof Y.Map &&
|
|
60
36
|
newItem !== null &&
|
|
61
37
|
typeof newItem === 'object' &&
|
|
@@ -63,43 +39,27 @@ export function patchYArray(yarr, newArr) {
|
|
|
63
39
|
patchYMap(curItem, newItem);
|
|
64
40
|
continue;
|
|
65
41
|
}
|
|
66
|
-
// If both are Y.Array / plain-array, patch in place
|
|
67
42
|
if (curItem instanceof Y.Array && Array.isArray(newItem)) {
|
|
68
43
|
patchYArray(curItem, newItem);
|
|
69
44
|
continue;
|
|
70
45
|
}
|
|
71
|
-
// For primitives, skip if unchanged
|
|
72
46
|
if (!(curItem instanceof Y.Map) &&
|
|
73
47
|
!(curItem instanceof Y.Array) &&
|
|
74
48
|
JSON.stringify(curItem) === JSON.stringify(newItem)) {
|
|
75
49
|
continue;
|
|
76
50
|
}
|
|
77
|
-
// Different – delete and re-insert at same index
|
|
78
51
|
yarr.delete(i, 1);
|
|
79
52
|
yarr.insert(i, [toYjsValue(newItem)]);
|
|
80
53
|
}
|
|
81
|
-
// Append new items
|
|
82
54
|
if (newArr.length > yarr.length) {
|
|
83
55
|
const toAdd = newArr.slice(yarr.length).map((item) => toYjsValue(item));
|
|
84
56
|
yarr.push(toAdd);
|
|
85
57
|
}
|
|
86
|
-
// Trim excess items from the end
|
|
87
58
|
if (yarr.length > newArr.length) {
|
|
88
59
|
yarr.delete(newArr.length, yarr.length - newArr.length);
|
|
89
60
|
}
|
|
90
61
|
}
|
|
91
|
-
/**
|
|
92
|
-
* Convert a Puck data structure to a Yjs Y.Map.
|
|
93
|
-
* When the root map already has data, uses incremental patching to minimise
|
|
94
|
-
* the number of Yjs operations (reducing flicker and broadcast size).
|
|
95
|
-
*
|
|
96
|
-
* @param data - The PuckData to convert
|
|
97
|
-
* @param root - The Y.Map to populate
|
|
98
|
-
*/
|
|
99
62
|
export function puckDataToYMap(data, root) {
|
|
100
|
-
// Top-level no-op guard: if the Y.Doc already contains identical data,
|
|
101
|
-
// skip the entire transaction. This prevents echo loops where a receiving
|
|
102
|
-
// client's Puck onChange re-sends data that's already in the Y.Doc.
|
|
103
63
|
if (root.size > 0) {
|
|
104
64
|
const currentJson = JSON.stringify(root.toJSON());
|
|
105
65
|
const newJson = JSON.stringify(data);
|
|
@@ -109,22 +69,15 @@ export function puckDataToYMap(data, root) {
|
|
|
109
69
|
}
|
|
110
70
|
root.doc?.transact(() => {
|
|
111
71
|
if (root.size > 0) {
|
|
112
|
-
// Incremental update – only touch what changed
|
|
113
72
|
patchYMap(root, data);
|
|
114
73
|
}
|
|
115
74
|
else {
|
|
116
|
-
// Full creation – first time populating the map.
|
|
117
|
-
// Tolerate partial data (missing content/root) the same way
|
|
118
|
-
// yMapToPuckData does on the read path: a document switch can seed a
|
|
119
|
-
// fresh Y.Doc from a page object that has no content array yet.
|
|
120
75
|
const contentArray = new Y.Array();
|
|
121
76
|
for (const item of data.content ?? []) {
|
|
122
77
|
contentArray.push([toYjsValue(item)]);
|
|
123
78
|
}
|
|
124
79
|
root.set('content', contentArray);
|
|
125
|
-
// Convert root data
|
|
126
80
|
root.set('root', toYjsValue(data.root ?? { props: {} }));
|
|
127
|
-
// Convert zones if present
|
|
128
81
|
if (data.zones) {
|
|
129
82
|
const zonesMap = new Y.Map();
|
|
130
83
|
for (const [key, components] of Object.entries(data.zones)) {
|
|
@@ -139,19 +92,11 @@ export function puckDataToYMap(data, root) {
|
|
|
139
92
|
}
|
|
140
93
|
}, LOCAL_ORIGIN);
|
|
141
94
|
}
|
|
142
|
-
/**
|
|
143
|
-
* Convert a Yjs Y.Map to PuckData.
|
|
144
|
-
*
|
|
145
|
-
* @param root - The Y.Map containing Puck data
|
|
146
|
-
* @returns The PuckData structure
|
|
147
|
-
*/
|
|
148
95
|
export function yMapToPuckData(root) {
|
|
149
96
|
const json = root.toJSON();
|
|
150
|
-
// Ensure content is an array
|
|
151
97
|
const content = Array.isArray(json.content)
|
|
152
98
|
? json.content
|
|
153
99
|
: [];
|
|
154
|
-
// Ensure root has props
|
|
155
100
|
const rootData = json.root;
|
|
156
101
|
const rootWithProps = {
|
|
157
102
|
props: rootData?.props ?? {},
|
|
@@ -161,65 +106,33 @@ export function yMapToPuckData(root) {
|
|
|
161
106
|
content,
|
|
162
107
|
root: rootWithProps,
|
|
163
108
|
};
|
|
164
|
-
// Include zones if present
|
|
165
109
|
if (json.zones) {
|
|
166
110
|
result.zones = json.zones;
|
|
167
111
|
}
|
|
168
112
|
return result;
|
|
169
113
|
}
|
|
170
|
-
/**
|
|
171
|
-
* Create a bidirectional binding between Puck data and a Y.Doc.
|
|
172
|
-
*
|
|
173
|
-
* Uses transaction origins to prevent sync loops:
|
|
174
|
-
* - Local changes use 'local' origin and don't trigger onRemoteUpdate
|
|
175
|
-
* - Remote changes (any other origin) trigger onRemoteUpdate
|
|
176
|
-
*
|
|
177
|
-
* @param ydoc - The Y.Doc to bind to
|
|
178
|
-
* @param onRemoteUpdate - Callback when remote changes arrive
|
|
179
|
-
* @returns Binding interface with applyLocalChange and destroy methods
|
|
180
|
-
*/
|
|
181
114
|
export function createPuckYjsBinding(ydoc, onRemoteUpdate) {
|
|
182
115
|
const root = ydoc.getMap('root');
|
|
183
|
-
// Instance-specific state to prevent interference between multiple bindings
|
|
184
|
-
// Previously this was a module-level variable which caused race conditions
|
|
185
|
-
// when multiple binding instances existed in the same browser window
|
|
186
116
|
const bindingState = {
|
|
187
117
|
isApplyingLocalChange: false,
|
|
188
118
|
destroyed: false,
|
|
189
119
|
};
|
|
190
|
-
// Observer for remote changes
|
|
191
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
192
120
|
const observer = (_events, txn) => {
|
|
193
|
-
// Double-check: skip if we're in the middle of applying a local change
|
|
194
|
-
// This handles any edge cases where transaction origin might not be set correctly
|
|
195
121
|
if (bindingState.isApplyingLocalChange) {
|
|
196
122
|
return;
|
|
197
123
|
}
|
|
198
|
-
// Ignore local changes by transaction origin
|
|
199
124
|
if (txn.origin === LOCAL_ORIGIN) {
|
|
200
125
|
return;
|
|
201
126
|
}
|
|
202
|
-
// Convert Y.Map to PuckData and notify
|
|
203
127
|
const puckData = yMapToPuckData(root);
|
|
204
|
-
// Guard against empty Yjs initial sync state. When a new Yjs document
|
|
205
|
-
// connects, the first sync may produce an empty snapshot ({} or
|
|
206
|
-
// { content: [], root: { props: {} } }). Applying this would overwrite
|
|
207
|
-
// real editor content and trigger a save loop.
|
|
208
128
|
if (puckData.content.length === 0 && Object.keys(puckData.root.props).length === 0 && !puckData.zones) {
|
|
209
129
|
return;
|
|
210
130
|
}
|
|
211
131
|
onRemoteUpdate(puckData);
|
|
212
132
|
};
|
|
213
|
-
// Subscribe to changes on root map
|
|
214
133
|
root.observeDeep(observer);
|
|
215
134
|
return {
|
|
216
|
-
/**
|
|
217
|
-
* Apply a local change to the Y.Doc.
|
|
218
|
-
* Uses LOCAL_ORIGIN to prevent triggering onRemoteUpdate.
|
|
219
|
-
* Also sets isApplyingLocalChange flag as a backup mechanism.
|
|
220
|
-
*/
|
|
221
135
|
applyLocalChange: (data) => {
|
|
222
|
-
// Prevent writes through a destroyed binding (cross-document state bleed guard)
|
|
223
136
|
if (bindingState.destroyed) {
|
|
224
137
|
return;
|
|
225
138
|
}
|
|
@@ -231,12 +144,6 @@ export function createPuckYjsBinding(ydoc, onRemoteUpdate) {
|
|
|
231
144
|
bindingState.isApplyingLocalChange = false;
|
|
232
145
|
}
|
|
233
146
|
},
|
|
234
|
-
/**
|
|
235
|
-
* Cleanup observers and mark as destroyed.
|
|
236
|
-
* After destroy(), applyLocalChange becomes a no-op.
|
|
237
|
-
* Idempotent: safe to call multiple times (e.g. React strict mode
|
|
238
|
-
* double-unmount where both useLayoutEffect and useEffect cleanups fire).
|
|
239
|
-
*/
|
|
240
147
|
destroy: () => {
|
|
241
148
|
if (bindingState.destroyed)
|
|
242
149
|
return;
|
|
@@ -245,12 +152,6 @@ export function createPuckYjsBinding(ydoc, onRemoteUpdate) {
|
|
|
245
152
|
},
|
|
246
153
|
};
|
|
247
154
|
}
|
|
248
|
-
/**
|
|
249
|
-
* Convert a JavaScript value to a Yjs-compatible value.
|
|
250
|
-
*
|
|
251
|
-
* @param value - The value to convert
|
|
252
|
-
* @returns The Yjs-compatible value
|
|
253
|
-
*/
|
|
254
155
|
function toYjsValue(value) {
|
|
255
156
|
if (value === null || value === undefined) {
|
|
256
157
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puckYjsBinding.js","sourceRoot":"","sources":["../../../src/editor/utils/puckYjsBinding.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"puckYjsBinding.js","sourceRoot":"","sources":["../../../src/editor/utils/puckYjsBinding.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAuBzB,MAAM,YAAY,GAAG,OAAO,CAAC;AA4B7B,MAAM,UAAU,SAAS,CACvB,IAAoB,EACpB,MAA+B;IAG/B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAG7B,IACE,MAAM,YAAY,CAAC,CAAC,GAAG;YACvB,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,CAAC;YACD,SAAS,CAAC,MAAM,EAAE,MAAiC,CAAC,CAAC;YACrD,SAAS;QACX,CAAC;QAGD,IAAI,MAAM,YAAY,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QAGD,IACE,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,GAAG,CAAC;YAC1B,CAAC,CAAC,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EACjD,CAAC;YACD,SAAS;QACX,CAAC;QAGD,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,WAAW,CACzB,IAAsB,EACtB,MAAiB;IAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAG1B,IACE,OAAO,YAAY,CAAC,CAAC,GAAG;YACxB,OAAO,KAAK,IAAI;YAChB,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,CAAC;YACD,SAAS,CAAC,OAAO,EAAE,OAAkC,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QAGD,IAAI,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzD,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAGD,IACE,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,GAAG,CAAC;YAC3B,CAAC,CAAC,OAAO,YAAY,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACnD,CAAC;YACD,SAAS;QACX,CAAC;QAGD,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAGD,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAGD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAUD,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,IAAoB;IAIjE,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;QACtB,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAElB,SAAS,CAAC,IAAI,EAAE,IAA0C,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YAKN,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;gBACtC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAGlC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAGzD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBAChC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;wBACnC,SAAS,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAC1C,CAAC;oBACD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC,EAAE,YAAY,CAAC,CAAC;AACnB,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAA6B,CAAC;IAGtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACzC,CAAC,CAAE,IAAI,CAAC,OAA+B;QACvC,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAgC,CAAC;IACvD,MAAM,aAAa,GAAiB;QAClC,KAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5B,GAAG,QAAQ;KACZ,CAAC;IAEF,MAAM,MAAM,GAAa;QACvB,OAAO;QACP,IAAI,EAAE,aAAa;KACpB,CAAC;IAGF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAA4C,CAAC;IACnE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,MAAM,UAAU,oBAAoB,CAClC,IAAW,EACX,cAAwC;IAExC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAKjC,MAAM,YAAY,GAAiB;QACjC,qBAAqB,EAAE,KAAK;QAC5B,SAAS,EAAE,KAAK;KACjB,CAAC;IAIF,MAAM,QAAQ,GAAG,CAAC,OAAc,EAAE,GAAkB,EAAQ,EAAE;QAG5D,IAAI,YAAY,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAGD,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAGD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAMtC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtG,OAAO;QACT,CAAC;QAED,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC;IAGF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE3B,OAAO;QAML,gBAAgB,EAAE,CAAC,IAAc,EAAE,EAAE;YAEnC,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YACD,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAC1C,IAAI,CAAC;gBACH,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,qBAAqB,GAAG,KAAK,CAAC;YAC7C,CAAC;QACH,CAAC;QAQD,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,YAAY,CAAC,SAAS;gBAAE,OAAO;YACnC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC;AAQD,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC;QACb,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reverts the document to a previous version.
|
|
3
|
-
*
|
|
4
|
-
* Flow:
|
|
5
|
-
* 1. Pause auto-save and flush any pending edits (with a confirm fallback on flush failure).
|
|
6
|
-
* 2. Call the restore API. On success, best-effort reload the document.
|
|
7
|
-
* 3. Resume auto-save (always, in finally).
|
|
8
|
-
* 4. Notify the caller whether the reload succeeded so it can refresh the
|
|
9
|
-
* version list and remount Puck with clean state.
|
|
10
|
-
*
|
|
11
|
-
* @param onReloadSuccess - Called when the post-restore document reload succeeds.
|
|
12
|
-
*/
|
|
13
1
|
export async function restoreDocumentVersion(version, deps, refreshVersions, onReloadSuccess) {
|
|
14
2
|
const { client, siteId, branchId, currentDocument, pauseAutoSave, resumeAutoSave, persistCurrentEdits, loadDocument, notifications } = deps;
|
|
15
3
|
if (!currentDocument)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restoreDocumentVersion.js","sourceRoot":"","sources":["../../../src/editor/utils/restoreDocumentVersion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"restoreDocumentVersion.js","sourceRoot":"","sources":["../../../src/editor/utils/restoreDocumentVersion.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAwB,EACxB,IAAiB,EACjB,eAAoC,EACpC,eAA2B;IAE3B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EACxE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAElE,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,aAAa,EAAE,CAAC;IAEhB,IAAI,CAAC;QACH,MAAM,mBAAmB,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC5B,uEAAuE,CACxE,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,cAAc,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;IACH,CAAC;IAED,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACzC,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,CAAC,eAAe,CAAC;gBAC5B,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,0FAA0F;aACpG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;YAAS,CAAC;QACT,cAAc,EAAE,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,EAAE,CAAC;IACxB,IAAI,eAAe;QAAE,eAAe,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1,18 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Strip empty-string defaults from richtext fields in a Puck config.
|
|
3
|
-
*
|
|
4
|
-
* Puck merges `defaultProps` underneath stored props on every render, so a
|
|
5
|
-
* block whose stored props omit a richtext key silently renders that key's
|
|
6
|
-
* default. An empty-string default is fatal there: Puck's RichTextRender wraps
|
|
7
|
-
* any non-HTML string as `{type:"text", text: value}`, and prosemirror-model
|
|
8
|
-
* rejects a zero-length text node with `RangeError: Empty text nodes are not
|
|
9
|
-
* allowed` — taking down the whole subtree, since that render path has no error
|
|
10
|
-
* boundary. `undefined` is safe (it normalizes to an empty doc), so dropping
|
|
11
|
-
* the key is strictly better than defaulting to "".
|
|
12
|
-
*
|
|
13
|
-
* Runs over nested object/array fields too, since richtext commonly lives
|
|
14
|
-
* inside array items.
|
|
15
|
-
*/
|
|
16
1
|
const DROP = Symbol('drop');
|
|
17
2
|
function sanitizeValue(field, value) {
|
|
18
3
|
if (!field)
|
|
@@ -25,9 +10,6 @@ function sanitizeValue(field, value) {
|
|
|
25
10
|
}
|
|
26
11
|
if (field.type === 'array' && field.arrayFields && Array.isArray(value)) {
|
|
27
12
|
const itemFields = field.arrayFields;
|
|
28
|
-
// `map` always allocates, so compare item identity to decide whether the
|
|
29
|
-
// array actually changed — otherwise the caller sees a new reference and
|
|
30
|
-
// treats an untouched config as modified.
|
|
31
13
|
let itemChanged = false;
|
|
32
14
|
const next = value.map((item) => {
|
|
33
15
|
if (!isPlainObject(item))
|
|
@@ -66,14 +48,6 @@ function sanitizeComponent(component) {
|
|
|
66
48
|
const next = sanitizeProps(fields, defaultProps);
|
|
67
49
|
return next === defaultProps ? component : { ...component, defaultProps: next };
|
|
68
50
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Return a config with empty-string richtext defaults removed. Returns the
|
|
71
|
-
* input unchanged (same reference) when there is nothing to strip, so it is
|
|
72
|
-
* safe to call in a render path without breaking Puck's memoization.
|
|
73
|
-
*/
|
|
74
|
-
// Generic in T rather than constrained to ConfigLike: Puck's `Config` field
|
|
75
|
-
// unions don't structurally satisfy the loose shape this walks, and callers
|
|
76
|
-
// should get their own config type back untouched.
|
|
77
51
|
export function sanitizeRichtextDefaults(config) {
|
|
78
52
|
const input = config;
|
|
79
53
|
let changed = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizeRichtextDefaults.js","sourceRoot":"","sources":["../../../src/editor/utils/sanitizeRichtextDefaults.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitizeRichtextDefaults.js","sourceRoot":"","sources":["../../../src/editor/utils/sanitizeRichtextDefaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,4 @@
|
|
|
1
1
|
const EMPTY = { content: [], root: { props: {} } };
|
|
2
|
-
/**
|
|
3
|
-
* Coerce a stored version snapshot into PuckData. Snapshots are typed as
|
|
4
|
-
* objects, but the backend sometimes returns them as a JSON string; parsing
|
|
5
|
-
* here keeps every downstream consumer (currentData, safeData, the Yjs seed,
|
|
6
|
-
* the document-sync store) working with a real object instead of spreading a
|
|
7
|
-
* string character-by-character. Empty or invalid snapshots — including the
|
|
8
|
-
* blank initial version — collapse to blank Puck data.
|
|
9
|
-
*/
|
|
10
2
|
export function snapshotToPuckData(snapshot) {
|
|
11
3
|
let value = snapshot;
|
|
12
4
|
if (typeof value === "string") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshotToPuckData.js","sourceRoot":"","sources":["../../../src/editor/utils/snapshotToPuckData.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAa,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"snapshotToPuckData.js","sourceRoot":"","sources":["../../../src/editor/utils/snapshotToPuckData.ts"],"names":[],"mappings":"AAEA,MAAM,KAAK,GAAa,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;AAU7D,MAAM,UAAU,kBAAkB,CAAC,QAAiB;IAClD,IAAI,KAAK,GAAY,QAAQ,CAAC;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,IAAI,GAAG,KAA0B,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9C,OAAO,IAAgB,CAAC;AAC1B,CAAC"}
|