@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":"IframeWrapper.d.ts","sourceRoot":"","sources":["../../../src/editor/components/IframeWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAEzH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"IframeWrapper.d.ts","sourceRoot":"","sources":["../../../src/editor/components/IframeWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAiE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAEzH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAM9D;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,yCAAsC,CAAA;AAE1E;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,sBAA4C,CAAA;AAE5E;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AAaD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB;;;OAGG;IACH,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC1C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAUD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,aAAa,0DAmYxB,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { memo, useEffect, useMemo, useState, createContext, useContext } from 'react';
|
|
4
4
|
import { createUsePuck } from '@puckeditor/core';
|
|
5
|
-
import { backgroundValueToCSS } from '../../fields/shared';
|
|
5
|
+
import { backgroundValueToCSS } from '../../fields/shared.js';
|
|
6
6
|
// Create usePuck hook for accessing editor state
|
|
7
7
|
const usePuck = createUsePuck();
|
|
8
8
|
/**
|
|
@@ -12,8 +12,7 @@ const usePuck = createUsePuck();
|
|
|
12
12
|
*
|
|
13
13
|
* This allows Puck components to reactively respond to preview theme changes
|
|
14
14
|
* without polling or MutationObserver hacks.
|
|
15
|
-
*/
|
|
16
|
-
export const PuckPreviewThemeContext = createContext(null);
|
|
15
|
+
*/ export const PuckPreviewThemeContext = /*#__PURE__*/ createContext(null);
|
|
17
16
|
/**
|
|
18
17
|
* Hook to get the current preview theme from IframeWrapper context.
|
|
19
18
|
*
|
|
@@ -32,14 +31,12 @@ export const PuckPreviewThemeContext = createContext(null);
|
|
|
32
31
|
* return <div className={isDark ? 'dark-styles' : 'light-styles'}>...</div>
|
|
33
32
|
* }
|
|
34
33
|
* ```
|
|
35
|
-
*/
|
|
36
|
-
export const usePuckPreviewTheme = () => useContext(PuckPreviewThemeContext);
|
|
34
|
+
*/ export const usePuckPreviewTheme = ()=>useContext(PuckPreviewThemeContext);
|
|
37
35
|
/**
|
|
38
36
|
* Default layout config
|
|
39
|
-
*/
|
|
40
|
-
const DEFAULT_LAYOUT_CONFIG = {
|
|
37
|
+
*/ const DEFAULT_LAYOUT_CONFIG = {
|
|
41
38
|
background: '#ffffff',
|
|
42
|
-
isDark: false
|
|
39
|
+
isDark: false
|
|
43
40
|
};
|
|
44
41
|
/**
|
|
45
42
|
* Theme-aware iframe wrapper component
|
|
@@ -64,9 +61,8 @@ const DEFAULT_LAYOUT_CONFIG = {
|
|
|
64
61
|
* ),
|
|
65
62
|
* }
|
|
66
63
|
* ```
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
const appState = usePuck((s) => s.appState);
|
|
64
|
+
*/ export const IframeWrapper = /*#__PURE__*/ memo(function IframeWrapper({ children, document: iframeDoc, layouts, layoutStyles, layoutKey = 'pageLayout', defaultLayout = 'default', editorStylesheets, editorCss, previewDarkModeOverride }) {
|
|
65
|
+
const appState = usePuck((s)=>s.appState);
|
|
70
66
|
// Track stylesheet loading state to force re-render when styles are ready
|
|
71
67
|
const [stylesLoaded, setStylesLoaded] = useState(false);
|
|
72
68
|
// Check if we're in interactive mode (links should be clickable)
|
|
@@ -79,17 +75,17 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
79
75
|
const showFooterOverride = rootProps?.showFooter;
|
|
80
76
|
const pageBackground = rootProps?.pageBackground;
|
|
81
77
|
// Convert layouts array to config map, or use deprecated layoutStyles
|
|
82
|
-
const layoutConfigMap = useMemo(()
|
|
78
|
+
const layoutConfigMap = useMemo(()=>{
|
|
83
79
|
// If layouts prop provided, convert to internal format
|
|
84
80
|
if (layouts) {
|
|
85
81
|
const map = {};
|
|
86
|
-
for (const layout of layouts)
|
|
82
|
+
for (const layout of layouts){
|
|
87
83
|
map[layout.value] = {
|
|
88
84
|
background: layout.editorBackground ?? '#ffffff',
|
|
89
85
|
isDark: layout.editorDarkMode ?? false,
|
|
90
86
|
header: layout.header,
|
|
91
87
|
footer: layout.footer,
|
|
92
|
-
stickyHeaderHeight: layout.stickyHeaderHeight
|
|
88
|
+
stickyHeaderHeight: layout.stickyHeaderHeight
|
|
93
89
|
};
|
|
94
90
|
}
|
|
95
91
|
return map;
|
|
@@ -99,15 +95,19 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
99
95
|
return layoutStyles;
|
|
100
96
|
}
|
|
101
97
|
// Default fallback
|
|
102
|
-
return {
|
|
103
|
-
|
|
98
|
+
return {
|
|
99
|
+
default: DEFAULT_LAYOUT_CONFIG
|
|
100
|
+
};
|
|
101
|
+
}, [
|
|
102
|
+
layouts,
|
|
103
|
+
layoutStyles
|
|
104
|
+
]);
|
|
104
105
|
// Get config for current layout
|
|
105
106
|
const layoutConfig = layoutConfigMap[layoutValue] || layoutConfigMap[defaultLayout] || DEFAULT_LAYOUT_CONFIG;
|
|
106
107
|
// Calculate isDark for context provider (same logic as in useEffect)
|
|
107
108
|
const isDark = previewDarkModeOverride ?? layoutConfig.isDark;
|
|
108
|
-
useEffect(()
|
|
109
|
-
if (!iframeDoc)
|
|
110
|
-
return;
|
|
109
|
+
useEffect(()=>{
|
|
110
|
+
if (!iframeDoc) return;
|
|
111
111
|
const body = iframeDoc.body;
|
|
112
112
|
const html = iframeDoc.documentElement;
|
|
113
113
|
// Apply background - page-level override takes precedence
|
|
@@ -119,8 +119,7 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
119
119
|
body.style.backgroundImage = '';
|
|
120
120
|
// Apply new styles
|
|
121
121
|
Object.assign(body.style, bgStyles);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
122
|
+
} else {
|
|
124
123
|
body.style.background = layoutConfig.background;
|
|
125
124
|
}
|
|
126
125
|
body.style.backgroundAttachment = 'fixed';
|
|
@@ -133,8 +132,7 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
133
132
|
html.classList.remove('light');
|
|
134
133
|
html.setAttribute('data-theme', 'dark');
|
|
135
134
|
body.style.color = '#ffffff';
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
135
|
+
} else {
|
|
138
136
|
html.classList.remove('dark');
|
|
139
137
|
html.classList.add('light');
|
|
140
138
|
html.setAttribute('data-theme', 'light');
|
|
@@ -145,7 +143,7 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
145
143
|
if (editorStylesheets && editorStylesheets.length > 0) {
|
|
146
144
|
let pendingLoads = 0;
|
|
147
145
|
let loadedCount = 0;
|
|
148
|
-
const checkAllLoaded = ()
|
|
146
|
+
const checkAllLoaded = ()=>{
|
|
149
147
|
loadedCount++;
|
|
150
148
|
if (loadedCount >= pendingLoads) {
|
|
151
149
|
// All stylesheets loaded - force browser to recalculate styles
|
|
@@ -153,17 +151,15 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
153
151
|
setStylesLoaded(true);
|
|
154
152
|
// Force a browser repaint after styles load
|
|
155
153
|
// Use multiple techniques to ensure CSS is applied to existing elements
|
|
156
|
-
requestAnimationFrame(()
|
|
157
|
-
if (!html || !body)
|
|
158
|
-
return;
|
|
154
|
+
requestAnimationFrame(()=>{
|
|
155
|
+
if (!html || !body) return;
|
|
159
156
|
// Technique 1: Re-apply theme classes (mimics what dark mode toggle does)
|
|
160
157
|
const isDark = previewDarkModeOverride ?? layoutConfig.isDark;
|
|
161
158
|
if (isDark) {
|
|
162
159
|
html.classList.remove('dark');
|
|
163
160
|
void html.offsetHeight; // Force reflow
|
|
164
161
|
html.classList.add('dark');
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
162
|
+
} else {
|
|
167
163
|
html.classList.remove('light');
|
|
168
164
|
void html.offsetHeight; // Force reflow
|
|
169
165
|
html.classList.add('light');
|
|
@@ -181,13 +177,12 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
181
177
|
const origin = typeof window !== 'undefined' ? window.location.origin : '';
|
|
182
178
|
// Track which stylesheets have been counted to avoid double-counting
|
|
183
179
|
const loadedIndexes = new Set();
|
|
184
|
-
const markLoaded = (index)
|
|
185
|
-
if (loadedIndexes.has(index))
|
|
186
|
-
return;
|
|
180
|
+
const markLoaded = (index)=>{
|
|
181
|
+
if (loadedIndexes.has(index)) return;
|
|
187
182
|
loadedIndexes.add(index);
|
|
188
183
|
checkAllLoaded();
|
|
189
184
|
};
|
|
190
|
-
editorStylesheets.forEach((href, index)
|
|
185
|
+
editorStylesheets.forEach((href, index)=>{
|
|
191
186
|
const linkId = `puck-editor-stylesheet-${index}`;
|
|
192
187
|
const existingLink = iframeDoc.getElementById(linkId);
|
|
193
188
|
if (!existingLink) {
|
|
@@ -198,30 +193,28 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
198
193
|
// Resolve relative URLs to absolute URLs for iframe compatibility
|
|
199
194
|
link.href = href.startsWith('/') ? `${origin}${href}` : href;
|
|
200
195
|
// Track when stylesheet loads
|
|
201
|
-
link.onload = ()
|
|
202
|
-
link.onerror = ()
|
|
196
|
+
link.onload = ()=>markLoaded(index);
|
|
197
|
+
link.onerror = ()=>markLoaded(index); // Count errors too to avoid hanging
|
|
203
198
|
iframeDoc.head.appendChild(link);
|
|
204
199
|
// Fallback: if onload doesn't fire within 2 seconds, force trigger
|
|
205
200
|
// This handles edge cases with cached resources or browser quirks
|
|
206
|
-
setTimeout(()
|
|
201
|
+
setTimeout(()=>{
|
|
207
202
|
if (!loadedIndexes.has(index)) {
|
|
208
203
|
markLoaded(index);
|
|
209
204
|
}
|
|
210
205
|
}, 2000);
|
|
211
|
-
}
|
|
212
|
-
else if (!stylesLoaded) {
|
|
206
|
+
} else if (!stylesLoaded) {
|
|
213
207
|
// Link exists - assume it's already loaded
|
|
214
208
|
pendingLoads++;
|
|
215
209
|
// Immediately mark as loaded since it's already in the DOM
|
|
216
|
-
requestAnimationFrame(()
|
|
210
|
+
requestAnimationFrame(()=>markLoaded(index));
|
|
217
211
|
}
|
|
218
212
|
});
|
|
219
213
|
// If no new stylesheets to load, mark as loaded
|
|
220
214
|
if (pendingLoads === 0 && !stylesLoaded) {
|
|
221
215
|
setStylesLoaded(true);
|
|
222
216
|
}
|
|
223
|
-
}
|
|
224
|
-
else if (!stylesLoaded) {
|
|
217
|
+
} else if (!stylesLoaded) {
|
|
225
218
|
// No stylesheets to load
|
|
226
219
|
setStylesLoaded(true);
|
|
227
220
|
}
|
|
@@ -352,7 +345,15 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
352
345
|
`;
|
|
353
346
|
iframeDoc.head.appendChild(style);
|
|
354
347
|
}
|
|
355
|
-
}, [
|
|
348
|
+
}, [
|
|
349
|
+
iframeDoc,
|
|
350
|
+
layoutConfig,
|
|
351
|
+
pageBackground,
|
|
352
|
+
editorStylesheets,
|
|
353
|
+
editorCss,
|
|
354
|
+
stylesLoaded,
|
|
355
|
+
previewDarkModeOverride
|
|
356
|
+
]);
|
|
356
357
|
// Get header/footer components from layout config
|
|
357
358
|
const LayoutHeader = layoutConfig.header;
|
|
358
359
|
const LayoutFooter = layoutConfig.footer;
|
|
@@ -360,16 +361,8 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
360
361
|
// 'default' or undefined = use layout setting
|
|
361
362
|
// 'show' = always show (even if layout doesn't have one - use layout's component)
|
|
362
363
|
// 'hide' = always hide
|
|
363
|
-
const shouldShowHeader = showHeaderOverride === 'hide'
|
|
364
|
-
|
|
365
|
-
: showHeaderOverride === 'show'
|
|
366
|
-
? !!LayoutHeader
|
|
367
|
-
: !!LayoutHeader;
|
|
368
|
-
const shouldShowFooter = showFooterOverride === 'hide'
|
|
369
|
-
? false
|
|
370
|
-
: showFooterOverride === 'show'
|
|
371
|
-
? !!LayoutFooter
|
|
372
|
-
: !!LayoutFooter;
|
|
364
|
+
const shouldShowHeader = showHeaderOverride === 'hide' ? false : showHeaderOverride === 'show' ? !!LayoutHeader : !!LayoutHeader;
|
|
365
|
+
const shouldShowFooter = showFooterOverride === 'hide' ? false : showFooterOverride === 'show' ? !!LayoutFooter : !!LayoutFooter;
|
|
373
366
|
// If we have header or footer to show, wrap in flex container to ensure proper layout
|
|
374
367
|
if (shouldShowHeader || shouldShowFooter) {
|
|
375
368
|
// Calculate content padding for sticky headers (only if header is actually shown)
|
|
@@ -377,17 +370,48 @@ export const IframeWrapper = memo(function IframeWrapper({ children, document: i
|
|
|
377
370
|
flex: 1,
|
|
378
371
|
position: 'relative',
|
|
379
372
|
// Add padding-top for sticky headers so content doesn't render behind them
|
|
380
|
-
...
|
|
373
|
+
...shouldShowHeader && layoutConfig.stickyHeaderHeight && {
|
|
374
|
+
paddingTop: layoutConfig.stickyHeaderHeight
|
|
375
|
+
}
|
|
381
376
|
};
|
|
382
377
|
// Disable pointer events on header/footer in edit mode to prevent accidental clicks
|
|
383
|
-
const headerFooterStyle = isInteractive
|
|
384
|
-
|
|
385
|
-
|
|
378
|
+
const headerFooterStyle = isInteractive ? {} : {
|
|
379
|
+
pointerEvents: 'none'
|
|
380
|
+
};
|
|
386
381
|
// Use key to force re-render when styles finish loading
|
|
387
382
|
// This ensures Tailwind classes are applied after the stylesheet loads
|
|
388
|
-
return
|
|
383
|
+
return /*#__PURE__*/ _jsx(PuckPreviewThemeContext.Provider, {
|
|
384
|
+
value: isDark,
|
|
385
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
386
|
+
style: {
|
|
387
|
+
display: 'flex',
|
|
388
|
+
flexDirection: 'column',
|
|
389
|
+
minHeight: '100vh'
|
|
390
|
+
},
|
|
391
|
+
children: [
|
|
392
|
+
shouldShowHeader && LayoutHeader && /*#__PURE__*/ _jsx("div", {
|
|
393
|
+
style: headerFooterStyle,
|
|
394
|
+
children: /*#__PURE__*/ _jsx(LayoutHeader, {})
|
|
395
|
+
}),
|
|
396
|
+
/*#__PURE__*/ _jsx("div", {
|
|
397
|
+
style: contentStyle,
|
|
398
|
+
children: children
|
|
399
|
+
}),
|
|
400
|
+
shouldShowFooter && LayoutFooter && /*#__PURE__*/ _jsx("div", {
|
|
401
|
+
style: headerFooterStyle,
|
|
402
|
+
children: /*#__PURE__*/ _jsx(LayoutFooter, {})
|
|
403
|
+
})
|
|
404
|
+
]
|
|
405
|
+
}, stylesLoaded ? 'styles-loaded' : 'styles-loading')
|
|
406
|
+
});
|
|
389
407
|
}
|
|
390
408
|
// Use key to force re-render when styles finish loading
|
|
391
|
-
return
|
|
409
|
+
return /*#__PURE__*/ _jsx(PuckPreviewThemeContext.Provider, {
|
|
410
|
+
value: isDark,
|
|
411
|
+
children: /*#__PURE__*/ _jsx("div", {
|
|
412
|
+
children: children
|
|
413
|
+
}, stylesLoaded ? 'styles-loaded' : 'styles-loading')
|
|
414
|
+
});
|
|
392
415
|
});
|
|
416
|
+
|
|
393
417
|
//# sourceMappingURL=IframeWrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IframeWrapper.js","sourceRoot":"","sources":["../../../src/editor/components/IframeWrapper.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/components/IframeWrapper.tsx"],"sourcesContent":["'use client'\n\nimport { memo, useEffect, useMemo, useState, createContext, useContext, type ReactNode, type ComponentType } from 'react'\nimport { createUsePuck } from '@puckeditor/core'\nimport type { LayoutDefinition } from '../../layouts/index.js'\nimport { backgroundValueToCSS, type BackgroundValue } from '../../fields/shared.js'\n\n// Create usePuck hook for accessing editor state\nconst usePuck = createUsePuck()\n\n/**\n * Context for preview dark mode state.\n * - `null` = not inside the editor (use DOM-based theme detection)\n * - `boolean` = inside the editor, indicates current dark mode state\n *\n * This allows Puck components to reactively respond to preview theme changes\n * without polling or MutationObserver hacks.\n */\nexport const PuckPreviewThemeContext = createContext<boolean | null>(null)\n\n/**\n * Hook to get the current preview theme from IframeWrapper context.\n *\n * @returns `null` if not inside the editor, or a `boolean` indicating dark mode state\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const previewTheme = usePuckPreviewTheme()\n *\n * // If in editor, use context; otherwise fall back to DOM\n * const isDark = previewTheme !== null\n * ? previewTheme\n * : document.documentElement.getAttribute('data-theme') === 'dark'\n *\n * return <div className={isDark ? 'dark-styles' : 'light-styles'}>...</div>\n * }\n * ```\n */\nexport const usePuckPreviewTheme = () => useContext(PuckPreviewThemeContext)\n\n/**\n * Layout style configuration for theme-aware preview\n * @deprecated Use LayoutDefinition with editorBackground and editorDarkMode instead\n */\nexport interface LayoutStyle {\n /**\n * CSS background value (color, gradient, etc.)\n */\n background: string\n /**\n * Whether this layout uses dark mode styling\n */\n isDark: boolean\n /**\n * Header component to render above the page content in the editor preview\n */\n header?: ComponentType\n /**\n * Footer component to render below the page content in the editor preview\n */\n footer?: ComponentType\n}\n\n/**\n * Internal layout config used by the iframe wrapper\n */\ninterface InternalLayoutConfig {\n background: string\n isDark: boolean\n header?: ComponentType\n footer?: ComponentType\n stickyHeaderHeight?: number\n}\n\nexport interface IframeWrapperProps {\n children: ReactNode\n /**\n * The iframe document to apply styles to\n */\n document?: Document\n /**\n * Layout definitions - the primary way to configure layouts.\n * Reads header, footer, editorBackground, and editorDarkMode from each layout.\n */\n layouts?: LayoutDefinition[]\n /**\n * Layout style configurations keyed by layout value\n * @deprecated Use `layouts` prop instead\n */\n layoutStyles?: Record<string, LayoutStyle>\n /**\n * Key in root.props to read layout value from\n * @default 'pageLayout'\n */\n layoutKey?: string\n /**\n * Default layout to use if none specified\n * @default 'default'\n */\n defaultLayout?: string\n /**\n * Stylesheet URLs to inject into the iframe.\n * These are merged from PuckConfigProvider and layout-specific settings.\n * Use this to provide frontend CSS (Tailwind, CSS variables, etc.) that\n * header/footer components need for proper styling.\n */\n editorStylesheets?: string[]\n /**\n * Raw CSS to inject into the iframe.\n * Merged from PuckConfigProvider and layout-specific settings.\n * Useful for CSS variables or style overrides.\n */\n editorCss?: string\n /**\n * Override the layout's dark mode setting for the preview.\n * When true, forces dark mode in the preview iframe.\n * When false, forces light mode in the preview iframe.\n * When undefined, uses the layout's editorDarkMode setting.\n */\n previewDarkModeOverride?: boolean\n}\n\n/**\n * Default layout config\n */\nconst DEFAULT_LAYOUT_CONFIG: InternalLayoutConfig = {\n background: '#ffffff',\n isDark: false,\n}\n\n/**\n * Theme-aware iframe wrapper component\n *\n * Uses usePuck to read the pageLayout from root.props and applies\n * appropriate background and theme class to the preview iframe.\n *\n * @example\n * ```tsx\n * // Using layouts (recommended)\n * const overrides = {\n * iframe: ({ children, document }) => (\n * <IframeWrapper\n * document={document}\n * layouts={[\n * { value: 'default', label: 'Default', header: Header, footer: Footer },\n * { value: 'landing', label: 'Landing', editorBackground: '#f8fafc' },\n * ]}\n * >\n * {children}\n * </IframeWrapper>\n * ),\n * }\n * ```\n */\nexport const IframeWrapper = memo(function IframeWrapper({\n children,\n document: iframeDoc,\n layouts,\n layoutStyles,\n layoutKey = 'pageLayout',\n defaultLayout = 'default',\n editorStylesheets,\n editorCss,\n previewDarkModeOverride,\n}: IframeWrapperProps) {\n const appState = usePuck((s) => s.appState)\n\n // Track stylesheet loading state to force re-render when styles are ready\n const [stylesLoaded, setStylesLoaded] = useState(false)\n\n // Check if we're in interactive mode (links should be clickable)\n const isInteractive = appState.ui.previewMode === 'interactive'\n\n // Read layout value and page-level overrides from root props\n const rootProps = appState.data.root?.props as Record<string, unknown> | undefined\n const layoutValue = (rootProps?.[layoutKey] as string) || defaultLayout\n\n // Page-level overrides\n const showHeaderOverride = rootProps?.showHeader as 'default' | 'show' | 'hide' | undefined\n const showFooterOverride = rootProps?.showFooter as 'default' | 'show' | 'hide' | undefined\n const pageBackground = rootProps?.pageBackground as BackgroundValue | null | undefined\n\n // Convert layouts array to config map, or use deprecated layoutStyles\n const layoutConfigMap = useMemo<Record<string, InternalLayoutConfig>>(() => {\n // If layouts prop provided, convert to internal format\n if (layouts) {\n const map: Record<string, InternalLayoutConfig> = {}\n for (const layout of layouts) {\n map[layout.value] = {\n background: layout.editorBackground ?? '#ffffff',\n isDark: layout.editorDarkMode ?? false,\n header: layout.header,\n footer: layout.footer,\n stickyHeaderHeight: layout.stickyHeaderHeight,\n }\n }\n return map\n }\n\n // Fall back to deprecated layoutStyles if provided\n if (layoutStyles) {\n return layoutStyles\n }\n\n // Default fallback\n return { default: DEFAULT_LAYOUT_CONFIG }\n }, [layouts, layoutStyles])\n\n // Get config for current layout\n const layoutConfig = layoutConfigMap[layoutValue] || layoutConfigMap[defaultLayout] || DEFAULT_LAYOUT_CONFIG\n\n // Calculate isDark for context provider (same logic as in useEffect)\n const isDark = previewDarkModeOverride ?? layoutConfig.isDark\n\n useEffect(() => {\n if (!iframeDoc) return\n\n const body = iframeDoc.body\n const html = iframeDoc.documentElement\n\n // Apply background - page-level override takes precedence\n if (pageBackground) {\n const bgStyles = backgroundValueToCSS(pageBackground)\n // Clear previous background styles\n body.style.background = ''\n body.style.backgroundColor = ''\n body.style.backgroundImage = ''\n // Apply new styles\n Object.assign(body.style, bgStyles)\n } else {\n body.style.background = layoutConfig.background\n }\n body.style.backgroundAttachment = 'fixed'\n body.style.minHeight = '100vh'\n\n // Apply theme class and data-theme attribute for dark/light mode\n // Supports both patterns: CSS classes (.dark/.light) and data attributes ([data-theme='dark'])\n // previewDarkModeOverride takes precedence over layoutConfig.isDark\n if (isDark) {\n html.classList.add('dark')\n html.classList.remove('light')\n html.setAttribute('data-theme', 'dark')\n body.style.color = '#ffffff'\n } else {\n html.classList.remove('dark')\n html.classList.add('light')\n html.setAttribute('data-theme', 'light')\n body.style.color = '#1f2937' // gray-800\n }\n\n // Inject external stylesheets (Tailwind CSS, CSS variables, etc.)\n // These provide the styles needed for header/footer components\n if (editorStylesheets && editorStylesheets.length > 0) {\n let pendingLoads = 0\n let loadedCount = 0\n\n const checkAllLoaded = () => {\n loadedCount++\n if (loadedCount >= pendingLoads) {\n // All stylesheets loaded - force browser to recalculate styles\n // This is necessary because the DOM was already rendered before CSS loaded\n setStylesLoaded(true)\n\n // Force a browser repaint after styles load\n // Use multiple techniques to ensure CSS is applied to existing elements\n requestAnimationFrame(() => {\n if (!html || !body) return\n\n // Technique 1: Re-apply theme classes (mimics what dark mode toggle does)\n const isDark = previewDarkModeOverride ?? layoutConfig.isDark\n if (isDark) {\n html.classList.remove('dark')\n void html.offsetHeight // Force reflow\n html.classList.add('dark')\n } else {\n html.classList.remove('light')\n void html.offsetHeight // Force reflow\n html.classList.add('light')\n }\n\n // Technique 2: Toggle visibility to force repaint\n body.style.visibility = 'hidden'\n void body.offsetHeight\n body.style.visibility = ''\n })\n }\n }\n\n // Get origin for resolving relative URLs\n // Puck's iframe may use srcdoc which doesn't have a proper base URL,\n // so relative paths like '/api/puck/styles' won't resolve correctly\n const origin = typeof window !== 'undefined' ? window.location.origin : ''\n\n // Track which stylesheets have been counted to avoid double-counting\n const loadedIndexes = new Set<number>()\n\n const markLoaded = (index: number) => {\n if (loadedIndexes.has(index)) return\n loadedIndexes.add(index)\n checkAllLoaded()\n }\n\n editorStylesheets.forEach((href, index) => {\n const linkId = `puck-editor-stylesheet-${index}`\n const existingLink = iframeDoc.getElementById(linkId) as HTMLLinkElement | null\n\n if (!existingLink) {\n pendingLoads++\n const link = iframeDoc.createElement('link')\n link.id = linkId\n link.rel = 'stylesheet'\n // Resolve relative URLs to absolute URLs for iframe compatibility\n link.href = href.startsWith('/') ? `${origin}${href}` : href\n // Track when stylesheet loads\n link.onload = () => markLoaded(index)\n link.onerror = () => markLoaded(index) // Count errors too to avoid hanging\n iframeDoc.head.appendChild(link)\n\n // Fallback: if onload doesn't fire within 2 seconds, force trigger\n // This handles edge cases with cached resources or browser quirks\n setTimeout(() => {\n if (!loadedIndexes.has(index)) {\n markLoaded(index)\n }\n }, 2000)\n } else if (!stylesLoaded) {\n // Link exists - assume it's already loaded\n pendingLoads++\n // Immediately mark as loaded since it's already in the DOM\n requestAnimationFrame(() => markLoaded(index))\n }\n })\n\n // If no new stylesheets to load, mark as loaded\n if (pendingLoads === 0 && !stylesLoaded) {\n setStylesLoaded(true)\n }\n } else if (!stylesLoaded) {\n // No stylesheets to load\n setStylesLoaded(true)\n }\n\n // Inject custom CSS (CSS variables, overrides, etc.)\n if (editorCss) {\n const CUSTOM_CSS_ID = 'puck-editor-custom-css'\n let style = iframeDoc.getElementById(CUSTOM_CSS_ID) as HTMLStyleElement | null\n if (!style) {\n style = iframeDoc.createElement('style')\n style.id = CUSTOM_CSS_ID\n iframeDoc.head.appendChild(style)\n }\n style.textContent = editorCss\n }\n\n // Inject richtext-output styles into the iframe for proper heading/list rendering\n const RICHTEXT_STYLES_ID = 'puck-richtext-output-styles'\n if (!iframeDoc.getElementById(RICHTEXT_STYLES_ID)) {\n const style = iframeDoc.createElement('style')\n style.id = RICHTEXT_STYLES_ID\n style.textContent = `\n /* Rich Text Output Styles for Puck Preview */\n .richtext-output {\n font-size: 1.125rem;\n line-height: 1.75;\n color: inherit;\n }\n .richtext-output h1 {\n margin-top: 2rem;\n margin-bottom: 1rem;\n font-weight: 700;\n font-size: 2.25rem;\n line-height: 1.2;\n }\n .richtext-output h1:first-child { margin-top: 0; }\n .richtext-output h2 {\n margin-top: 2rem;\n margin-bottom: 1rem;\n font-weight: 700;\n font-size: 1.875rem;\n line-height: 1.25;\n }\n .richtext-output h2:first-child { margin-top: 0; }\n .richtext-output h3 {\n margin-top: 2rem;\n margin-bottom: 1rem;\n font-weight: 700;\n font-size: 1.5rem;\n line-height: 1.3;\n }\n .richtext-output h3:first-child { margin-top: 0; }\n .richtext-output h4 {\n margin-top: 2rem;\n margin-bottom: 1rem;\n font-weight: 700;\n font-size: 1.25rem;\n line-height: 1.35;\n }\n .richtext-output h4:first-child { margin-top: 0; }\n .richtext-output p {\n margin-bottom: 1.25rem;\n }\n .richtext-output p:last-child { margin-bottom: 0; }\n .richtext-output ul {\n margin-bottom: 1.25rem;\n padding-left: 2rem;\n list-style-type: disc !important;\n }\n .richtext-output ol {\n margin-bottom: 1.25rem;\n padding-left: 2rem;\n list-style-type: decimal !important;\n }\n .richtext-output li {\n margin-bottom: 0.5rem;\n display: list-item !important;\n }\n .richtext-output li::marker {\n color: currentColor;\n }\n .richtext-output ul ul,\n .richtext-output ol ul {\n list-style-type: circle !important;\n margin-top: 0.5rem;\n margin-bottom: 0;\n }\n .richtext-output ul ul ul,\n .richtext-output ol ul ul {\n list-style-type: square !important;\n }\n .richtext-output ol ol,\n .richtext-output ul ol {\n list-style-type: lower-alpha !important;\n margin-top: 0.5rem;\n margin-bottom: 0;\n }\n .richtext-output blockquote {\n margin: 1.5rem 0;\n padding-left: 1.5rem;\n border-left: 4px solid #e5e7eb;\n font-style: italic;\n }\n .richtext-output a {\n color: #2563eb;\n text-decoration: underline;\n }\n .richtext-output a:hover { opacity: 0.8; }\n .richtext-output code {\n background-color: #f3f4f6;\n padding: 0.125rem 0.25rem;\n border-radius: 0.25rem;\n font-size: 0.875rem;\n }\n .richtext-output mark {\n background-color: #fef08a;\n padding: 0.125rem 0.25rem;\n border-radius: 0.125rem;\n }\n .richtext-output s,\n .richtext-output strike {\n text-decoration: line-through;\n }\n @media (max-width: 768px) {\n .richtext-output { font-size: 1rem; }\n .richtext-output h1 { font-size: 1.875rem; }\n .richtext-output h2 { font-size: 1.5rem; }\n .richtext-output h3 { font-size: 1.25rem; }\n }\n `\n iframeDoc.head.appendChild(style)\n }\n }, [iframeDoc, layoutConfig, pageBackground, editorStylesheets, editorCss, stylesLoaded, previewDarkModeOverride])\n\n // Get header/footer components from layout config\n const LayoutHeader = layoutConfig.header\n const LayoutFooter = layoutConfig.footer\n\n // Determine header/footer visibility based on page-level overrides\n // 'default' or undefined = use layout setting\n // 'show' = always show (even if layout doesn't have one - use layout's component)\n // 'hide' = always hide\n const shouldShowHeader =\n showHeaderOverride === 'hide'\n ? false\n : showHeaderOverride === 'show'\n ? !!LayoutHeader\n : !!LayoutHeader\n\n const shouldShowFooter =\n showFooterOverride === 'hide'\n ? false\n : showFooterOverride === 'show'\n ? !!LayoutFooter\n : !!LayoutFooter\n\n // If we have header or footer to show, wrap in flex container to ensure proper layout\n if (shouldShowHeader || shouldShowFooter) {\n // Calculate content padding for sticky headers (only if header is actually shown)\n const contentStyle: React.CSSProperties = {\n flex: 1,\n position: 'relative',\n // Add padding-top for sticky headers so content doesn't render behind them\n ...(shouldShowHeader && layoutConfig.stickyHeaderHeight && { paddingTop: layoutConfig.stickyHeaderHeight }),\n }\n\n // Disable pointer events on header/footer in edit mode to prevent accidental clicks\n const headerFooterStyle: React.CSSProperties = isInteractive\n ? {}\n : { pointerEvents: 'none' }\n\n // Use key to force re-render when styles finish loading\n // This ensures Tailwind classes are applied after the stylesheet loads\n return (\n <PuckPreviewThemeContext.Provider value={isDark}>\n <div\n key={stylesLoaded ? 'styles-loaded' : 'styles-loading'}\n style={{ display: 'flex', flexDirection: 'column', minHeight: '100vh' }}\n >\n {shouldShowHeader && LayoutHeader && (\n <div style={headerFooterStyle}>\n <LayoutHeader />\n </div>\n )}\n <div style={contentStyle}>{children}</div>\n {shouldShowFooter && LayoutFooter && (\n <div style={headerFooterStyle}>\n <LayoutFooter />\n </div>\n )}\n </div>\n </PuckPreviewThemeContext.Provider>\n )\n }\n\n // Use key to force re-render when styles finish loading\n return (\n <PuckPreviewThemeContext.Provider value={isDark}>\n <div key={stylesLoaded ? 'styles-loaded' : 'styles-loading'}>\n {children}\n </div>\n </PuckPreviewThemeContext.Provider>\n )\n})\n"],"names":["memo","useEffect","useMemo","useState","createContext","useContext","createUsePuck","backgroundValueToCSS","usePuck","PuckPreviewThemeContext","usePuckPreviewTheme","DEFAULT_LAYOUT_CONFIG","background","isDark","IframeWrapper","children","document","iframeDoc","layouts","layoutStyles","layoutKey","defaultLayout","editorStylesheets","editorCss","previewDarkModeOverride","appState","s","stylesLoaded","setStylesLoaded","isInteractive","ui","previewMode","rootProps","data","root","props","layoutValue","showHeaderOverride","showHeader","showFooterOverride","showFooter","pageBackground","layoutConfigMap","map","layout","value","editorBackground","editorDarkMode","header","footer","stickyHeaderHeight","default","layoutConfig","body","html","documentElement","bgStyles","style","backgroundColor","backgroundImage","Object","assign","backgroundAttachment","minHeight","classList","add","remove","setAttribute","color","length","pendingLoads","loadedCount","checkAllLoaded","requestAnimationFrame","offsetHeight","visibility","origin","window","location","loadedIndexes","Set","markLoaded","index","has","forEach","href","linkId","existingLink","getElementById","link","createElement","id","rel","startsWith","onload","onerror","head","appendChild","setTimeout","CUSTOM_CSS_ID","textContent","RICHTEXT_STYLES_ID","LayoutHeader","LayoutFooter","shouldShowHeader","shouldShowFooter","contentStyle","flex","position","paddingTop","headerFooterStyle","pointerEvents","Provider","div","display","flexDirection"],"mappings":"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"}
|
|
@@ -10,5 +10,5 @@ export interface LoadingStateProps {
|
|
|
10
10
|
*
|
|
11
11
|
* Used as the fallback for dynamic import with ssr: false
|
|
12
12
|
*/
|
|
13
|
-
export declare function LoadingState({ message }: LoadingStateProps): import("react
|
|
13
|
+
export declare function LoadingState({ message }: LoadingStateProps): import("react").JSX.Element;
|
|
14
14
|
//# sourceMappingURL=LoadingState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingState.d.ts","sourceRoot":"","sources":["../../../src/editor/components/LoadingState.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAA6B,EAAE,EAAE,iBAAiB
|
|
1
|
+
{"version":3,"file":"LoadingState.d.ts","sourceRoot":"","sources":["../../../src/editor/components/LoadingState.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAA6B,EAAE,EAAE,iBAAiB,+BAShF"}
|
|
@@ -5,8 +5,22 @@ import { Loader2 } from 'lucide-react';
|
|
|
5
5
|
* Loading indicator shown while the Puck editor is being loaded
|
|
6
6
|
*
|
|
7
7
|
* Used as the fallback for dynamic import with ssr: false
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
*/ export function LoadingState({ message = 'Loading editor...' }) {
|
|
9
|
+
return /*#__PURE__*/ _jsx("div", {
|
|
10
|
+
className: "h-screen flex items-center justify-center bg-gray-50",
|
|
11
|
+
children: /*#__PURE__*/ _jsxs("div", {
|
|
12
|
+
className: "text-center",
|
|
13
|
+
children: [
|
|
14
|
+
/*#__PURE__*/ _jsx(Loader2, {
|
|
15
|
+
className: "h-8 w-8 animate-spin text-gray-600 mx-auto mb-4"
|
|
16
|
+
}),
|
|
17
|
+
/*#__PURE__*/ _jsx("p", {
|
|
18
|
+
className: "text-gray-600",
|
|
19
|
+
children: message
|
|
20
|
+
})
|
|
21
|
+
]
|
|
22
|
+
})
|
|
23
|
+
});
|
|
11
24
|
}
|
|
25
|
+
|
|
12
26
|
//# sourceMappingURL=LoadingState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/editor/components/LoadingState.tsx"],"sourcesContent":["'use client'\n\nimport { Loader2 } from 'lucide-react'\n\nexport interface LoadingStateProps {\n /**\n * Loading message to display\n * @default 'Loading editor...'\n */\n message?: string\n}\n\n/**\n * Loading indicator shown while the Puck editor is being loaded\n *\n * Used as the fallback for dynamic import with ssr: false\n */\nexport function LoadingState({ message = 'Loading editor...' }: LoadingStateProps) {\n return (\n <div className=\"h-screen flex items-center justify-center bg-gray-50\">\n <div className=\"text-center\">\n <Loader2 className=\"h-8 w-8 animate-spin text-gray-600 mx-auto mb-4\" />\n <p className=\"text-gray-600\">{message}</p>\n </div>\n </div>\n )\n}\n"],"names":["Loader2","LoadingState","message","div","className","p"],"mappings":"AAAA;;AAEA,SAASA,OAAO,QAAQ,eAAc;AAUtC;;;;CAIC,GACD,OAAO,SAASC,aAAa,EAAEC,UAAU,mBAAmB,EAAqB;IAC/E,qBACE,KAACC;QAAIC,WAAU;kBACb,cAAA,MAACD;YAAIC,WAAU;;8BACb,KAACJ;oBAAQI,WAAU;;8BACnB,KAACC;oBAAED,WAAU;8BAAiBF;;;;;AAItC"}
|