@pantheon-systems/puck-css 0.8.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 +1 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/types.d.ts +10 -3
- 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 +21 -0
- package/dist/data/dal/p1-store.d.ts.map +1 -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 +57 -18
- 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.js +1 -1
- package/dist/editor/components/InspectorTabHeader.js.map +1 -1
- 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.map +1 -1
- package/dist/editor/components/P1InspectorFields.js +12 -5
- package/dist/editor/components/P1InspectorFields.js.map +1 -1
- 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 +20 -5
- 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 +19 -3
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +113 -47
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/plugin/createP1Overrides.d.ts +31 -43
- package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +47 -43
- package/dist/editor/plugin/createP1Overrides.js.map +1 -1
- 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/useP1Editor.d.ts +14 -4
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +34 -5
- 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 +15 -3
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +4 -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/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/features/content-type-templates/permissions/createPuckPermissions.d.ts +1 -3
- package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -1
- 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/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- 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 +2 -2
- 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 +1 -1
- 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 +8 -1
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/p1/editor/hooks/api-hooks.d.ts +4 -4
- package/dist/p1/editor/hooks/api-hooks.d.ts.map +1 -1
- package/dist/p1/editor/hooks/api-hooks.js +57 -30
- package/dist/p1/editor/hooks/api-hooks.js.map +1 -1
- package/dist/p1/editor/hooks/useEditorContext.d.ts +1 -1
- package/dist/p1/editor/hooks/useEditorContext.d.ts.map +1 -1
- package/dist/p1/editor/hooks/useEditorContext.js +12 -3
- package/dist/p1/editor/hooks/useEditorContext.js.map +1 -1
- package/dist/p1/editor/hooks/useP1Plugins.d.ts.map +1 -1
- package/dist/p1/editor/hooks/useP1Plugins.js +4 -2
- package/dist/p1/editor/hooks/useP1Plugins.js.map +1 -1
- 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 +1 -1
- package/dist/p1/editor/index.d.ts.map +1 -1
- package/dist/p1/editor/index.js +1 -1
- package/dist/p1/editor/index.js.map +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-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 +1 -1
- package/dist/p1/editor/remote-datasources/remote-datasource-manager.js.map +1 -1
- package/dist/p1/editor/remote-datasources/template-preview-params-toolbar.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 +1 -1
- 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/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/server.d.ts +3 -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/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/version-compare/VisualVersionCompare.d.ts +2 -2
- package/dist/versioning/components/version-compare/VisualVersionCompare.d.ts.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 +9 -6
- package/src/pds/theme/PuckEditorTheme.css +81 -0
- package/src/pds/theme/PuckEditorTheme.test.ts +50 -1
- package/src/styles.css +517 -32
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* P1 Puck Overrides
|
|
4
|
+
*
|
|
5
|
+
* Creates Puck overrides for P1 integration, including
|
|
6
|
+
* header actions for save status and publish functionality.
|
|
7
|
+
*/
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import { ActionBar, FieldLabel } from '@puckeditor/core';
|
|
3
10
|
import { SaveIndicator } from '../components/SaveIndicator.js';
|
|
4
|
-
import { HistoricalVersionBanner } from '../../versioning/components/HistoricalVersionBanner.js';
|
|
5
11
|
import { CollaboratorAvatars } from '../../collaboration/components/CollaboratorAvatars.js';
|
|
6
12
|
import { AgentActivityBanner } from '../../collaboration/components/AgentActivityBanner.js';
|
|
7
13
|
import { PublishedStatusBadge } from '../components/PublishedStatusBadge.js';
|
|
8
14
|
import { ActionBarPinButton } from '../../features/content-type-templates/ui/ActionBarPinButton.js';
|
|
9
15
|
import { P1InspectorFields } from '../components/P1InspectorFields.js';
|
|
16
|
+
import { CollapsibleFieldSection } from '../components/CollapsibleFieldSection.js';
|
|
17
|
+
import { CollapsibleFieldContext } from '../components/collapsibleSectionContext.js';
|
|
18
|
+
import { OutlinePanel } from '../components/OutlinePanel.js';
|
|
19
|
+
import { fieldGuidanceFieldTypes } from './fieldGuidance.js';
|
|
10
20
|
// NOTE: PuckDataSynchronizer is NOT imported here - it's used in P1Plugin instead
|
|
11
21
|
// because headerActions renders outside Puck's context where usePuck() doesn't work.
|
|
12
22
|
// Re-exported for backwards compatibility — implementation lives in utils/templatePath.ts.
|
|
@@ -14,46 +24,26 @@ export { templateFromRegistryPath } from '../utils/templatePath.js';
|
|
|
14
24
|
// Re-exported for backwards compatibility — implementation lives in components/P1TemplateFields.tsx.
|
|
15
25
|
export { P1TemplateFields } from '../components/P1TemplateFields.js';
|
|
16
26
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```tsx
|
|
23
|
-
* import { createP1Overrides, useP1Puck } from '@pantheon-systems/puck-css';
|
|
27
|
+
* Renders an opted-in field group's label row as a disclosure. Puck hands a
|
|
28
|
+
* label override the field's content as `children`, so the group's own label
|
|
29
|
+
* becomes the toggle — there is no second header and nothing to suppress.
|
|
24
30
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* saveStatus,
|
|
28
|
-
* lastSaved,
|
|
29
|
-
* saveError,
|
|
30
|
-
* saveNow,
|
|
31
|
-
* publishDocument,
|
|
32
|
-
* } = useP1Puck();
|
|
31
|
+
* The context is cleared for descendants so a nested group inside a collapsible
|
|
32
|
+
* one keeps its ordinary label.
|
|
33
33
|
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* getSaveStatus: () => saveStatusRef.current,
|
|
40
|
-
* getLastSaved: () => lastSavedRef.current,
|
|
41
|
-
* getSaveError: () => saveErrorRef.current,
|
|
42
|
-
* onRetrySave: saveNow,
|
|
43
|
-
* });
|
|
44
|
-
*
|
|
45
|
-
* // Legacy: direct values (causes overrides to be recreated on changes)
|
|
46
|
-
* const overrides = createP1Overrides({
|
|
47
|
-
* saveStatus,
|
|
48
|
-
* lastSaved,
|
|
49
|
-
* saveError,
|
|
50
|
-
* onRetrySave: saveNow,
|
|
51
|
-
* });
|
|
52
|
-
*
|
|
53
|
-
* return <Puck overrides={overrides} {...otherProps} />;
|
|
54
|
-
* }
|
|
55
|
-
* ```
|
|
34
|
+
* Ordinary field labels drop Puck's field-type icon. Its select variant is a
|
|
35
|
+
* chevron, the same glyph the disclosure above uses, so it reads as a group that
|
|
36
|
+
* expands and then does nothing. The label already says what the field is, and
|
|
37
|
+
* the narrow inspector would rather have the space. The read-only lock is a
|
|
38
|
+
* separate slot and survives.
|
|
56
39
|
*/
|
|
40
|
+
export function P1FieldLabel(props) {
|
|
41
|
+
const collapsible = React.useContext(CollapsibleFieldContext);
|
|
42
|
+
if (collapsible && props.el === 'div') {
|
|
43
|
+
return (_jsx(CollapsibleFieldContext.Provider, { value: null, children: _jsx(CollapsibleFieldSection, { label: props.label, defaultCollapsed: collapsible.defaultCollapsed, count: collapsible.count, children: props.children }) }));
|
|
44
|
+
}
|
|
45
|
+
return _jsx(FieldLabel, { ...props, icon: undefined });
|
|
46
|
+
}
|
|
57
47
|
export function createP1Overrides(options) {
|
|
58
48
|
const {
|
|
59
49
|
// New getter-based API (preferred)
|
|
@@ -63,7 +53,7 @@ export function createP1Overrides(options) {
|
|
|
63
53
|
// Common options
|
|
64
54
|
onRetrySave, showDefaultPublish = false,
|
|
65
55
|
// Deprecated props - kept for type signature compatibility but ignored
|
|
66
|
-
syncData: _syncData, dataSyncKey: _dataSyncKey,
|
|
56
|
+
syncData: _syncData, dataSyncKey: _dataSyncKey, onRestoreVersion: _onRestoreVersion, canRevert: _canRevert,
|
|
67
57
|
// Presence/Agent Features — NOT destructured here.
|
|
68
58
|
// These are read lazily from `options` in the headerActions render function
|
|
69
59
|
// so that the Proxy pattern from useP1Overrides provides live values.
|
|
@@ -72,6 +62,8 @@ export function createP1Overrides(options) {
|
|
|
72
62
|
// Suppress unused variable warnings for deprecated props
|
|
73
63
|
void _syncData;
|
|
74
64
|
void _dataSyncKey;
|
|
65
|
+
void _onRestoreVersion;
|
|
66
|
+
void _canRevert;
|
|
75
67
|
// Determine if using getter API or direct props API
|
|
76
68
|
const usingGetters = typeof getSaveStatus === 'function';
|
|
77
69
|
// Build props for SaveIndicator based on which API is being used
|
|
@@ -91,6 +83,20 @@ export function createP1Overrides(options) {
|
|
|
91
83
|
return {
|
|
92
84
|
actionBar: ({ label, children }) => (_jsxs(ActionBar, { label: label, children: [children, _jsx(ActionBarPinButton, {})] })),
|
|
93
85
|
fields: ({ children }) => (_jsx(P1InspectorFields, { children: children })),
|
|
86
|
+
fieldLabel: P1FieldLabel,
|
|
87
|
+
fieldTypes: {
|
|
88
|
+
...fieldGuidanceFieldTypes,
|
|
89
|
+
// Marks an opted-in object field for P1FieldLabel, which owns the rendering
|
|
90
|
+
// because it is the only override that receives the label. Object fields
|
|
91
|
+
// without `metadata.collapsible` pass through untouched.
|
|
92
|
+
object: ({ field, children, }) => field.metadata?.collapsible ? (_jsx(CollapsibleFieldContext.Provider, { value: {
|
|
93
|
+
defaultCollapsed: field.metadata.defaultCollapsed,
|
|
94
|
+
// Derived from the resolved field set, so omitting a field — how
|
|
95
|
+
// role gating will hide one — moves the count with it.
|
|
96
|
+
count: Object.keys(field.objectFields ?? {}).length,
|
|
97
|
+
}, children: children })) : (_jsx(_Fragment, { children: children })),
|
|
98
|
+
},
|
|
99
|
+
outline: () => _jsx(OutlinePanel, {}),
|
|
94
100
|
headerActions: ({ children }) => {
|
|
95
101
|
// Read presence/agent values lazily from options (Proxy) each render
|
|
96
102
|
// so they reflect the latest state from useP1Overrides' optionsRef.
|
|
@@ -102,12 +108,10 @@ export function createP1Overrides(options) {
|
|
|
102
108
|
const _onStopAgent = options.onStopAgent;
|
|
103
109
|
const _showSaveIndicator = options.showSaveIndicator ?? true;
|
|
104
110
|
const _isViewingHistoricalVersion = options.isViewingHistoricalVersion ?? false;
|
|
105
|
-
const _viewingVersion = options.viewingVersion;
|
|
106
|
-
const _onReturnToLatest = options.onReturnToLatest;
|
|
107
111
|
const _publishedStatus = options.publishedStatus;
|
|
108
112
|
// Find the first active agent for banner display
|
|
109
113
|
const firstActiveAgent = _activeAgents.find(a => a.state === 'editing') || _activeAgents[0];
|
|
110
|
-
return (_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: [_showAgentActivityBanner && _isAgentEditing && firstActiveAgent && (_jsx(AgentActivityBanner, { agent: firstActiveAgent, showIdle: true, onStopAgent: _onStopAgent })), _showCollaboratorAvatars && _presence.length > 0 && (_jsx(CollaboratorAvatars, { actors: _presence, maxVisible: 5 })), _isViewingHistoricalVersion &&
|
|
114
|
+
return (_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '8px' }, children: [_showAgentActivityBanner && _isAgentEditing && firstActiveAgent && (_jsx(AgentActivityBanner, { agent: firstActiveAgent, showIdle: true, onStopAgent: _onStopAgent })), _showCollaboratorAvatars && _presence.length > 0 && (_jsx(CollaboratorAvatars, { actors: _presence, maxVisible: 5 })), !_isViewingHistoricalVersion && (_jsxs(_Fragment, { children: [_showSaveIndicator && _jsx(SaveIndicator, { ...saveIndicatorProps }), _publishedStatus && (_jsx(PublishedStatusBadge, { status: _publishedStatus }))] })), showDefaultPublish && children] }));
|
|
111
115
|
},
|
|
112
116
|
};
|
|
113
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createP1Overrides.js","sourceRoot":"","sources":["../../../src/editor/plugin/createP1Overrides.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"createP1Overrides.js","sourceRoot":"","sources":["../../../src/editor/plugin/createP1Overrides.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-field help text, rendered under the input.
|
|
3
|
+
*
|
|
4
|
+
* Opt in with Puck's per-field `metadata`, the same extension point the
|
|
5
|
+
* collapsible section uses:
|
|
6
|
+
*
|
|
7
|
+
* metadata: { help: 'Always shown.', helpWhenEmpty: 'Shown while empty.' }
|
|
8
|
+
*
|
|
9
|
+
* `helpWhenEmpty` is how an inheriting field says where its value comes from,
|
|
10
|
+
* since a field is inheriting exactly while it is empty. Fields without either
|
|
11
|
+
* key render unchanged.
|
|
12
|
+
*
|
|
13
|
+
* These are `fieldTypes` overrides, so Puck hands us its own field renderer as
|
|
14
|
+
* `children` — the help is appended after it rather than replacing it. Note the
|
|
15
|
+
* side effect of registering a type here: Puck subscribes to the value of every
|
|
16
|
+
* field of that type, which is what makes the empty/authored switch work.
|
|
17
|
+
*/
|
|
18
|
+
import React from 'react';
|
|
19
|
+
export interface FieldGuidanceMetadata {
|
|
20
|
+
help?: string;
|
|
21
|
+
helpWhenEmpty?: string;
|
|
22
|
+
}
|
|
23
|
+
interface GuidedFieldProps {
|
|
24
|
+
field: {
|
|
25
|
+
metadata?: FieldGuidanceMetadata;
|
|
26
|
+
};
|
|
27
|
+
value: unknown;
|
|
28
|
+
children: React.ReactNode;
|
|
29
|
+
}
|
|
30
|
+
declare function WithHelpText({ field, value, children }: GuidedFieldProps): React.ReactElement;
|
|
31
|
+
/**
|
|
32
|
+
* The field types help text is wired for. Select is included for the fields
|
|
33
|
+
* whose fallback is a fixed default rather than another prop — it has no
|
|
34
|
+
* `placeholder` to show one in, so the help line carries it alone.
|
|
35
|
+
*/
|
|
36
|
+
export declare const fieldGuidanceFieldTypes: {
|
|
37
|
+
text: typeof WithHelpText;
|
|
38
|
+
textarea: typeof WithHelpText;
|
|
39
|
+
select: typeof WithHelpText;
|
|
40
|
+
};
|
|
41
|
+
export declare function createFieldGuidanceOverrides(): {
|
|
42
|
+
fieldTypes: typeof fieldGuidanceFieldTypes;
|
|
43
|
+
};
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=fieldGuidance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldGuidance.d.ts","sourceRoot":"","sources":["../../../src/editor/plugin/fieldGuidance.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,gBAAgB;IACxB,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,qBAAqB,CAAA;KAAE,CAAC;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,iBAAS,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CActF;AAED;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC;AAEF,wBAAgB,4BAA4B,IAAI;IAC9C,UAAU,EAAE,OAAO,uBAAuB,CAAC;CAC5C,CAEA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { FieldHelpText } from '../components/FieldHelpText.js';
|
|
3
|
+
function WithHelpText({ field, value, children }) {
|
|
4
|
+
const { help, helpWhenEmpty } = field.metadata ?? {};
|
|
5
|
+
const text = value === undefined || value === null || value === '' ? helpWhenEmpty ?? help : help;
|
|
6
|
+
if (!text) {
|
|
7
|
+
return _jsx(_Fragment, { children: children });
|
|
8
|
+
}
|
|
9
|
+
return (_jsxs(_Fragment, { children: [children, _jsx(FieldHelpText, { children: text })] }));
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The field types help text is wired for. Select is included for the fields
|
|
13
|
+
* whose fallback is a fixed default rather than another prop — it has no
|
|
14
|
+
* `placeholder` to show one in, so the help line carries it alone.
|
|
15
|
+
*/
|
|
16
|
+
export const fieldGuidanceFieldTypes = {
|
|
17
|
+
text: WithHelpText,
|
|
18
|
+
textarea: WithHelpText,
|
|
19
|
+
select: WithHelpText,
|
|
20
|
+
};
|
|
21
|
+
export function createFieldGuidanceOverrides() {
|
|
22
|
+
return { fieldTypes: fieldGuidanceFieldTypes };
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=fieldGuidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldGuidance.js","sourceRoot":"","sources":["../../../src/editor/plugin/fieldGuidance.tsx"],"names":[],"mappings":";AAmBA,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAa/D,SAAS,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAChE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAElG,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,4BAAG,QAAQ,GAAI,CAAC;IACzB,CAAC;IAED,OAAO,CACL,8BACG,QAAQ,EACT,KAAC,aAAa,cAAE,IAAI,GAAiB,IACpC,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,YAAY;IACtB,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,MAAM,UAAU,4BAA4B;IAG1C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergePreviewPlugin.d.ts","sourceRoot":"","sources":["../../../src/editor/plugin/mergePreviewPlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mergePreviewPlugin.d.ts","sourceRoot":"","sources":["../../../src/editor/plugin/mergePreviewPlugin.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,yBAAyB;IACxC,mDAAmD;IAEnD,MAAM,EAAE,GAAG,CAAC;IAEZ,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAyDD,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,yBAAyB,GACjC,UAAU,CAYZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergePreviewPlugin.js","sourceRoot":"","sources":["../../../src/editor/plugin/mergePreviewPlugin.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"mergePreviewPlugin.js","sourceRoot":"","sources":["../../../src/editor/plugin/mergePreviewPlugin.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAkBhE,SAAS,0BAA0B,CAAC,EAClC,MAAM,EACN,gBAAgB,GACgB;IAChC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,GACnF,eAAe,EAAE,CAAC;IAEpB,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,4BAA4B,8BAAmB,EAC7D,YAAG,SAAS,EAAC,4BAA4B,0EAErC,IACA,CACP,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,4BAA4B,8BAAmB,EAC7D,YAAG,SAAS,EAAC,8BAA8B,yCAAwB,IAC/D,CACP,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,4BAA4B,8BAAmB,EAC7D,aAAG,SAAS,EAAC,4BAA4B,4CACX,KAAK,CAAC,OAAO,IACvC,IACA,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,iBAAiB,IAChB,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAClC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAkC;IAElC,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,eAAe;QACtB,IAAI,EAAE,KAAC,gBAAgB,KAAG;QAC1B,MAAM,EAAE,GAAG,EAAE,CAAC,CACZ,KAAC,0BAA0B,IACzB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAC1C,CACH;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selects the human collaborators shown as avatars in the editor header.
|
|
3
|
+
*
|
|
4
|
+
* Agents are deliberately excluded — they render as chips in the subheader.
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
import type { ActorPresence } from '@pantheon-systems/css-client';
|
|
8
|
+
export interface HeaderPresenceState {
|
|
9
|
+
humans?: ActorPresence[];
|
|
10
|
+
}
|
|
11
|
+
export declare function selectHeaderCollaborators(presence: HeaderPresenceState | null | undefined, _hasActiveHumans: boolean, humanPresenceCount: number): ActorPresence[];
|
|
12
|
+
//# sourceMappingURL=selectHeaderCollaborators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectHeaderCollaborators.d.ts","sourceRoot":"","sources":["../../../src/editor/plugin/selectHeaderCollaborators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EAChD,gBAAgB,EAAE,OAAO,EACzB,kBAAkB,EAAE,MAAM,GACzB,aAAa,EAAE,CAMjB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selects the human collaborators shown as avatars in the editor header.
|
|
3
|
+
*
|
|
4
|
+
* Agents are deliberately excluded — they render as chips in the subheader.
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
export function selectHeaderCollaborators(presence, _hasActiveHumans, humanPresenceCount) {
|
|
8
|
+
const humans = presence?.humans ?? [];
|
|
9
|
+
// humanPresenceCount is the fresher of the two signals on a mid-session
|
|
10
|
+
// departure, so it still guards against a stale presence getter.
|
|
11
|
+
if (humanPresenceCount <= 0 || humans.length === 0)
|
|
12
|
+
return [];
|
|
13
|
+
return humans;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=selectHeaderCollaborators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selectHeaderCollaborators.js","sourceRoot":"","sources":["../../../src/editor/plugin/selectHeaderCollaborators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,UAAU,yBAAyB,CACvC,QAAgD,EAChD,gBAAyB,EACzB,kBAA0B;IAE1B,MAAM,MAAM,GAAG,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC;IACtC,wEAAwE;IACxE,iEAAiE;IACjE,IAAI,kBAAkB,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LiveThumbnail
|
|
3
|
+
*
|
|
4
|
+
* Renders a real, scaled-down preview of a single Puck component using the
|
|
5
|
+
* component's own `defaultProps`, via Puck's <Render>. The preview is clipped
|
|
6
|
+
* to a fixed height and made non-interactive so it reads as a static thumbnail
|
|
7
|
+
* inside the visual component sidebar.
|
|
8
|
+
*
|
|
9
|
+
* Rendering is cached (see thumbnailCache): on a miss we render live and
|
|
10
|
+
* capture the resulting HTML; on a hit we re-inject the cached HTML instead of
|
|
11
|
+
* re-rendering the component. The cache survives editor remounts within a
|
|
12
|
+
* page load, avoiding re-rendering identical previews on every document
|
|
13
|
+
* switch.
|
|
14
|
+
*
|
|
15
|
+
* The initial capture happens right after the component's first commit, but a
|
|
16
|
+
* component that renders its own content asynchronously (e.g. after a fetch,
|
|
17
|
+
* in its own effect) may still be showing a loading state at that point. A
|
|
18
|
+
* MutationObserver keeps watching the live render and re-captures on every
|
|
19
|
+
* DOM change, so the cache converges on the settled output instead of
|
|
20
|
+
* permanently freezing whatever was on screen first.
|
|
21
|
+
*
|
|
22
|
+
* The config handed to Puck's <Render> has its `root` swapped for a
|
|
23
|
+
* pass-through: this preview is a single component, not a page, so it must
|
|
24
|
+
* not run the site's real page-root wrapper (e.g. a title `<h1>`) — that
|
|
25
|
+
* wrapper reflects the actual document currently open in the editor, not
|
|
26
|
+
* this isolated stub, and would otherwise leak into every preview.
|
|
27
|
+
*
|
|
28
|
+
* Unlike the exploratory spike this does NOT self-measure its height — grid
|
|
29
|
+
* cards want a uniform, fixed size, so we clip overflow instead.
|
|
30
|
+
*/
|
|
31
|
+
import React from 'react';
|
|
32
|
+
type RenderConfig = any;
|
|
33
|
+
export interface LiveThumbnailProps {
|
|
34
|
+
/** The Puck config the component belongs to. */
|
|
35
|
+
config: RenderConfig;
|
|
36
|
+
/** Component key to preview (e.g. "HeroBlock"). */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Zoom factor applied to the live render. Lower = more fits. */
|
|
39
|
+
scale?: number;
|
|
40
|
+
/** Fixed height of the clipped preview box, in pixels. */
|
|
41
|
+
height?: number;
|
|
42
|
+
}
|
|
43
|
+
declare function LiveThumbnailImpl({ config, name, scale, height }: LiveThumbnailProps): React.JSX.Element;
|
|
44
|
+
/** Memoized so re-expanding a category doesn't re-render existing previews. */
|
|
45
|
+
export declare const LiveThumbnail: React.MemoExoticComponent<typeof LiveThumbnailImpl>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=LiveThumbnail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveThumbnail.d.ts","sourceRoot":"","sources":["../../../src/editor/thumbnails/LiveThumbnail.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,MAAM,EAAE,YAAY,CAAC;IACrB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,iBAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAW,EAAE,MAAiC,EAAE,EAAE,kBAAkB,qBAiG9G;AAED,+EAA+E;AAC/E,eAAO,MAAM,aAAa,qDAAgC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* LiveThumbnail
|
|
4
|
+
*
|
|
5
|
+
* Renders a real, scaled-down preview of a single Puck component using the
|
|
6
|
+
* component's own `defaultProps`, via Puck's <Render>. The preview is clipped
|
|
7
|
+
* to a fixed height and made non-interactive so it reads as a static thumbnail
|
|
8
|
+
* inside the visual component sidebar.
|
|
9
|
+
*
|
|
10
|
+
* Rendering is cached (see thumbnailCache): on a miss we render live and
|
|
11
|
+
* capture the resulting HTML; on a hit we re-inject the cached HTML instead of
|
|
12
|
+
* re-rendering the component. The cache survives editor remounts within a
|
|
13
|
+
* page load, avoiding re-rendering identical previews on every document
|
|
14
|
+
* switch.
|
|
15
|
+
*
|
|
16
|
+
* The initial capture happens right after the component's first commit, but a
|
|
17
|
+
* component that renders its own content asynchronously (e.g. after a fetch,
|
|
18
|
+
* in its own effect) may still be showing a loading state at that point. A
|
|
19
|
+
* MutationObserver keeps watching the live render and re-captures on every
|
|
20
|
+
* DOM change, so the cache converges on the settled output instead of
|
|
21
|
+
* permanently freezing whatever was on screen first.
|
|
22
|
+
*
|
|
23
|
+
* The config handed to Puck's <Render> has its `root` swapped for a
|
|
24
|
+
* pass-through: this preview is a single component, not a page, so it must
|
|
25
|
+
* not run the site's real page-root wrapper (e.g. a title `<h1>`) — that
|
|
26
|
+
* wrapper reflects the actual document currently open in the editor, not
|
|
27
|
+
* this isolated stub, and would otherwise leak into every preview.
|
|
28
|
+
*
|
|
29
|
+
* Unlike the exploratory spike this does NOT self-measure its height — grid
|
|
30
|
+
* cards want a uniform, fixed size, so we clip overflow instead.
|
|
31
|
+
*/
|
|
32
|
+
import React from 'react';
|
|
33
|
+
import { Render } from '@puckeditor/core';
|
|
34
|
+
import { getCachedThumbnail, setCachedThumbnail, getThumbnailCacheKey } from './thumbnailCache.js';
|
|
35
|
+
import { DEFAULT_THUMBNAIL_HEIGHT } from './ThumbnailCard.js';
|
|
36
|
+
function LiveThumbnailImpl({ config, name, scale = 0.2, height = DEFAULT_THUMBNAIL_HEIGHT }) {
|
|
37
|
+
const defaultProps = config?.components?.[name]?.defaultProps ?? {};
|
|
38
|
+
const cacheKey = getThumbnailCacheKey(config, name);
|
|
39
|
+
// Read once at mount: a hit lets us skip the live render entirely.
|
|
40
|
+
const [cached] = React.useState(() => getCachedThumbnail(cacheKey));
|
|
41
|
+
const innerRef = React.useRef(null);
|
|
42
|
+
// Isolated document: this preview is the one component, not a page — the
|
|
43
|
+
// real root wrapper is swapped for a pass-through below.
|
|
44
|
+
const data = {
|
|
45
|
+
root: { props: {} },
|
|
46
|
+
content: [
|
|
47
|
+
{
|
|
48
|
+
type: name,
|
|
49
|
+
props: { id: `thumb-${name}`, ...defaultProps },
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
zones: {},
|
|
53
|
+
};
|
|
54
|
+
const isolatedConfig = React.useMemo(() => ({ ...config, root: { render: ({ children }) => children } }), [config]);
|
|
55
|
+
// On a miss, capture the live-rendered HTML once it has committed, then
|
|
56
|
+
// keep re-capturing on any further mutation so a component that finishes
|
|
57
|
+
// rendering asynchronously (its own effect, a fetch, an image swap) doesn't
|
|
58
|
+
// get an incomplete snapshot cached permanently.
|
|
59
|
+
//
|
|
60
|
+
// Mutations are debounced through requestAnimationFrame so a burst of DOM
|
|
61
|
+
// changes (e.g. a component updating several nodes at once) produces one
|
|
62
|
+
// capture per frame. Attribute mutations are excluded — they fire continuously
|
|
63
|
+
// for animations and class toggles without changing rendered content.
|
|
64
|
+
// The observer disconnects after 500 ms of DOM quiet so it doesn't run for
|
|
65
|
+
// the drawer's entire lifetime.
|
|
66
|
+
React.useEffect(() => {
|
|
67
|
+
if (cached !== undefined)
|
|
68
|
+
return;
|
|
69
|
+
const node = innerRef.current;
|
|
70
|
+
if (!node)
|
|
71
|
+
return;
|
|
72
|
+
const capture = () => {
|
|
73
|
+
const html = node.innerHTML;
|
|
74
|
+
if (html)
|
|
75
|
+
setCachedThumbnail(cacheKey, html);
|
|
76
|
+
};
|
|
77
|
+
let rafId = null;
|
|
78
|
+
let settleTimer = null;
|
|
79
|
+
const onMutation = () => {
|
|
80
|
+
if (rafId !== null)
|
|
81
|
+
cancelAnimationFrame(rafId);
|
|
82
|
+
rafId = requestAnimationFrame(() => {
|
|
83
|
+
capture();
|
|
84
|
+
rafId = null;
|
|
85
|
+
});
|
|
86
|
+
if (settleTimer !== null)
|
|
87
|
+
clearTimeout(settleTimer);
|
|
88
|
+
settleTimer = setTimeout(() => observer.disconnect(), 500);
|
|
89
|
+
};
|
|
90
|
+
capture();
|
|
91
|
+
const observer = new MutationObserver(onMutation);
|
|
92
|
+
observer.observe(node, { childList: true, subtree: true, characterData: true });
|
|
93
|
+
return () => {
|
|
94
|
+
observer.disconnect();
|
|
95
|
+
if (rafId !== null)
|
|
96
|
+
cancelAnimationFrame(rafId);
|
|
97
|
+
if (settleTimer !== null)
|
|
98
|
+
clearTimeout(settleTimer);
|
|
99
|
+
};
|
|
100
|
+
}, [cached, cacheKey]);
|
|
101
|
+
const boxStyle = {
|
|
102
|
+
width: '100%',
|
|
103
|
+
height,
|
|
104
|
+
overflow: 'hidden',
|
|
105
|
+
background: '#fff',
|
|
106
|
+
pointerEvents: 'none',
|
|
107
|
+
};
|
|
108
|
+
const innerStyle = {
|
|
109
|
+
transform: `scale(${scale})`,
|
|
110
|
+
transformOrigin: 'top left',
|
|
111
|
+
width: `${100 / scale}%`,
|
|
112
|
+
};
|
|
113
|
+
return (_jsx("div", { style: boxStyle, children: cached !== undefined ? (
|
|
114
|
+
// Trusted source: this HTML was produced by our own <Render> of the
|
|
115
|
+
// component's defaultProps — never user input.
|
|
116
|
+
_jsx("div", { style: innerStyle, dangerouslySetInnerHTML: { __html: cached } })) : (_jsx("div", { style: innerStyle, ref: innerRef, children: _jsx(Render, { config: isolatedConfig, data: data }) })) }));
|
|
117
|
+
}
|
|
118
|
+
/** Memoized so re-expanding a category doesn't re-render existing previews. */
|
|
119
|
+
export const LiveThumbnail = React.memo(LiveThumbnailImpl);
|
|
120
|
+
//# sourceMappingURL=LiveThumbnail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveThumbnail.js","sourceRoot":"","sources":["../../../src/editor/thumbnails/LiveThumbnail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThumbnailCard
|
|
3
|
+
*
|
|
4
|
+
* One card in the visual component sidebar grid: a live preview above a
|
|
5
|
+
* centered, human-readable name.
|
|
6
|
+
*
|
|
7
|
+
* To keep opening a category feeling instant, the expensive live <Render> is
|
|
8
|
+
* NOT mounted on the first commit unless a preview is already cached.
|
|
9
|
+
* Otherwise, a lightweight skeleton paints immediately and the real preview
|
|
10
|
+
* is scheduled on idle time, then swapped in. The preview is wrapped in an
|
|
11
|
+
* error boundary so a single misbehaving component degrades to a placeholder
|
|
12
|
+
* rather than taking down the drawer.
|
|
13
|
+
*
|
|
14
|
+
* Seeding `ready` from the cache matters beyond the first paint: Puck's own
|
|
15
|
+
* <Drawer>/<Drawer.Item> primitives remount on unrelated editor state changes
|
|
16
|
+
* (e.g. typing in any field), which remounts every ThumbnailCard too. Without
|
|
17
|
+
* the cache check, `ready` would reset to false on every one of those
|
|
18
|
+
* remounts, flashing the skeleton back in even for previews already rendered.
|
|
19
|
+
*/
|
|
20
|
+
import React from 'react';
|
|
21
|
+
type RenderConfig = any;
|
|
22
|
+
/** Default preview-card height in pixels, shared across LiveThumbnail, ThumbnailCard, and the drawer. */
|
|
23
|
+
export declare const DEFAULT_THUMBNAIL_HEIGHT = 96;
|
|
24
|
+
export interface ThumbnailCardProps {
|
|
25
|
+
config: RenderConfig;
|
|
26
|
+
name: string;
|
|
27
|
+
/** Preferred display name; falls back to a humanized component key. */
|
|
28
|
+
label?: string;
|
|
29
|
+
scale?: number;
|
|
30
|
+
/** Fixed height of the preview area, in pixels. */
|
|
31
|
+
height?: number;
|
|
32
|
+
}
|
|
33
|
+
declare function ThumbnailCardImpl({ config, name, label, scale, height }: ThumbnailCardProps): React.JSX.Element;
|
|
34
|
+
/** Memoized so a category re-expand keeps already-rendered cards mounted. */
|
|
35
|
+
export declare const ThumbnailCard: React.MemoExoticComponent<typeof ThumbnailCardImpl>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=ThumbnailCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailCard.d.ts","sourceRoot":"","sources":["../../../src/editor/thumbnails/ThumbnailCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,KAAK,YAAY,GAAG,GAAG,CAAC;AAExB,yGAAyG;AACzG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAwED,iBAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAiC,EAAE,EAAE,kBAAkB,qBA+B/G;AAED,6EAA6E;AAC7E,eAAO,MAAM,aAAa,qDAAgC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* ThumbnailCard
|
|
4
|
+
*
|
|
5
|
+
* One card in the visual component sidebar grid: a live preview above a
|
|
6
|
+
* centered, human-readable name.
|
|
7
|
+
*
|
|
8
|
+
* To keep opening a category feeling instant, the expensive live <Render> is
|
|
9
|
+
* NOT mounted on the first commit unless a preview is already cached.
|
|
10
|
+
* Otherwise, a lightweight skeleton paints immediately and the real preview
|
|
11
|
+
* is scheduled on idle time, then swapped in. The preview is wrapped in an
|
|
12
|
+
* error boundary so a single misbehaving component degrades to a placeholder
|
|
13
|
+
* rather than taking down the drawer.
|
|
14
|
+
*
|
|
15
|
+
* Seeding `ready` from the cache matters beyond the first paint: Puck's own
|
|
16
|
+
* <Drawer>/<Drawer.Item> primitives remount on unrelated editor state changes
|
|
17
|
+
* (e.g. typing in any field), which remounts every ThumbnailCard too. Without
|
|
18
|
+
* the cache check, `ready` would reset to false on every one of those
|
|
19
|
+
* remounts, flashing the skeleton back in even for previews already rendered.
|
|
20
|
+
*/
|
|
21
|
+
import React from 'react';
|
|
22
|
+
import { LiveThumbnail } from './LiveThumbnail.js';
|
|
23
|
+
import { humanizeComponentName } from './humanizeComponentName.js';
|
|
24
|
+
import { getCachedThumbnail, getThumbnailCacheKey } from './thumbnailCache.js';
|
|
25
|
+
/** Default preview-card height in pixels, shared across LiveThumbnail, ThumbnailCard, and the drawer. */
|
|
26
|
+
export const DEFAULT_THUMBNAIL_HEIGHT = 96;
|
|
27
|
+
// ─── Idle scheduling (with a jsdom/SSR-safe fallback) ───────────────────────
|
|
28
|
+
function scheduleIdle(cb) {
|
|
29
|
+
const ric = globalThis.requestIdleCallback;
|
|
30
|
+
if (ric)
|
|
31
|
+
return ric(cb);
|
|
32
|
+
return setTimeout(cb, 1);
|
|
33
|
+
}
|
|
34
|
+
function cancelIdle(id) {
|
|
35
|
+
const cic = globalThis.cancelIdleCallback;
|
|
36
|
+
if (cic)
|
|
37
|
+
cic(id);
|
|
38
|
+
else
|
|
39
|
+
clearTimeout(id);
|
|
40
|
+
}
|
|
41
|
+
// ─── Error boundary ─────────────────────────────────────────────────────────
|
|
42
|
+
class PreviewErrorBoundary extends React.Component {
|
|
43
|
+
state = { hasError: false };
|
|
44
|
+
static getDerivedStateFromError() {
|
|
45
|
+
return { hasError: true };
|
|
46
|
+
}
|
|
47
|
+
render() {
|
|
48
|
+
return this.state.hasError ? this.props.fallback : this.props.children;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// ─── Pieces ─────────────────────────────────────────────────────────────────
|
|
52
|
+
function Skeleton({ height }) {
|
|
53
|
+
return (_jsx("div", { role: "status", "aria-label": "Loading preview", style: {
|
|
54
|
+
height,
|
|
55
|
+
background: 'linear-gradient(90deg, #f1f3f5 25%, #e9ecef 37%, #f1f3f5 63%)',
|
|
56
|
+
backgroundSize: '400% 100%',
|
|
57
|
+
animation: 'p1-thumb-shimmer 1.2s ease-in-out infinite',
|
|
58
|
+
} }));
|
|
59
|
+
}
|
|
60
|
+
function PreviewUnavailable({ height }) {
|
|
61
|
+
return (_jsx("div", { role: "img", "aria-label": "Preview unavailable", style: {
|
|
62
|
+
height,
|
|
63
|
+
display: 'grid',
|
|
64
|
+
placeItems: 'center',
|
|
65
|
+
background: '#f8f9fa',
|
|
66
|
+
color: '#adb5bd',
|
|
67
|
+
fontSize: 11,
|
|
68
|
+
}, children: "No preview" }));
|
|
69
|
+
}
|
|
70
|
+
// ─── Card ─────────────────────────────────────────────────────────────────────
|
|
71
|
+
function ThumbnailCardImpl({ config, name, label, scale, height = DEFAULT_THUMBNAIL_HEIGHT }) {
|
|
72
|
+
const [ready, setReady] = React.useState(() => getCachedThumbnail(getThumbnailCacheKey(config, name)) !== undefined);
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
if (ready)
|
|
75
|
+
return;
|
|
76
|
+
let cancelled = false;
|
|
77
|
+
const id = scheduleIdle(() => {
|
|
78
|
+
if (!cancelled)
|
|
79
|
+
setReady(true);
|
|
80
|
+
});
|
|
81
|
+
return () => {
|
|
82
|
+
cancelled = true;
|
|
83
|
+
cancelIdle(id);
|
|
84
|
+
};
|
|
85
|
+
}, [ready]);
|
|
86
|
+
const displayName = label ?? humanizeComponentName(name);
|
|
87
|
+
return (_jsxs("div", { className: "p1-thumb-card", children: [ready ? (_jsx(PreviewErrorBoundary, { fallback: _jsx(PreviewUnavailable, { height: height }), children: _jsx(LiveThumbnail, { config: config, name: name, scale: scale, height: height }) })) : (_jsx(Skeleton, { height: height })), _jsx("div", { className: "p1-thumb-card__label", title: displayName, children: displayName })] }));
|
|
88
|
+
}
|
|
89
|
+
/** Memoized so a category re-expand keeps already-rendered cards mounted. */
|
|
90
|
+
export const ThumbnailCard = React.memo(ThumbnailCardImpl);
|
|
91
|
+
//# sourceMappingURL=ThumbnailCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThumbnailCard.js","sourceRoot":"","sources":["../../../src/editor/thumbnails/ThumbnailCard.tsx"],"names":[],"mappings":"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"}
|