@delmaredigital/payload-puck 0.6.12 → 0.6.13
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 +50 -1
- package/dist/admin/EditWithPuckButton.d.ts +1 -1
- package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
- package/dist/admin/EditWithPuckButton.js +65 -25
- package/dist/admin/EditWithPuckButton.js.map +1 -1
- package/dist/admin/EditWithPuckCell.js +43 -13
- package/dist/admin/EditWithPuckCell.js.map +1 -1
- package/dist/admin/PuckEditorView.d.ts +1 -1
- package/dist/admin/PuckEditorView.d.ts.map +1 -1
- package/dist/admin/PuckEditorView.js +118 -32
- package/dist/admin/PuckEditorView.js.map +1 -1
- package/dist/admin/client.d.ts +2 -2
- package/dist/admin/client.d.ts.map +1 -1
- package/dist/admin/client.js +4 -4
- package/dist/admin/client.js.map +1 -1
- package/dist/admin/generateAdminComponents.js +7 -7
- package/dist/admin/generateAdminComponents.js.map +1 -1
- package/dist/admin/index.d.ts +5 -5
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +3 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/ai/collections/AiContext.js +56 -29
- package/dist/ai/collections/AiContext.js.map +1 -1
- package/dist/ai/collections/AiPrompts.js +24 -19
- package/dist/ai/collections/AiPrompts.js.map +1 -1
- package/dist/ai/createAiApiRoutes.js +28 -19
- package/dist/ai/createAiApiRoutes.js.map +1 -1
- package/dist/ai/createAiGenerate.js +7 -8
- package/dist/ai/createAiGenerate.js.map +1 -1
- package/dist/ai/createAiPlugin.js +7 -9
- package/dist/ai/createAiPlugin.js.map +1 -1
- package/dist/ai/hooks/useAiContext.js +50 -39
- package/dist/ai/hooks/useAiContext.js.map +1 -1
- package/dist/ai/hooks/useAiPrompts.js +33 -25
- package/dist/ai/hooks/useAiPrompts.js.map +1 -1
- package/dist/ai/index.js +9 -10
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/ContextEditorPanel.js +399 -107
- package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
- package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
- package/dist/ai/plugins/PromptEditorPanel.js +237 -51
- package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
- package/dist/ai/plugins/contextEditorPlugin.js +12 -5
- package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
- package/dist/ai/plugins/promptApiRoutes.js +119 -50
- package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
- package/dist/ai/plugins/promptEditorPlugin.js +12 -5
- package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
- package/dist/ai/presets/componentAiDefaults.js +108 -83
- package/dist/ai/presets/componentAiDefaults.js.map +1 -1
- package/dist/ai/presets/index.js +12 -18
- package/dist/ai/presets/index.js.map +1 -1
- package/dist/ai/presets/instructions/interactive.js +85 -75
- package/dist/ai/presets/instructions/interactive.js.map +1 -1
- package/dist/ai/presets/instructions/layout.js +122 -117
- package/dist/ai/presets/instructions/layout.js.map +1 -1
- package/dist/ai/presets/instructions/media.js +31 -29
- package/dist/ai/presets/instructions/media.js.map +1 -1
- package/dist/ai/presets/instructions/pagePatterns.js +4 -6
- package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
- package/dist/ai/presets/instructions/schemas.js +495 -137
- package/dist/ai/presets/instructions/schemas.js.map +1 -1
- package/dist/ai/presets/instructions/typography.js +38 -33
- package/dist/ai/presets/instructions/typography.js.map +1 -1
- package/dist/ai/tools/index.js +92 -55
- package/dist/ai/tools/index.js.map +1 -1
- package/dist/ai/types.js +7 -1
- package/dist/ai/types.js.map +1 -1
- package/dist/ai/utils/injectAiConfig.js +33 -40
- package/dist/ai/utils/injectAiConfig.js.map +1 -1
- package/dist/api/createPuckApiRoutes.d.ts +1 -1
- package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutes.js +123 -65
- package/dist/api/createPuckApiRoutes.js.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
- package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesVersions.js +88 -37
- package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
- package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
- package/dist/api/createPuckApiRoutesWithId.js +166 -72
- package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -6
- package/dist/api/index.js.map +1 -1
- package/dist/api/payload-config.d.js +15 -0
- package/dist/api/payload-config.d.js.map +1 -0
- package/dist/api/types.js +4 -1
- package/dist/api/types.js.map +1 -1
- package/dist/api/utils/mapRootProps.d.ts +1 -1
- package/dist/api/utils/mapRootProps.d.ts.map +1 -1
- package/dist/api/utils/mapRootProps.js +77 -44
- package/dist/api/utils/mapRootProps.js.map +1 -1
- package/dist/collections/Templates.js +24 -20
- package/dist/collections/Templates.js.map +1 -1
- package/dist/components/AccordionClient.d.ts +2 -2
- package/dist/components/AccordionClient.d.ts.map +1 -1
- package/dist/components/AccordionClient.js +81 -22
- package/dist/components/AccordionClient.js.map +1 -1
- package/dist/components/AnimatedWrapper.d.ts +2 -2
- package/dist/components/AnimatedWrapper.d.ts.map +1 -1
- package/dist/components/AnimatedWrapper.js +31 -16
- package/dist/components/AnimatedWrapper.js.map +1 -1
- package/dist/components/exports.js +2 -2
- package/dist/components/exports.js.map +1 -1
- package/dist/components/index.d.ts +5 -5
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +7 -7
- package/dist/components/index.js.map +1 -1
- package/dist/components/interactive/Accordion.d.ts +1 -1
- package/dist/components/interactive/Accordion.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.js +149 -55
- package/dist/components/interactive/Accordion.js.map +1 -1
- package/dist/components/interactive/Accordion.server.d.ts +1 -1
- package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
- package/dist/components/interactive/Accordion.server.js +25 -7
- package/dist/components/interactive/Accordion.server.js.map +1 -1
- package/dist/components/interactive/Button.d.ts +3 -3
- package/dist/components/interactive/Button.d.ts.map +1 -1
- package/dist/components/interactive/Button.js +89 -43
- package/dist/components/interactive/Button.js.map +1 -1
- package/dist/components/interactive/Button.server.d.ts +2 -2
- package/dist/components/interactive/Button.server.d.ts.map +1 -1
- package/dist/components/interactive/Button.server.js +40 -20
- package/dist/components/interactive/Button.server.js.map +1 -1
- package/dist/components/interactive/Card.d.ts +3 -3
- package/dist/components/interactive/Card.d.ts.map +1 -1
- package/dist/components/interactive/Card.js +131 -39
- package/dist/components/interactive/Card.js.map +1 -1
- package/dist/components/interactive/Card.server.d.ts +3 -3
- package/dist/components/interactive/Card.server.d.ts.map +1 -1
- package/dist/components/interactive/Card.server.js +72 -11
- package/dist/components/interactive/Card.server.js.map +1 -1
- package/dist/components/interactive/Divider.d.ts +1 -1
- package/dist/components/interactive/Divider.d.ts.map +1 -1
- package/dist/components/interactive/Divider.js +54 -26
- package/dist/components/interactive/Divider.js.map +1 -1
- package/dist/components/interactive/Divider.server.d.ts +1 -1
- package/dist/components/interactive/Divider.server.d.ts.map +1 -1
- package/dist/components/interactive/Divider.server.js +28 -12
- package/dist/components/interactive/Divider.server.js.map +1 -1
- package/dist/components/interactive/index.d.ts +4 -4
- package/dist/components/interactive/index.d.ts.map +1 -1
- package/dist/components/interactive/index.js +5 -5
- package/dist/components/interactive/index.js.map +1 -1
- package/dist/components/layout/Container.d.ts +1 -1
- package/dist/components/layout/Container.d.ts.map +1 -1
- package/dist/components/layout/Container.js +101 -47
- package/dist/components/layout/Container.js.map +1 -1
- package/dist/components/layout/Container.server.d.ts +1 -1
- package/dist/components/layout/Container.server.d.ts.map +1 -1
- package/dist/components/layout/Container.server.js +67 -19
- package/dist/components/layout/Container.server.js.map +1 -1
- package/dist/components/layout/Flex.d.ts +2 -2
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Flex.js +124 -55
- package/dist/components/layout/Flex.js.map +1 -1
- package/dist/components/layout/Flex.server.d.ts +1 -1
- package/dist/components/layout/Flex.server.d.ts.map +1 -1
- package/dist/components/layout/Flex.server.js +50 -14
- package/dist/components/layout/Flex.server.js.map +1 -1
- package/dist/components/layout/Grid.d.ts +1 -1
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/Grid.js +93 -44
- package/dist/components/layout/Grid.js.map +1 -1
- package/dist/components/layout/Grid.server.d.ts +1 -1
- package/dist/components/layout/Grid.server.d.ts.map +1 -1
- package/dist/components/layout/Grid.server.js +56 -14
- package/dist/components/layout/Grid.server.js.map +1 -1
- package/dist/components/layout/Section.d.ts +1 -1
- package/dist/components/layout/Section.d.ts.map +1 -1
- package/dist/components/layout/Section.js +147 -64
- package/dist/components/layout/Section.js.map +1 -1
- package/dist/components/layout/Section.server.d.ts +1 -1
- package/dist/components/layout/Section.server.d.ts.map +1 -1
- package/dist/components/layout/Section.server.js +92 -28
- package/dist/components/layout/Section.server.js.map +1 -1
- package/dist/components/layout/Spacer.d.ts +1 -1
- package/dist/components/layout/Spacer.d.ts.map +1 -1
- package/dist/components/layout/Spacer.js +80 -30
- package/dist/components/layout/Spacer.js.map +1 -1
- package/dist/components/layout/Spacer.server.d.ts +1 -1
- package/dist/components/layout/Spacer.server.d.ts.map +1 -1
- package/dist/components/layout/Spacer.server.js +31 -9
- package/dist/components/layout/Spacer.server.js.map +1 -1
- package/dist/components/layout/Template.d.ts +1 -1
- package/dist/components/layout/Template.d.ts.map +1 -1
- package/dist/components/layout/Template.js +58 -30
- package/dist/components/layout/Template.js.map +1 -1
- package/dist/components/layout/Template.server.d.ts +1 -1
- package/dist/components/layout/Template.server.d.ts.map +1 -1
- package/dist/components/layout/Template.server.js +43 -11
- package/dist/components/layout/Template.server.js.map +1 -1
- package/dist/components/layout/index.d.ts +8 -8
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/components/layout/index.js +8 -8
- package/dist/components/layout/index.js.map +1 -1
- package/dist/components/media/Image.d.ts +3 -3
- package/dist/components/media/Image.d.ts.map +1 -1
- package/dist/components/media/Image.js +122 -39
- package/dist/components/media/Image.js.map +1 -1
- package/dist/components/media/Image.server.d.ts +3 -3
- package/dist/components/media/Image.server.d.ts.map +1 -1
- package/dist/components/media/Image.server.js +76 -13
- package/dist/components/media/Image.server.js.map +1 -1
- package/dist/components/media/index.d.ts +1 -1
- package/dist/components/media/index.d.ts.map +1 -1
- package/dist/components/media/index.js +2 -2
- package/dist/components/media/index.js.map +1 -1
- package/dist/components/typography/Heading.d.ts +2 -2
- package/dist/components/typography/Heading.d.ts.map +1 -1
- package/dist/components/typography/Heading.js +45 -25
- package/dist/components/typography/Heading.js.map +1 -1
- package/dist/components/typography/Heading.server.d.ts +2 -2
- package/dist/components/typography/Heading.server.d.ts.map +1 -1
- package/dist/components/typography/Heading.server.js +16 -10
- package/dist/components/typography/Heading.server.js.map +1 -1
- package/dist/components/typography/RichText.editor.d.ts +1 -1
- package/dist/components/typography/RichText.editor.d.ts.map +1 -1
- package/dist/components/typography/RichText.editor.js +44 -19
- package/dist/components/typography/RichText.editor.js.map +1 -1
- package/dist/components/typography/RichText.server.d.ts +2 -2
- package/dist/components/typography/RichText.server.d.ts.map +1 -1
- package/dist/components/typography/RichText.server.js +33 -14
- package/dist/components/typography/RichText.server.js.map +1 -1
- package/dist/components/typography/Text.d.ts +2 -2
- package/dist/components/typography/Text.d.ts.map +1 -1
- package/dist/components/typography/Text.js +49 -23
- package/dist/components/typography/Text.js.map +1 -1
- package/dist/components/typography/Text.server.d.ts +2 -2
- package/dist/components/typography/Text.server.d.ts.map +1 -1
- package/dist/components/typography/Text.server.js +21 -8
- package/dist/components/typography/Text.server.js.map +1 -1
- package/dist/components/typography/index.d.ts +4 -4
- package/dist/components/typography/index.d.ts.map +1 -1
- package/dist/components/typography/index.js +5 -5
- package/dist/components/typography/index.js.map +1 -1
- package/dist/config/config.editor.d.ts +3 -3
- package/dist/config/config.editor.d.ts.map +1 -1
- package/dist/config/config.editor.js +119 -54
- package/dist/config/config.editor.js.map +1 -1
- package/dist/config/index.d.ts +4 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +62 -35
- package/dist/config/index.js.map +1 -1
- package/dist/config/merge.d.ts +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +23 -26
- package/dist/config/merge.js.map +1 -1
- package/dist/config/presets.d.ts +4 -4
- package/dist/config/presets.js +195 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/types.js +6 -2
- package/dist/config/types.js.map +1 -1
- package/dist/editor/PuckEditor.d.ts +4 -4
- package/dist/editor/PuckEditor.d.ts.map +1 -1
- package/dist/editor/PuckEditor.js +162 -70
- package/dist/editor/PuckEditor.js.map +1 -1
- package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
- package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
- package/dist/editor/PuckEditorImpl.client.js +304 -152
- package/dist/editor/PuckEditorImpl.client.js.map +1 -1
- package/dist/editor/components/DarkModeStyles.js +11 -12
- package/dist/editor/components/DarkModeStyles.js.map +1 -1
- package/dist/editor/components/HeaderActions.js +308 -64
- package/dist/editor/components/HeaderActions.js.map +1 -1
- package/dist/editor/components/IframeWrapper.d.ts +1 -1
- package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
- package/dist/editor/components/IframeWrapper.js +82 -58
- package/dist/editor/components/IframeWrapper.js.map +1 -1
- package/dist/editor/components/LoadingState.d.ts +1 -1
- package/dist/editor/components/LoadingState.d.ts.map +1 -1
- package/dist/editor/components/LoadingState.js +17 -3
- package/dist/editor/components/LoadingState.js.map +1 -1
- package/dist/editor/components/PreviewModal.js +234 -78
- package/dist/editor/components/PreviewModal.js.map +1 -1
- package/dist/editor/components/PreviewModeToggle.js +43 -15
- package/dist/editor/components/PreviewModeToggle.js.map +1 -1
- package/dist/editor/components/VersionHistory.js +219 -71
- package/dist/editor/components/VersionHistory.js.map +1 -1
- package/dist/editor/hooks/useDarkMode.js +36 -23
- package/dist/editor/hooks/useDarkMode.js.map +1 -1
- package/dist/editor/hooks/useUnsavedChanges.js +8 -8
- package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
- package/dist/editor/index.js +5 -6
- package/dist/editor/index.js.map +1 -1
- package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
- package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
- package/dist/editor/plugins/index.js +4 -4
- package/dist/editor/plugins/index.js.map +1 -1
- package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
- package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
- package/dist/editor/utils/detectPageTree.js +5 -5
- package/dist/editor/utils/detectPageTree.js.map +1 -1
- package/dist/editor/utils/index.js +1 -0
- package/dist/editor/utils/index.js.map +1 -1
- package/dist/editor/utils/injectPageTreeFields.js +13 -9
- package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
- package/dist/endpoints/ai.js +58 -34
- package/dist/endpoints/ai.js.map +1 -1
- package/dist/endpoints/context.js +86 -40
- package/dist/endpoints/context.js.map +1 -1
- package/dist/endpoints/index.js +153 -76
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/postcss.d.js +5 -0
- package/dist/endpoints/postcss.d.js.map +1 -0
- package/dist/endpoints/prompts.js +81 -39
- package/dist/endpoints/prompts.js.map +1 -1
- package/dist/endpoints/styles.js +34 -36
- package/dist/endpoints/styles.js.map +1 -1
- package/dist/exports/client.js +2 -2
- package/dist/exports/client.js.map +1 -1
- package/dist/exports/rsc.js +2 -2
- package/dist/exports/rsc.js.map +1 -1
- package/dist/fields/AlignmentField.d.ts +1 -1
- package/dist/fields/AlignmentField.d.ts.map +1 -1
- package/dist/fields/AlignmentField.js +93 -30
- package/dist/fields/AlignmentField.js.map +1 -1
- package/dist/fields/AnimationField.d.ts +2 -2
- package/dist/fields/AnimationField.d.ts.map +1 -1
- package/dist/fields/AnimationField.js +558 -84
- package/dist/fields/AnimationField.js.map +1 -1
- package/dist/fields/BackgroundField.d.ts +2 -2
- package/dist/fields/BackgroundField.d.ts.map +1 -1
- package/dist/fields/BackgroundField.js +754 -120
- package/dist/fields/BackgroundField.js.map +1 -1
- package/dist/fields/BorderField.d.ts +2 -2
- package/dist/fields/BorderField.d.ts.map +1 -1
- package/dist/fields/BorderField.js +275 -73
- package/dist/fields/BorderField.js.map +1 -1
- package/dist/fields/ColorPickerField.d.ts +2 -2
- package/dist/fields/ColorPickerField.d.ts.map +1 -1
- package/dist/fields/ColorPickerField.js +210 -68
- package/dist/fields/ColorPickerField.js.map +1 -1
- package/dist/fields/ContentAlignmentField.d.ts +1 -1
- package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
- package/dist/fields/ContentAlignmentField.js +161 -75
- package/dist/fields/ContentAlignmentField.js.map +1 -1
- package/dist/fields/DimensionsField.d.ts +2 -2
- package/dist/fields/DimensionsField.d.ts.map +1 -1
- package/dist/fields/DimensionsField.js +575 -146
- package/dist/fields/DimensionsField.js.map +1 -1
- package/dist/fields/FlexAlignmentField.d.ts +2 -2
- package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
- package/dist/fields/FlexAlignmentField.js +189 -51
- package/dist/fields/FlexAlignmentField.js.map +1 -1
- package/dist/fields/FolderPickerField.d.ts +8 -1
- package/dist/fields/FolderPickerField.d.ts.map +1 -1
- package/dist/fields/FolderPickerField.js +288 -75
- package/dist/fields/FolderPickerField.js.map +1 -1
- package/dist/fields/GradientEditor.d.ts +2 -2
- package/dist/fields/GradientEditor.d.ts.map +1 -1
- package/dist/fields/GradientEditor.js +462 -86
- package/dist/fields/GradientEditor.js.map +1 -1
- package/dist/fields/LockedField.d.ts +15 -2
- package/dist/fields/LockedField.d.ts.map +1 -1
- package/dist/fields/LockedField.js +180 -49
- package/dist/fields/LockedField.js.map +1 -1
- package/dist/fields/MarginField.d.ts +2 -2
- package/dist/fields/MarginField.d.ts.map +1 -1
- package/dist/fields/MarginField.js +144 -46
- package/dist/fields/MarginField.js.map +1 -1
- package/dist/fields/MediaField.d.ts +1 -1
- package/dist/fields/MediaField.d.ts.map +1 -1
- package/dist/fields/MediaField.js +688 -186
- package/dist/fields/MediaField.js.map +1 -1
- package/dist/fields/PaddingField.d.ts +2 -2
- package/dist/fields/PaddingField.d.ts.map +1 -1
- package/dist/fields/PaddingField.js +144 -46
- package/dist/fields/PaddingField.js.map +1 -1
- package/dist/fields/PageSegmentField.d.ts +15 -2
- package/dist/fields/PageSegmentField.d.ts.map +1 -1
- package/dist/fields/PageSegmentField.js +156 -54
- package/dist/fields/PageSegmentField.js.map +1 -1
- package/dist/fields/ResetField.d.ts +1 -1
- package/dist/fields/ResetField.d.ts.map +1 -1
- package/dist/fields/ResetField.js +59 -31
- package/dist/fields/ResetField.js.map +1 -1
- package/dist/fields/ResponsiveField.d.ts +1 -1
- package/dist/fields/ResponsiveField.d.ts.map +1 -1
- package/dist/fields/ResponsiveField.js +233 -90
- package/dist/fields/ResponsiveField.js.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
- package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
- package/dist/fields/ResponsiveVisibilityField.js +119 -36
- package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
- package/dist/fields/SizeField.d.ts +3 -3
- package/dist/fields/SizeField.d.ts.map +1 -1
- package/dist/fields/SizeField.js +226 -52
- package/dist/fields/SizeField.js.map +1 -1
- package/dist/fields/SlugPreviewField.d.ts +8 -1
- package/dist/fields/SlugPreviewField.d.ts.map +1 -1
- package/dist/fields/SlugPreviewField.js +65 -16
- package/dist/fields/SlugPreviewField.js.map +1 -1
- package/dist/fields/TemplateField.d.ts +1 -1
- package/dist/fields/TemplateField.d.ts.map +1 -1
- package/dist/fields/TemplateField.js +362 -120
- package/dist/fields/TemplateField.js.map +1 -1
- package/dist/fields/TransformField.d.ts +2 -2
- package/dist/fields/TransformField.d.ts.map +1 -1
- package/dist/fields/TransformField.js +517 -81
- package/dist/fields/TransformField.js.map +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts +1 -1
- package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
- package/dist/fields/VerticalAlignmentField.js +93 -30
- package/dist/fields/VerticalAlignmentField.js.map +1 -1
- package/dist/fields/WidthField.d.ts +2 -2
- package/dist/fields/WidthField.d.ts.map +1 -1
- package/dist/fields/WidthField.js +278 -81
- package/dist/fields/WidthField.js.map +1 -1
- package/dist/fields/index.d.ts +41 -41
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js +37 -43
- package/dist/fields/index.js.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
- package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
- package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
- package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
- package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
- package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
- package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
- package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
- package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
- package/dist/fields/richtext/controls/HighlightControl.js +54 -17
- package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
- package/dist/fields/richtext/controls/index.d.ts +5 -5
- package/dist/fields/richtext/controls/index.d.ts.map +1 -1
- package/dist/fields/richtext/controls/index.js +8 -11
- package/dist/fields/richtext/controls/index.js.map +1 -1
- package/dist/fields/richtext/controls/shared.js +108 -63
- package/dist/fields/richtext/controls/shared.js.map +1 -1
- package/dist/fields/richtext/createRichTextField.d.ts +18 -4
- package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
- package/dist/fields/richtext/createRichTextField.js +113 -26
- package/dist/fields/richtext/createRichTextField.js.map +1 -1
- package/dist/fields/richtext/extensions/FontSize.js +26 -20
- package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
- package/dist/fields/richtext/extensions/index.d.ts +1 -1
- package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
- package/dist/fields/richtext/extensions/index.js +2 -2
- package/dist/fields/richtext/extensions/index.js.map +1 -1
- package/dist/fields/richtext/index.d.ts +6 -6
- package/dist/fields/richtext/index.d.ts.map +1 -1
- package/dist/fields/richtext/index.js +8 -8
- package/dist/fields/richtext/index.js.map +1 -1
- package/dist/fields/shared.d.ts +1 -1
- package/dist/fields/shared.d.ts.map +1 -1
- package/dist/fields/shared.js +915 -478
- package/dist/fields/shared.js.map +1 -1
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts +1 -1
- package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
- package/dist/hooks/useResponsiveStyles.js +36 -32
- package/dist/hooks/useResponsiveStyles.js.map +1 -1
- package/dist/hooks/useScrollAnimation.js +26 -24
- package/dist/hooks/useScrollAnimation.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/layouts/LayoutWrapper.d.ts +3 -3
- package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
- package/dist/layouts/LayoutWrapper.js +115 -51
- package/dist/layouts/LayoutWrapper.js.map +1 -1
- package/dist/layouts/defaults.d.ts +1 -1
- package/dist/layouts/defaults.d.ts.map +1 -1
- package/dist/layouts/defaults.js +23 -31
- package/dist/layouts/defaults.js.map +1 -1
- package/dist/layouts/index.d.ts +4 -4
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +5 -4
- package/dist/layouts/index.js.map +1 -1
- package/dist/layouts/types.js +4 -2
- package/dist/layouts/types.js.map +1 -1
- package/dist/layouts/utils.d.ts +1 -1
- package/dist/layouts/utils.d.ts.map +1 -1
- package/dist/layouts/utils.js +32 -40
- package/dist/layouts/utils.js.map +1 -1
- package/dist/next/index.js +31 -34
- package/dist/next/index.js.map +1 -1
- package/dist/plugin/collections/Pages.d.ts +2 -2
- package/dist/plugin/collections/Pages.d.ts.map +1 -1
- package/dist/plugin/collections/Pages.js +46 -43
- package/dist/plugin/collections/Pages.js.map +1 -1
- package/dist/plugin/fields/index.d.ts +3 -3
- package/dist/plugin/fields/index.d.ts.map +1 -1
- package/dist/plugin/fields/index.js +100 -78
- package/dist/plugin/fields/index.js.map +1 -1
- package/dist/plugin/fields/types.d.ts +1 -1
- package/dist/plugin/fields/types.d.ts.map +1 -1
- package/dist/plugin/fields/types.js +26 -2
- package/dist/plugin/fields/types.js.map +1 -1
- package/dist/plugin/hooks/index.d.ts +1 -1
- package/dist/plugin/hooks/index.d.ts.map +1 -1
- package/dist/plugin/hooks/index.js +2 -2
- package/dist/plugin/hooks/index.js.map +1 -1
- package/dist/plugin/hooks/isHomepageUnique.js +28 -19
- package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
- package/dist/plugin/index.d.ts +8 -8
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +190 -188
- package/dist/plugin/index.js.map +1 -1
- package/dist/render/HybridPageRenderer.d.ts +2 -2
- package/dist/render/HybridPageRenderer.d.ts.map +1 -1
- package/dist/render/HybridPageRenderer.js +58 -10
- package/dist/render/HybridPageRenderer.js.map +1 -1
- package/dist/render/PageRenderer.d.ts +2 -2
- package/dist/render/PageRenderer.d.ts.map +1 -1
- package/dist/render/PageRenderer.js +31 -14
- package/dist/render/PageRenderer.js.map +1 -1
- package/dist/render/PuckEditor.client.d.ts +1 -1
- package/dist/render/PuckEditor.client.d.ts.map +1 -1
- package/dist/render/PuckEditor.client.js +33 -16
- package/dist/render/PuckEditor.client.js.map +1 -1
- package/dist/render/index.d.ts +5 -5
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +5 -6
- package/dist/render/index.js.map +1 -1
- package/dist/styles/puck-dark-mode.css +101 -0
- package/dist/theme/context.d.ts +2 -2
- package/dist/theme/context.d.ts.map +1 -1
- package/dist/theme/context.js +21 -18
- package/dist/theme/context.js.map +1 -1
- package/dist/theme/defaults.d.ts +1 -1
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/defaults.js +83 -37
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/example.d.ts +1 -1
- package/dist/theme/example.d.ts.map +1 -1
- package/dist/theme/example.js +68 -30
- package/dist/theme/example.js.map +1 -1
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +6 -5
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/types.js +6 -2
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/utils.d.ts +1 -1
- package/dist/theme/utils.d.ts.map +1 -1
- package/dist/theme/utils.js +24 -25
- package/dist/theme/utils.js.map +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -22
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/migration.d.ts +1 -1
- package/dist/utils/migration.d.ts.map +1 -1
- package/dist/utils/migration.js +43 -49
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +36 -43
- package/dist/utils/validation.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +2 -1
- package/dist/version.js.map +1 -1
- package/dist/views/PuckConfigContext.d.ts +1 -1
- package/dist/views/PuckConfigContext.d.ts.map +1 -1
- package/dist/views/PuckConfigContext.js +25 -10
- package/dist/views/PuckConfigContext.js.map +1 -1
- package/dist/views/PuckEditorView.d.ts +1 -1
- package/dist/views/PuckEditorView.d.ts.map +1 -1
- package/dist/views/PuckEditorView.js +106 -38
- package/dist/views/PuckEditorView.js.map +1 -1
- package/dist/views/index.js +2 -2
- package/dist/views/index.js.map +1 -1
- package/package.json +62 -42
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VersionHistory.js","sourceRoot":"","sources":["../../../src/editor/components/VersionHistory.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/components/VersionHistory.tsx"],"sourcesContent":["'use client'\n\nimport { useState, useCallback, useEffect, useRef, memo, type CSSProperties } from 'react'\nimport {\n History,\n Loader2,\n Check,\n RotateCcw,\n X,\n ChevronDown,\n} from 'lucide-react'\n\n/**\n * Version entry from Payload's versions system\n */\nexport interface PageVersion {\n id: string\n parent: string\n version: {\n title?: string\n slug?: string\n _status?: 'draft' | 'published'\n updatedAt: string\n createdAt: string\n }\n createdAt: string\n updatedAt: string\n autosave?: boolean\n latest?: boolean\n}\n\nexport interface VersionHistoryProps {\n /**\n * Page ID to fetch versions for\n */\n pageId: string\n /**\n * API endpoint base path\n * @default '/api/puck/pages'\n */\n apiEndpoint?: string\n /**\n * Callback when a version is restored\n */\n onRestore?: (version: PageVersion) => void\n /**\n * Whether restore operations are disabled\n */\n disabled?: boolean\n}\n\n// Shared styles\nconst styles = {\n container: {\n position: 'relative',\n } as CSSProperties,\n button: {\n display: 'inline-flex',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n padding: '6px 12px',\n fontSize: '14px',\n fontWeight: 500,\n borderRadius: '6px',\n transition: 'background-color 0.15s',\n backgroundColor: 'var(--theme-bg)',\n color: 'var(--theme-elevation-700)',\n border: '1px solid var(--theme-elevation-200)',\n cursor: 'pointer',\n } as CSSProperties,\n buttonDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n } as CSSProperties,\n icon: {\n width: '16px',\n height: '16px',\n marginRight: '4px',\n flexShrink: 0,\n } as CSSProperties,\n iconSmall: {\n width: '12px',\n height: '12px',\n marginLeft: '4px',\n flexShrink: 0,\n } as CSSProperties,\n dropdown: {\n position: 'absolute',\n top: '100%',\n right: 0,\n marginTop: '4px',\n backgroundColor: 'var(--theme-bg)',\n border: '1px solid var(--theme-elevation-200)',\n borderRadius: '8px',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n zIndex: 50,\n width: '320px',\n maxHeight: '400px',\n overflow: 'hidden',\n } as CSSProperties,\n header: {\n borderBottom: '1px solid var(--theme-elevation-200)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '12px 16px',\n } as CSSProperties,\n headerTitle: {\n fontWeight: 500,\n fontSize: '14px',\n color: 'var(--theme-elevation-900)',\n } as CSSProperties,\n closeButton: {\n color: 'var(--theme-elevation-400)',\n transition: 'color 0.15s',\n padding: '4px',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n } as CSSProperties,\n content: {\n maxHeight: '340px',\n overflowY: 'auto',\n } as CSSProperties,\n loadingContainer: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '32px',\n } as CSSProperties,\n loadingIcon: {\n width: '20px',\n height: '20px',\n color: 'var(--theme-elevation-400)',\n animation: 'spin 1s linear infinite',\n } as CSSProperties,\n errorText: {\n fontSize: '14px',\n color: 'var(--theme-error-600)',\n padding: '16px',\n textAlign: 'center',\n } as CSSProperties,\n emptyText: {\n fontSize: '14px',\n color: 'var(--theme-elevation-500)',\n padding: '16px',\n textAlign: 'center',\n } as CSSProperties,\n listContainer: {\n padding: '8px',\n } as CSSProperties,\n versionItem: {\n borderRadius: '6px',\n transition: 'background-color 0.15s',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '10px 12px',\n gap: '12px',\n } as CSSProperties,\n versionInfo: {\n flex: 1,\n minWidth: 0,\n } as CSSProperties,\n versionHeader: {\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n } as CSSProperties,\n versionDate: {\n fontSize: '14px',\n fontWeight: 500,\n color: 'var(--theme-elevation-900)',\n } as CSSProperties,\n badgeCurrent: {\n fontSize: '12px',\n fontWeight: 500,\n borderRadius: '9999px',\n padding: '2px 8px',\n backgroundColor: 'var(--theme-elevation-100)',\n color: 'var(--theme-elevation-700)',\n } as CSSProperties,\n badgePublished: {\n fontSize: '12px',\n fontWeight: 500,\n borderRadius: '9999px',\n padding: '2px 8px',\n backgroundColor: 'var(--theme-success-100)',\n color: 'var(--theme-success-700)',\n } as CSSProperties,\n autosaveText: {\n fontSize: '12px',\n color: 'var(--theme-elevation-400)',\n } as CSSProperties,\n versionDetails: {\n fontSize: '12px',\n color: 'var(--theme-elevation-500)',\n marginTop: '2px',\n } as CSSProperties,\n restoreButton: {\n fontSize: '12px',\n fontWeight: 500,\n color: 'var(--theme-elevation-700)',\n transition: 'color 0.15s',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n padding: '4px 8px',\n flexShrink: 0,\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n } as CSSProperties,\n restoreButtonDisabled: {\n opacity: 0.5,\n cursor: 'not-allowed',\n } as CSSProperties,\n checkIcon: {\n width: '16px',\n height: '16px',\n color: 'var(--theme-elevation-400)',\n flexShrink: 0,\n } as CSSProperties,\n}\n\n/**\n * Version history dropdown for the Puck editor\n *\n * Shows a list of previous versions with the ability to restore them.\n */\nexport const VersionHistory = memo(function VersionHistory({\n pageId,\n apiEndpoint = '/api/puck/pages',\n onRestore,\n disabled,\n}: VersionHistoryProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n const [isRestoring, setIsRestoring] = useState(false)\n const [versions, setVersions] = useState<PageVersion[]>([])\n const [error, setError] = useState<string | null>(null)\n const [isAvailable, setIsAvailable] = useState<boolean | null>(null)\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const dropdownRef = useRef<HTMLDivElement>(null)\n\n // Check if versions endpoint is available on mount\n useEffect(() => {\n async function checkAvailability() {\n try {\n const response = await fetch(`${apiEndpoint}/${pageId}/versions?limit=1`, {\n method: 'GET',\n })\n setIsAvailable(response.status !== 404)\n } catch {\n setIsAvailable(false)\n }\n }\n checkAvailability()\n }, [apiEndpoint, pageId])\n\n // Close on outside click\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false)\n }\n }\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }, [])\n\n // Fetch versions when dropdown opens\n const fetchVersions = useCallback(async () => {\n setIsLoading(true)\n setError(null)\n try {\n const response = await fetch(`${apiEndpoint}/${pageId}/versions?limit=20`)\n if (!response.ok) {\n throw new Error('Failed to fetch versions')\n }\n const data = await response.json()\n setVersions(data.docs || [])\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to load versions')\n console.error('Error fetching versions:', err)\n } finally {\n setIsLoading(false)\n }\n }, [apiEndpoint, pageId])\n\n // Fetch versions when opening\n useEffect(() => {\n if (isOpen) {\n fetchVersions()\n }\n }, [isOpen, fetchVersions])\n\n // Handle version restore\n const handleRestore = useCallback(\n async (version: PageVersion) => {\n if (!confirm(`Restore this version from ${formatDate(version.updatedAt)}? This will overwrite current changes.`)) {\n return\n }\n\n setIsRestoring(true)\n try {\n const response = await fetch(`${apiEndpoint}/${pageId}/versions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ versionId: version.id }),\n })\n\n if (!response.ok) {\n throw new Error('Failed to restore version')\n }\n\n onRestore?.(version)\n setIsOpen(false)\n window.location.reload()\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to restore version')\n console.error('Error restoring version:', err)\n } finally {\n setIsRestoring(false)\n }\n },\n [apiEndpoint, pageId, onRestore]\n )\n\n // Format date for display\n function formatDate(dateStr: string): string {\n const date = new Date(dateStr)\n const now = new Date()\n const diffMs = now.getTime() - date.getTime()\n const diffMins = Math.floor(diffMs / 60000)\n const diffHours = Math.floor(diffMs / 3600000)\n const diffDays = Math.floor(diffMs / 86400000)\n\n if (diffMins < 1) return 'Just now'\n if (diffMins < 60) return `${diffMins}m ago`\n if (diffHours < 24) return `${diffHours}h ago`\n if (diffDays < 7) return `${diffDays}d ago`\n return date.toLocaleDateString()\n }\n\n // Format time for display\n function formatTime(dateStr: string): string {\n const date = new Date(dateStr)\n return date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })\n }\n\n // Don't render if versions endpoint is not available or still checking\n if (isAvailable !== true) {\n return null\n }\n\n return (\n <div ref={dropdownRef} style={styles.container}>\n {/* Trigger button */}\n <button\n type=\"button\"\n onClick={() => setIsOpen(!isOpen)}\n disabled={disabled}\n style={{\n ...styles.button,\n ...(disabled ? styles.buttonDisabled : {}),\n }}\n >\n <History style={styles.icon} />\n History\n <ChevronDown style={styles.iconSmall} />\n </button>\n\n {/* Dropdown panel */}\n {isOpen && (\n <div style={styles.dropdown}>\n {/* Header */}\n <div style={styles.header}>\n <span style={styles.headerTitle}>Version History</span>\n <button\n type=\"button\"\n onClick={() => setIsOpen(false)}\n style={styles.closeButton}\n >\n <X style={{ width: '16px', height: '16px' }} />\n </button>\n </div>\n\n {/* Content */}\n <div style={styles.content}>\n {isLoading ? (\n <div style={styles.loadingContainer}>\n <Loader2 style={styles.loadingIcon} />\n </div>\n ) : error ? (\n <div style={styles.errorText as CSSProperties}>\n {error}\n </div>\n ) : versions.length === 0 ? (\n <div style={styles.emptyText as CSSProperties}>\n No version history available\n </div>\n ) : (\n <div style={styles.listContainer}>\n {versions.map((version, index) => (\n <div\n key={version.id}\n style={{\n ...styles.versionItem,\n backgroundColor: hoveredIndex === index ? 'var(--theme-elevation-50)' : 'transparent',\n }}\n onMouseEnter={() => setHoveredIndex(index)}\n onMouseLeave={() => setHoveredIndex(null)}\n >\n {/* Version info */}\n <div style={styles.versionInfo}>\n <div style={styles.versionHeader}>\n <span style={styles.versionDate}>\n {formatDate(version.updatedAt)}\n </span>\n {index === 0 && (\n <span style={styles.badgeCurrent}>\n Current\n </span>\n )}\n {version.version._status === 'published' && (\n <span style={styles.badgePublished}>\n Published\n </span>\n )}\n {version.autosave && (\n <span style={styles.autosaveText} title=\"Autosaved\">\n (auto)\n </span>\n )}\n </div>\n <div style={styles.versionDetails}>\n {formatTime(version.updatedAt)}\n {version.version.title && (\n <span> · {version.version.title}</span>\n )}\n </div>\n </div>\n\n {/* Restore button (not for current version) */}\n {index > 0 && (\n <button\n type=\"button\"\n onClick={() => handleRestore(version)}\n disabled={isRestoring}\n style={{\n ...styles.restoreButton,\n ...(isRestoring ? styles.restoreButtonDisabled : {}),\n }}\n >\n {isRestoring ? (\n <Loader2 style={{ width: '12px', height: '12px', animation: 'spin 1s linear infinite' }} />\n ) : (\n <RotateCcw style={{ width: '12px', height: '12px' }} />\n )}\n Restore\n </button>\n )}\n\n {/* Current indicator */}\n {index === 0 && (\n <span style={{ flexShrink: 0 }}>\n <Check style={styles.checkIcon} />\n </span>\n )}\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n )\n})\n"],"names":["useState","useCallback","useEffect","useRef","memo","History","Loader2","Check","RotateCcw","X","ChevronDown","styles","container","position","button","display","alignItems","whiteSpace","padding","fontSize","fontWeight","borderRadius","transition","backgroundColor","color","border","cursor","buttonDisabled","opacity","icon","width","height","marginRight","flexShrink","iconSmall","marginLeft","dropdown","top","right","marginTop","boxShadow","zIndex","maxHeight","overflow","header","borderBottom","justifyContent","headerTitle","closeButton","background","content","overflowY","loadingContainer","loadingIcon","animation","errorText","textAlign","emptyText","listContainer","versionItem","gap","versionInfo","flex","minWidth","versionHeader","versionDate","badgeCurrent","badgePublished","autosaveText","versionDetails","restoreButton","restoreButtonDisabled","checkIcon","VersionHistory","pageId","apiEndpoint","onRestore","disabled","isOpen","setIsOpen","isLoading","setIsLoading","isRestoring","setIsRestoring","versions","setVersions","error","setError","isAvailable","setIsAvailable","hoveredIndex","setHoveredIndex","dropdownRef","checkAvailability","response","fetch","method","status","handleClickOutside","event","current","contains","target","document","addEventListener","removeEventListener","fetchVersions","ok","Error","data","json","docs","err","message","console","handleRestore","version","confirm","formatDate","updatedAt","headers","body","JSON","stringify","versionId","id","window","location","reload","dateStr","date","Date","now","diffMs","getTime","diffMins","Math","floor","diffHours","diffDays","toLocaleDateString","formatTime","toLocaleTimeString","hour","minute","div","ref","style","type","onClick","span","length","map","index","onMouseEnter","onMouseLeave","_status","autosave","title"],"mappings":"AAAA;;AAEA,SAASA,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,IAAI,QAA4B,QAAO;AAC1F,SACEC,OAAO,EACPC,OAAO,EACPC,KAAK,EACLC,SAAS,EACTC,CAAC,EACDC,WAAW,QACN,eAAc;AAyCrB,gBAAgB;AAChB,MAAMC,SAAS;IACbC,WAAW;QACTC,UAAU;IACZ;IACAC,QAAQ;QACNC,SAAS;QACTC,YAAY;QACZC,YAAY;QACZC,SAAS;QACTC,UAAU;QACVC,YAAY;QACZC,cAAc;QACdC,YAAY;QACZC,iBAAiB;QACjBC,OAAO;QACPC,QAAQ;QACRC,QAAQ;IACV;IACAC,gBAAgB;QACdC,SAAS;QACTF,QAAQ;IACV;IACAG,MAAM;QACJC,OAAO;QACPC,QAAQ;QACRC,aAAa;QACbC,YAAY;IACd;IACAC,WAAW;QACTJ,OAAO;QACPC,QAAQ;QACRI,YAAY;QACZF,YAAY;IACd;IACAG,UAAU;QACRvB,UAAU;QACVwB,KAAK;QACLC,OAAO;QACPC,WAAW;QACXhB,iBAAiB;QACjBE,QAAQ;QACRJ,cAAc;QACdmB,WAAW;QACXC,QAAQ;QACRX,OAAO;QACPY,WAAW;QACXC,UAAU;IACZ;IACAC,QAAQ;QACNC,cAAc;QACd9B,SAAS;QACTC,YAAY;QACZ8B,gBAAgB;QAChB5B,SAAS;IACX;IACA6B,aAAa;QACX3B,YAAY;QACZD,UAAU;QACVK,OAAO;IACT;IACAwB,aAAa;QACXxB,OAAO;QACPF,YAAY;QACZJ,SAAS;QACT+B,YAAY;QACZxB,QAAQ;QACRC,QAAQ;IACV;IACAwB,SAAS;QACPR,WAAW;QACXS,WAAW;IACb;IACAC,kBAAkB;QAChBrC,SAAS;QACTC,YAAY;QACZ8B,gBAAgB;QAChB5B,SAAS;IACX;IACAmC,aAAa;QACXvB,OAAO;QACPC,QAAQ;QACRP,OAAO;QACP8B,WAAW;IACb;IACAC,WAAW;QACTpC,UAAU;QACVK,OAAO;QACPN,SAAS;QACTsC,WAAW;IACb;IACAC,WAAW;QACTtC,UAAU;QACVK,OAAO;QACPN,SAAS;QACTsC,WAAW;IACb;IACAE,eAAe;QACbxC,SAAS;IACX;IACAyC,aAAa;QACXtC,cAAc;QACdC,YAAY;QACZP,SAAS;QACTC,YAAY;QACZ8B,gBAAgB;QAChB5B,SAAS;QACT0C,KAAK;IACP;IACAC,aAAa;QACXC,MAAM;QACNC,UAAU;IACZ;IACAC,eAAe;QACbjD,SAAS;QACTC,YAAY;QACZ4C,KAAK;IACP;IACAK,aAAa;QACX9C,UAAU;QACVC,YAAY;QACZI,OAAO;IACT;IACA0C,cAAc;QACZ/C,UAAU;QACVC,YAAY;QACZC,cAAc;QACdH,SAAS;QACTK,iBAAiB;QACjBC,OAAO;IACT;IACA2C,gBAAgB;QACdhD,UAAU;QACVC,YAAY;QACZC,cAAc;QACdH,SAAS;QACTK,iBAAiB;QACjBC,OAAO;IACT;IACA4C,cAAc;QACZjD,UAAU;QACVK,OAAO;IACT;IACA6C,gBAAgB;QACdlD,UAAU;QACVK,OAAO;QACPe,WAAW;IACb;IACA+B,eAAe;QACbnD,UAAU;QACVC,YAAY;QACZI,OAAO;QACPF,YAAY;QACZP,SAAS;QACTC,YAAY;QACZ4C,KAAK;QACL1C,SAAS;QACTe,YAAY;QACZgB,YAAY;QACZxB,QAAQ;QACRC,QAAQ;IACV;IACA6C,uBAAuB;QACrB3C,SAAS;QACTF,QAAQ;IACV;IACA8C,WAAW;QACT1C,OAAO;QACPC,QAAQ;QACRP,OAAO;QACPS,YAAY;IACd;AACF;AAEA;;;;CAIC,GACD,OAAO,MAAMwC,+BAAiBrE,KAAK,SAASqE,eAAe,EACzDC,MAAM,EACNC,cAAc,iBAAiB,EAC/BC,SAAS,EACTC,QAAQ,EACY;IACpB,MAAM,CAACC,QAAQC,UAAU,GAAG/E,SAAS;IACrC,MAAM,CAACgF,WAAWC,aAAa,GAAGjF,SAAS;IAC3C,MAAM,CAACkF,aAAaC,eAAe,GAAGnF,SAAS;IAC/C,MAAM,CAACoF,UAAUC,YAAY,GAAGrF,SAAwB,EAAE;IAC1D,MAAM,CAACsF,OAAOC,SAAS,GAAGvF,SAAwB;IAClD,MAAM,CAACwF,aAAaC,eAAe,GAAGzF,SAAyB;IAC/D,MAAM,CAAC0F,cAAcC,gBAAgB,GAAG3F,SAAwB;IAChE,MAAM4F,cAAczF,OAAuB;IAE3C,mDAAmD;IACnDD,UAAU;QACR,eAAe2F;YACb,IAAI;gBACF,MAAMC,WAAW,MAAMC,MAAM,GAAGpB,YAAY,CAAC,EAAED,OAAO,iBAAiB,CAAC,EAAE;oBACxEsB,QAAQ;gBACV;gBACAP,eAAeK,SAASG,MAAM,KAAK;YACrC,EAAE,OAAM;gBACNR,eAAe;YACjB;QACF;QACAI;IACF,GAAG;QAAClB;QAAaD;KAAO;IAExB,yBAAyB;IACzBxE,UAAU;QACR,SAASgG,mBAAmBC,KAAiB;YAC3C,IAAIP,YAAYQ,OAAO,IAAI,CAACR,YAAYQ,OAAO,CAACC,QAAQ,CAACF,MAAMG,MAAM,GAAW;gBAC9EvB,UAAU;YACZ;QACF;QACAwB,SAASC,gBAAgB,CAAC,aAAaN;QACvC,OAAO,IAAMK,SAASE,mBAAmB,CAAC,aAAaP;IACzD,GAAG,EAAE;IAEL,qCAAqC;IACrC,MAAMQ,gBAAgBzG,YAAY;QAChCgF,aAAa;QACbM,SAAS;QACT,IAAI;YACF,MAAMO,WAAW,MAAMC,MAAM,GAAGpB,YAAY,CAAC,EAAED,OAAO,kBAAkB,CAAC;YACzE,IAAI,CAACoB,SAASa,EAAE,EAAE;gBAChB,MAAM,IAAIC,MAAM;YAClB;YACA,MAAMC,OAAO,MAAMf,SAASgB,IAAI;YAChCzB,YAAYwB,KAAKE,IAAI,IAAI,EAAE;QAC7B,EAAE,OAAOC,KAAK;YACZzB,SAASyB,eAAeJ,QAAQI,IAAIC,OAAO,GAAG;YAC9CC,QAAQ5B,KAAK,CAAC,4BAA4B0B;QAC5C,SAAU;YACR/B,aAAa;QACf;IACF,GAAG;QAACN;QAAaD;KAAO;IAExB,8BAA8B;IAC9BxE,UAAU;QACR,IAAI4E,QAAQ;YACV4B;QACF;IACF,GAAG;QAAC5B;QAAQ4B;KAAc;IAE1B,yBAAyB;IACzB,MAAMS,gBAAgBlH,YACpB,OAAOmH;QACL,IAAI,CAACC,QAAQ,CAAC,0BAA0B,EAAEC,WAAWF,QAAQG,SAAS,EAAE,sCAAsC,CAAC,GAAG;YAChH;QACF;QAEApC,eAAe;QACf,IAAI;YACF,MAAMW,WAAW,MAAMC,MAAM,GAAGpB,YAAY,CAAC,EAAED,OAAO,SAAS,CAAC,EAAE;gBAChEsB,QAAQ;gBACRwB,SAAS;oBAAE,gBAAgB;gBAAmB;gBAC9CC,MAAMC,KAAKC,SAAS,CAAC;oBAAEC,WAAWR,QAAQS,EAAE;gBAAC;YAC/C;YAEA,IAAI,CAAC/B,SAASa,EAAE,EAAE;gBAChB,MAAM,IAAIC,MAAM;YAClB;YAEAhC,YAAYwC;YACZrC,UAAU;YACV+C,OAAOC,QAAQ,CAACC,MAAM;QACxB,EAAE,OAAOhB,KAAK;YACZzB,SAASyB,eAAeJ,QAAQI,IAAIC,OAAO,GAAG;YAC9CC,QAAQ5B,KAAK,CAAC,4BAA4B0B;QAC5C,SAAU;YACR7B,eAAe;QACjB;IACF,GACA;QAACR;QAAaD;QAAQE;KAAU;IAGlC,0BAA0B;IAC1B,SAAS0C,WAAWW,OAAe;QACjC,MAAMC,OAAO,IAAIC,KAAKF;QACtB,MAAMG,MAAM,IAAID;QAChB,MAAME,SAASD,IAAIE,OAAO,KAAKJ,KAAKI,OAAO;QAC3C,MAAMC,WAAWC,KAAKC,KAAK,CAACJ,SAAS;QACrC,MAAMK,YAAYF,KAAKC,KAAK,CAACJ,SAAS;QACtC,MAAMM,WAAWH,KAAKC,KAAK,CAACJ,SAAS;QAErC,IAAIE,WAAW,GAAG,OAAO;QACzB,IAAIA,WAAW,IAAI,OAAO,GAAGA,SAAS,KAAK,CAAC;QAC5C,IAAIG,YAAY,IAAI,OAAO,GAAGA,UAAU,KAAK,CAAC;QAC9C,IAAIC,WAAW,GAAG,OAAO,GAAGA,SAAS,KAAK,CAAC;QAC3C,OAAOT,KAAKU,kBAAkB;IAChC;IAEA,0BAA0B;IAC1B,SAASC,WAAWZ,OAAe;QACjC,MAAMC,OAAO,IAAIC,KAAKF;QACtB,OAAOC,KAAKY,kBAAkB,CAAC,EAAE,EAAE;YAAEC,MAAM;YAAWC,QAAQ;QAAU;IAC1E;IAEA,uEAAuE;IACvE,IAAIxD,gBAAgB,MAAM;QACxB,OAAO;IACT;IAEA,qBACE,MAACyD;QAAIC,KAAKtD;QAAauD,OAAOxI,OAAOC,SAAS;;0BAE5C,MAACE;gBACCsI,MAAK;gBACLC,SAAS,IAAMtE,UAAU,CAACD;gBAC1BD,UAAUA;gBACVsE,OAAO;oBACL,GAAGxI,OAAOG,MAAM;oBAChB,GAAI+D,WAAWlE,OAAOgB,cAAc,GAAG,CAAC,CAAC;gBAC3C;;kCAEA,KAACtB;wBAAQ8I,OAAOxI,OAAOkB,IAAI;;oBAAI;kCAE/B,KAACnB;wBAAYyI,OAAOxI,OAAOuB,SAAS;;;;YAIrC4C,wBACC,MAACmE;gBAAIE,OAAOxI,OAAOyB,QAAQ;;kCAEzB,MAAC6G;wBAAIE,OAAOxI,OAAOiC,MAAM;;0CACvB,KAAC0G;gCAAKH,OAAOxI,OAAOoC,WAAW;0CAAE;;0CACjC,KAACjC;gCACCsI,MAAK;gCACLC,SAAS,IAAMtE,UAAU;gCACzBoE,OAAOxI,OAAOqC,WAAW;0CAEzB,cAAA,KAACvC;oCAAE0I,OAAO;wCAAErH,OAAO;wCAAQC,QAAQ;oCAAO;;;;;kCAK9C,KAACkH;wBAAIE,OAAOxI,OAAOuC,OAAO;kCACvB8B,0BACC,KAACiE;4BAAIE,OAAOxI,OAAOyC,gBAAgB;sCACjC,cAAA,KAAC9C;gCAAQ6I,OAAOxI,OAAO0C,WAAW;;6BAElCiC,sBACF,KAAC2D;4BAAIE,OAAOxI,OAAO4C,SAAS;sCACzB+B;6BAEDF,SAASmE,MAAM,KAAK,kBACtB,KAACN;4BAAIE,OAAOxI,OAAO8C,SAAS;sCAAmB;2CAI/C,KAACwF;4BAAIE,OAAOxI,OAAO+C,aAAa;sCAC7B0B,SAASoE,GAAG,CAAC,CAACpC,SAASqC,sBACtB,MAACR;oCAECE,OAAO;wCACL,GAAGxI,OAAOgD,WAAW;wCACrBpC,iBAAiBmE,iBAAiB+D,QAAQ,8BAA8B;oCAC1E;oCACAC,cAAc,IAAM/D,gBAAgB8D;oCACpCE,cAAc,IAAMhE,gBAAgB;;sDAGpC,MAACsD;4CAAIE,OAAOxI,OAAOkD,WAAW;;8DAC5B,MAACoF;oDAAIE,OAAOxI,OAAOqD,aAAa;;sEAC9B,KAACsF;4DAAKH,OAAOxI,OAAOsD,WAAW;sEAC5BqD,WAAWF,QAAQG,SAAS;;wDAE9BkC,UAAU,mBACT,KAACH;4DAAKH,OAAOxI,OAAOuD,YAAY;sEAAE;;wDAInCkD,QAAQA,OAAO,CAACwC,OAAO,KAAK,6BAC3B,KAACN;4DAAKH,OAAOxI,OAAOwD,cAAc;sEAAE;;wDAIrCiD,QAAQyC,QAAQ,kBACf,KAACP;4DAAKH,OAAOxI,OAAOyD,YAAY;4DAAE0F,OAAM;sEAAY;;;;8DAKxD,MAACb;oDAAIE,OAAOxI,OAAO0D,cAAc;;wDAC9BwE,WAAWzB,QAAQG,SAAS;wDAC5BH,QAAQA,OAAO,CAAC0C,KAAK,kBACpB,MAACR;;gEAAK;gEAAWlC,QAAQA,OAAO,CAAC0C,KAAK;;;;;;;wCAM3CL,QAAQ,mBACP,MAAC3I;4CACCsI,MAAK;4CACLC,SAAS,IAAMlC,cAAcC;4CAC7BvC,UAAUK;4CACViE,OAAO;gDACL,GAAGxI,OAAO2D,aAAa;gDACvB,GAAIY,cAAcvE,OAAO4D,qBAAqB,GAAG,CAAC,CAAC;4CACrD;;gDAECW,4BACC,KAAC5E;oDAAQ6I,OAAO;wDAAErH,OAAO;wDAAQC,QAAQ;wDAAQuB,WAAW;oDAA0B;mEAEtF,KAAC9C;oDAAU2I,OAAO;wDAAErH,OAAO;wDAAQC,QAAQ;oDAAO;;gDAClD;;;wCAML0H,UAAU,mBACT,KAACH;4CAAKH,OAAO;gDAAElH,YAAY;4CAAE;sDAC3B,cAAA,KAAC1B;gDAAM4I,OAAOxI,OAAO6D,SAAS;;;;mCA7D7B4C,QAAQS,EAAE;;;;;;;AAyEnC,GAAE"}
|
|
@@ -17,44 +17,52 @@ import { useState, useEffect, useCallback } from 'react';
|
|
|
17
17
|
* // Apply dark mode styles
|
|
18
18
|
* }
|
|
19
19
|
* ```
|
|
20
|
-
*/
|
|
21
|
-
export function useDarkMode() {
|
|
20
|
+
*/ export function useDarkMode() {
|
|
22
21
|
const [state, setState] = useState({
|
|
23
22
|
isDarkMode: false,
|
|
24
|
-
source: 'none'
|
|
23
|
+
source: 'none'
|
|
25
24
|
});
|
|
26
25
|
// Check for dark mode class on document element
|
|
27
|
-
const checkDarkModeClass = useCallback(()
|
|
28
|
-
if (typeof document === 'undefined')
|
|
29
|
-
return false;
|
|
26
|
+
const checkDarkModeClass = useCallback(()=>{
|
|
27
|
+
if (typeof document === 'undefined') return false;
|
|
30
28
|
return document.documentElement.classList.contains('dark');
|
|
31
29
|
}, []);
|
|
32
30
|
// Check for OS dark mode preference
|
|
33
|
-
const checkMediaQuery = useCallback(()
|
|
34
|
-
if (typeof window === 'undefined')
|
|
35
|
-
return false;
|
|
31
|
+
const checkMediaQuery = useCallback(()=>{
|
|
32
|
+
if (typeof window === 'undefined') return false;
|
|
36
33
|
return window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
37
34
|
}, []);
|
|
38
35
|
// Compute current dark mode state
|
|
39
|
-
const computeState = useCallback(()
|
|
36
|
+
const computeState = useCallback(()=>{
|
|
40
37
|
// Priority 1: Check for .dark class (PayloadCMS)
|
|
41
38
|
if (checkDarkModeClass()) {
|
|
42
|
-
return {
|
|
39
|
+
return {
|
|
40
|
+
isDarkMode: true,
|
|
41
|
+
source: 'class'
|
|
42
|
+
};
|
|
43
43
|
}
|
|
44
44
|
// Priority 2: Check OS preference
|
|
45
45
|
if (checkMediaQuery()) {
|
|
46
|
-
return {
|
|
46
|
+
return {
|
|
47
|
+
isDarkMode: true,
|
|
48
|
+
source: 'media-query'
|
|
49
|
+
};
|
|
47
50
|
}
|
|
48
|
-
return {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
return {
|
|
52
|
+
isDarkMode: false,
|
|
53
|
+
source: 'none'
|
|
54
|
+
};
|
|
55
|
+
}, [
|
|
56
|
+
checkDarkModeClass,
|
|
57
|
+
checkMediaQuery
|
|
58
|
+
]);
|
|
59
|
+
useEffect(()=>{
|
|
51
60
|
// Set initial state
|
|
52
61
|
setState(computeState());
|
|
53
62
|
// Watch for class changes on document element
|
|
54
|
-
const observer = new MutationObserver((mutations)
|
|
55
|
-
for (const mutation of mutations)
|
|
56
|
-
if (mutation.type === 'attributes' &&
|
|
57
|
-
mutation.attributeName === 'class') {
|
|
63
|
+
const observer = new MutationObserver((mutations)=>{
|
|
64
|
+
for (const mutation of mutations){
|
|
65
|
+
if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
|
|
58
66
|
setState(computeState());
|
|
59
67
|
break;
|
|
60
68
|
}
|
|
@@ -62,19 +70,24 @@ export function useDarkMode() {
|
|
|
62
70
|
});
|
|
63
71
|
observer.observe(document.documentElement, {
|
|
64
72
|
attributes: true,
|
|
65
|
-
attributeFilter: [
|
|
73
|
+
attributeFilter: [
|
|
74
|
+
'class'
|
|
75
|
+
]
|
|
66
76
|
});
|
|
67
77
|
// Watch for OS preference changes
|
|
68
78
|
const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
|
|
69
|
-
const handleMediaChange = ()
|
|
79
|
+
const handleMediaChange = ()=>{
|
|
70
80
|
setState(computeState());
|
|
71
81
|
};
|
|
72
82
|
mediaQuery.addEventListener('change', handleMediaChange);
|
|
73
|
-
return ()
|
|
83
|
+
return ()=>{
|
|
74
84
|
observer.disconnect();
|
|
75
85
|
mediaQuery.removeEventListener('change', handleMediaChange);
|
|
76
86
|
};
|
|
77
|
-
}, [
|
|
87
|
+
}, [
|
|
88
|
+
computeState
|
|
89
|
+
]);
|
|
78
90
|
return state;
|
|
79
91
|
}
|
|
92
|
+
|
|
80
93
|
//# sourceMappingURL=useDarkMode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/hooks/useDarkMode.ts"],"sourcesContent":["'use client'\n\nimport { useState, useEffect, useCallback } from 'react'\n\n/**\n * Source of dark mode detection\n */\nexport type DarkModeSource = 'class' | 'media-query' | 'none'\n\n/**\n * Return type for useDarkMode hook\n */\nexport interface UseDarkModeReturn {\n /**\n * Whether dark mode is currently active\n */\n isDarkMode: boolean\n /**\n * How dark mode was detected\n */\n source: DarkModeSource\n}\n\n/**\n * Detects dark mode state from PayloadCMS admin or OS preferences.\n *\n * Detection priority:\n * 1. `.dark` class on `document.documentElement` (PayloadCMS admin)\n * 2. `prefers-color-scheme: dark` media query (OS preference)\n *\n * Uses MutationObserver to track class changes in real-time.\n *\n * @example\n * ```tsx\n * const { isDarkMode, source } = useDarkMode()\n *\n * if (isDarkMode) {\n * // Apply dark mode styles\n * }\n * ```\n */\nexport function useDarkMode(): UseDarkModeReturn {\n const [state, setState] = useState<UseDarkModeReturn>({\n isDarkMode: false,\n source: 'none',\n })\n\n // Check for dark mode class on document element\n const checkDarkModeClass = useCallback((): boolean => {\n if (typeof document === 'undefined') return false\n return document.documentElement.classList.contains('dark')\n }, [])\n\n // Check for OS dark mode preference\n const checkMediaQuery = useCallback((): boolean => {\n if (typeof window === 'undefined') return false\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n }, [])\n\n // Compute current dark mode state\n const computeState = useCallback((): UseDarkModeReturn => {\n // Priority 1: Check for .dark class (PayloadCMS)\n if (checkDarkModeClass()) {\n return { isDarkMode: true, source: 'class' }\n }\n\n // Priority 2: Check OS preference\n if (checkMediaQuery()) {\n return { isDarkMode: true, source: 'media-query' }\n }\n\n return { isDarkMode: false, source: 'none' }\n }, [checkDarkModeClass, checkMediaQuery])\n\n useEffect(() => {\n // Set initial state\n setState(computeState())\n\n // Watch for class changes on document element\n const observer = new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (\n mutation.type === 'attributes' &&\n mutation.attributeName === 'class'\n ) {\n setState(computeState())\n break\n }\n }\n })\n\n observer.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['class'],\n })\n\n // Watch for OS preference changes\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const handleMediaChange = () => {\n setState(computeState())\n }\n mediaQuery.addEventListener('change', handleMediaChange)\n\n return () => {\n observer.disconnect()\n mediaQuery.removeEventListener('change', handleMediaChange)\n }\n }, [computeState])\n\n return state\n}\n"],"names":["useState","useEffect","useCallback","useDarkMode","state","setState","isDarkMode","source","checkDarkModeClass","document","documentElement","classList","contains","checkMediaQuery","window","matchMedia","matches","computeState","observer","MutationObserver","mutations","mutation","type","attributeName","observe","attributes","attributeFilter","mediaQuery","handleMediaChange","addEventListener","disconnect","removeEventListener"],"mappings":"AAAA;AAEA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,QAAO;AAqBxD;;;;;;;;;;;;;;;;;CAiBC,GACD,OAAO,SAASC;IACd,MAAM,CAACC,OAAOC,SAAS,GAAGL,SAA4B;QACpDM,YAAY;QACZC,QAAQ;IACV;IAEA,gDAAgD;IAChD,MAAMC,qBAAqBN,YAAY;QACrC,IAAI,OAAOO,aAAa,aAAa,OAAO;QAC5C,OAAOA,SAASC,eAAe,CAACC,SAAS,CAACC,QAAQ,CAAC;IACrD,GAAG,EAAE;IAEL,oCAAoC;IACpC,MAAMC,kBAAkBX,YAAY;QAClC,IAAI,OAAOY,WAAW,aAAa,OAAO;QAC1C,OAAOA,OAAOC,UAAU,CAAC,gCAAgCC,OAAO;IAClE,GAAG,EAAE;IAEL,kCAAkC;IAClC,MAAMC,eAAef,YAAY;QAC/B,iDAAiD;QACjD,IAAIM,sBAAsB;YACxB,OAAO;gBAAEF,YAAY;gBAAMC,QAAQ;YAAQ;QAC7C;QAEA,kCAAkC;QAClC,IAAIM,mBAAmB;YACrB,OAAO;gBAAEP,YAAY;gBAAMC,QAAQ;YAAc;QACnD;QAEA,OAAO;YAAED,YAAY;YAAOC,QAAQ;QAAO;IAC7C,GAAG;QAACC;QAAoBK;KAAgB;IAExCZ,UAAU;QACR,oBAAoB;QACpBI,SAASY;QAET,8CAA8C;QAC9C,MAAMC,WAAW,IAAIC,iBAAiB,CAACC;YACrC,KAAK,MAAMC,YAAYD,UAAW;gBAChC,IACEC,SAASC,IAAI,KAAK,gBAClBD,SAASE,aAAa,KAAK,SAC3B;oBACAlB,SAASY;oBACT;gBACF;YACF;QACF;QAEAC,SAASM,OAAO,CAACf,SAASC,eAAe,EAAE;YACzCe,YAAY;YACZC,iBAAiB;gBAAC;aAAQ;QAC5B;QAEA,kCAAkC;QAClC,MAAMC,aAAab,OAAOC,UAAU,CAAC;QACrC,MAAMa,oBAAoB;YACxBvB,SAASY;QACX;QACAU,WAAWE,gBAAgB,CAAC,UAAUD;QAEtC,OAAO;YACLV,SAASY,UAAU;YACnBH,WAAWI,mBAAmB,CAAC,UAAUH;QAC3C;IACF,GAAG;QAACX;KAAa;IAEjB,OAAOb;AACT"}
|
|
@@ -19,16 +19,15 @@ import { useState, useEffect, useCallback, useRef } from 'react';
|
|
|
19
19
|
* markClean()
|
|
20
20
|
* }
|
|
21
21
|
* ```
|
|
22
|
-
*/
|
|
23
|
-
export function useUnsavedChanges() {
|
|
22
|
+
*/ export function useUnsavedChanges() {
|
|
24
23
|
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
|
|
25
24
|
// Use a ref to track the latest value for the beforeunload handler
|
|
26
25
|
// This ensures the handler always checks the current value, not a stale closure
|
|
27
26
|
const hasUnsavedChangesRef = useRef(hasUnsavedChanges);
|
|
28
27
|
hasUnsavedChangesRef.current = hasUnsavedChanges;
|
|
29
28
|
// Register beforeunload handler once (uses ref for latest value)
|
|
30
|
-
useEffect(()
|
|
31
|
-
const handleBeforeUnload = (e)
|
|
29
|
+
useEffect(()=>{
|
|
30
|
+
const handleBeforeUnload = (e)=>{
|
|
32
31
|
if (hasUnsavedChangesRef.current) {
|
|
33
32
|
e.preventDefault();
|
|
34
33
|
// Modern browsers ignore custom messages but still show a warning
|
|
@@ -36,20 +35,21 @@ export function useUnsavedChanges() {
|
|
|
36
35
|
}
|
|
37
36
|
};
|
|
38
37
|
window.addEventListener('beforeunload', handleBeforeUnload);
|
|
39
|
-
return ()
|
|
38
|
+
return ()=>window.removeEventListener('beforeunload', handleBeforeUnload);
|
|
40
39
|
}, []);
|
|
41
|
-
const markClean = useCallback(()
|
|
40
|
+
const markClean = useCallback(()=>{
|
|
42
41
|
hasUnsavedChangesRef.current = false; // Update ref immediately for beforeunload
|
|
43
42
|
setHasUnsavedChanges(false);
|
|
44
43
|
}, []);
|
|
45
|
-
const markDirty = useCallback(()
|
|
44
|
+
const markDirty = useCallback(()=>{
|
|
46
45
|
hasUnsavedChangesRef.current = true; // Update ref immediately for beforeunload
|
|
47
46
|
setHasUnsavedChanges(true);
|
|
48
47
|
}, []);
|
|
49
48
|
return {
|
|
50
49
|
hasUnsavedChanges,
|
|
51
50
|
markClean,
|
|
52
|
-
markDirty
|
|
51
|
+
markDirty
|
|
53
52
|
};
|
|
54
53
|
}
|
|
54
|
+
|
|
55
55
|
//# sourceMappingURL=useUnsavedChanges.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/hooks/useUnsavedChanges.ts"],"sourcesContent":["'use client'\n\nimport { useState, useEffect, useCallback, useRef } from 'react'\n\nexport interface UseUnsavedChangesReturn {\n hasUnsavedChanges: boolean\n markClean: () => void\n markDirty: () => void\n}\n\n/**\n * Hook to track unsaved changes and warn before navigation\n *\n * Registers a beforeunload handler to prevent accidental navigation\n * when there are unsaved changes.\n *\n * @example\n * ```tsx\n * const { hasUnsavedChanges, markClean, markDirty } = useUnsavedChanges()\n *\n * const handleChange = () => {\n * markDirty()\n * }\n *\n * const handleSave = async () => {\n * await save()\n * markClean()\n * }\n * ```\n */\nexport function useUnsavedChanges(): UseUnsavedChangesReturn {\n const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false)\n\n // Use a ref to track the latest value for the beforeunload handler\n // This ensures the handler always checks the current value, not a stale closure\n const hasUnsavedChangesRef = useRef(hasUnsavedChanges)\n hasUnsavedChangesRef.current = hasUnsavedChanges\n\n // Register beforeunload handler once (uses ref for latest value)\n useEffect(() => {\n const handleBeforeUnload = (e: BeforeUnloadEvent) => {\n if (hasUnsavedChangesRef.current) {\n e.preventDefault()\n // Modern browsers ignore custom messages but still show a warning\n e.returnValue = ''\n }\n }\n\n window.addEventListener('beforeunload', handleBeforeUnload)\n return () => window.removeEventListener('beforeunload', handleBeforeUnload)\n }, [])\n\n const markClean = useCallback(() => {\n hasUnsavedChangesRef.current = false // Update ref immediately for beforeunload\n setHasUnsavedChanges(false)\n }, [])\n\n const markDirty = useCallback(() => {\n hasUnsavedChangesRef.current = true // Update ref immediately for beforeunload\n setHasUnsavedChanges(true)\n }, [])\n\n return {\n hasUnsavedChanges,\n markClean,\n markDirty,\n }\n}\n"],"names":["useState","useEffect","useCallback","useRef","useUnsavedChanges","hasUnsavedChanges","setHasUnsavedChanges","hasUnsavedChangesRef","current","handleBeforeUnload","e","preventDefault","returnValue","window","addEventListener","removeEventListener","markClean","markDirty"],"mappings":"AAAA;AAEA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,WAAW,EAAEC,MAAM,QAAQ,QAAO;AAQhE;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC;IACd,MAAM,CAACC,mBAAmBC,qBAAqB,GAAGN,SAAS;IAE3D,mEAAmE;IACnE,gFAAgF;IAChF,MAAMO,uBAAuBJ,OAAOE;IACpCE,qBAAqBC,OAAO,GAAGH;IAE/B,iEAAiE;IACjEJ,UAAU;QACR,MAAMQ,qBAAqB,CAACC;YAC1B,IAAIH,qBAAqBC,OAAO,EAAE;gBAChCE,EAAEC,cAAc;gBAChB,kEAAkE;gBAClED,EAAEE,WAAW,GAAG;YAClB;QACF;QAEAC,OAAOC,gBAAgB,CAAC,gBAAgBL;QACxC,OAAO,IAAMI,OAAOE,mBAAmB,CAAC,gBAAgBN;IAC1D,GAAG,EAAE;IAEL,MAAMO,YAAYd,YAAY;QAC5BK,qBAAqBC,OAAO,GAAG,OAAM,0CAA0C;QAC/EF,qBAAqB;IACvB,GAAG,EAAE;IAEL,MAAMW,YAAYf,YAAY;QAC5BK,qBAAqBC,OAAO,GAAG,MAAK,0CAA0C;QAC9EF,qBAAqB;IACvB,GAAG,EAAE;IAEL,OAAO;QACLD;QACAW;QACAC;IACF;AACF"}
|
package/dist/editor/index.js
CHANGED
|
@@ -41,22 +41,20 @@
|
|
|
41
41
|
* pageSegment={page.pageSegment}
|
|
42
42
|
* />
|
|
43
43
|
* ```
|
|
44
|
-
*/
|
|
45
|
-
// Main editor component
|
|
44
|
+
*/ // Main editor component
|
|
46
45
|
export { PuckEditor } from './PuckEditor.js';
|
|
47
46
|
// Ready-to-use editor page component (auto-fetches page data from route params)
|
|
48
47
|
export { PuckEditorView } from '../admin/PuckEditorView.js';
|
|
49
48
|
// Sub-components for advanced customization
|
|
50
49
|
export { HeaderActions } from './components/HeaderActions.js';
|
|
51
|
-
export { IframeWrapper, PuckPreviewThemeContext, usePuckPreviewTheme
|
|
50
|
+
export { IframeWrapper, PuckPreviewThemeContext, usePuckPreviewTheme } from './components/IframeWrapper.js';
|
|
52
51
|
export { LoadingState } from './components/LoadingState.js';
|
|
53
52
|
export { PreviewModal } from './components/PreviewModal.js';
|
|
54
53
|
export { DarkModeStyles } from './components/DarkModeStyles.js';
|
|
55
54
|
export { PreviewModeToggle } from './components/PreviewModeToggle.js';
|
|
56
55
|
/**
|
|
57
56
|
* @deprecated Use createVersionHistoryPlugin instead. VersionHistory has moved to the plugin rail.
|
|
58
|
-
*/
|
|
59
|
-
export { VersionHistory } from './components/VersionHistory.js';
|
|
57
|
+
*/ export { VersionHistory } from './components/VersionHistory.js';
|
|
60
58
|
// Utilities
|
|
61
59
|
export { injectPageTreeFields } from './utils/injectPageTreeFields.js';
|
|
62
60
|
export { detectPageTree, hasPageTreeFields } from './utils/detectPageTree.js';
|
|
@@ -65,5 +63,6 @@ export { useUnsavedChanges } from './hooks/useUnsavedChanges.js';
|
|
|
65
63
|
export { useDarkMode } from './hooks/useDarkMode.js';
|
|
66
64
|
// Plugins
|
|
67
65
|
export { headingAnalyzer } from './plugins/index.js';
|
|
68
|
-
export { createVersionHistoryPlugin, VersionHistoryPanel
|
|
66
|
+
export { createVersionHistoryPlugin, VersionHistoryPanel } from './plugins/index.js';
|
|
67
|
+
|
|
69
68
|
//# sourceMappingURL=index.js.map
|
package/dist/editor/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/editor/index.ts"],"sourcesContent":["'use client'\n\n/**\n * @delmaredigital/payload-puck/editor\n *\n * Full-featured Puck editor component with built-in page-tree support,\n * dynamic loading, unsaved changes tracking, and theme-aware preview.\n *\n * @example Basic usage\n * ```tsx\n * 'use client'\n *\n * import { PuckEditor } from '@delmaredigital/payload-puck/editor'\n * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'\n *\n * export function PageEditor({ page }) {\n * return (\n * <PuckEditor\n * pageId={page.id}\n * initialData={page.puckData}\n * config={editorConfig}\n * pageTitle={page.title}\n * pageSlug={page.slug}\n * apiEndpoint=\"/api/puck/pages\"\n * backUrl=\"/admin/pages\"\n * />\n * )\n * }\n * ```\n *\n * @example With page-tree integration\n * ```tsx\n * <PuckEditor\n * pageId={page.id}\n * initialData={page.puckData}\n * config={editorConfig}\n * pageTitle={page.title}\n * pageSlug={page.slug}\n * apiEndpoint=\"/api/puck/pages\"\n * hasPageTree={true}\n * folder={page.folder}\n * pageSegment={page.pageSegment}\n * />\n * ```\n */\n\n// Main editor component\nexport { PuckEditor, type PuckEditorProps } from './PuckEditor.js'\n\n// Ready-to-use editor page component (auto-fetches page data from route params)\nexport { PuckEditorView, type PuckEditorViewProps } from '../admin/PuckEditorView.js'\n\n// Sub-components for advanced customization\nexport { HeaderActions, type HeaderActionsProps } from './components/HeaderActions.js'\nexport {\n IframeWrapper,\n type IframeWrapperProps,\n type LayoutStyle,\n PuckPreviewThemeContext,\n usePuckPreviewTheme,\n} from './components/IframeWrapper.js'\nexport { LoadingState, type LoadingStateProps } from './components/LoadingState.js'\nexport { PreviewModal, type PreviewModalProps } from './components/PreviewModal.js'\nexport { DarkModeStyles, type DarkModeStylesProps } from './components/DarkModeStyles.js'\nexport { PreviewModeToggle, type PreviewModeToggleProps } from './components/PreviewModeToggle.js'\n/**\n * @deprecated Use createVersionHistoryPlugin instead. VersionHistory has moved to the plugin rail.\n */\nexport { VersionHistory, type VersionHistoryProps, type PageVersion } from './components/VersionHistory.js'\n\n// Utilities\nexport { injectPageTreeFields } from './utils/injectPageTreeFields.js'\nexport { detectPageTree, hasPageTreeFields } from './utils/detectPageTree.js'\n\n// Hooks\nexport { useUnsavedChanges, type UseUnsavedChangesReturn } from './hooks/useUnsavedChanges.js'\nexport { useDarkMode, type UseDarkModeReturn, type DarkModeSource } from './hooks/useDarkMode.js'\n\n// Plugins\nexport { headingAnalyzer } from './plugins/index.js'\nexport {\n createVersionHistoryPlugin,\n type VersionHistoryPluginOptions,\n VersionHistoryPanel,\n type VersionHistoryPanelProps,\n} from './plugins/index.js'\n"],"names":["PuckEditor","PuckEditorView","HeaderActions","IframeWrapper","PuckPreviewThemeContext","usePuckPreviewTheme","LoadingState","PreviewModal","DarkModeStyles","PreviewModeToggle","VersionHistory","injectPageTreeFields","detectPageTree","hasPageTreeFields","useUnsavedChanges","useDarkMode","headingAnalyzer","createVersionHistoryPlugin","VersionHistoryPanel"],"mappings":"AAAA;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CC,GAED,wBAAwB;AACxB,SAASA,UAAU,QAA8B,kBAAiB;AAElE,gFAAgF;AAChF,SAASC,cAAc,QAAkC,6BAA4B;AAErF,4CAA4C;AAC5C,SAASC,aAAa,QAAiC,gCAA+B;AACtF,SACEC,aAAa,EAGbC,uBAAuB,EACvBC,mBAAmB,QACd,gCAA+B;AACtC,SAASC,YAAY,QAAgC,+BAA8B;AACnF,SAASC,YAAY,QAAgC,+BAA8B;AACnF,SAASC,cAAc,QAAkC,iCAAgC;AACzF,SAASC,iBAAiB,QAAqC,oCAAmC;AAClG;;CAEC,GACD,SAASC,cAAc,QAAoD,iCAAgC;AAE3G,YAAY;AACZ,SAASC,oBAAoB,QAAQ,kCAAiC;AACtE,SAASC,cAAc,EAAEC,iBAAiB,QAAQ,4BAA2B;AAE7E,QAAQ;AACR,SAASC,iBAAiB,QAAsC,+BAA8B;AAC9F,SAASC,WAAW,QAAqD,yBAAwB;AAEjG,UAAU;AACV,SAASC,eAAe,QAAQ,qBAAoB;AACpD,SACEC,0BAA0B,EAE1BC,mBAAmB,QAEd,qBAAoB"}
|