@brunoalz/smartgesti-site-editor 0.2.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor/BlockSelector.d.ts +2 -1
- package/dist/editor/BlockSelector.d.ts.map +1 -1
- package/dist/editor/BlockSelector.js +55 -64
- package/dist/editor/BlockSelector.js.map +1 -1
- package/dist/editor/LandingPageEditor.d.ts +19 -0
- package/dist/editor/LandingPageEditor.d.ts.map +1 -0
- package/dist/editor/LandingPageEditor.js +239 -0
- package/dist/editor/LandingPageEditor.js.map +1 -0
- package/dist/editor/PageTabBar.d.ts +4 -1
- package/dist/editor/PageTabBar.d.ts.map +1 -1
- package/dist/editor/PageTabBar.js +179 -41
- package/dist/editor/PageTabBar.js.map +1 -1
- package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts +5 -3
- package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/BlockPropertyEditor.js +60 -113
- package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
- package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.d.ts +3 -1
- package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.js +47 -33
- package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.js.map +1 -1
- package/dist/editor/PropertyEditor/PropertyGroup.d.ts +1 -1
- package/dist/editor/PropertyEditor/PropertyGroup.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.d.ts +2 -1
- package/dist/editor/PropertyEditor/VariationSelector.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.js +35 -31
- package/dist/editor/PropertyEditor/VariationSelector.js.map +1 -1
- package/dist/editor/PropertyEditor/index.js +30 -28
- package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.d.ts +16 -0
- package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.d.ts.map +1 -0
- package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.js +170 -0
- package/dist/editor/PropertyEditor/inputs/CarouselImagesInput.js.map +1 -0
- package/dist/editor/PropertyEditor/inputs/ImageGridInput.d.ts +1 -1
- package/dist/editor/PropertyEditor/inputs/ImageGridInput.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/inputs/ImageGridInput.js +148 -121
- package/dist/editor/PropertyEditor/inputs/ImageGridInput.js.map +1 -1
- package/dist/editor/PropertyEditor/inputs/ImageInput.d.ts.map +1 -0
- package/dist/{components → editor/PropertyEditor}/inputs/ImageInput.js +41 -39
- package/dist/editor/PropertyEditor/inputs/ImageInput.js.map +1 -0
- package/dist/editor/PropertyEditor/inputs/TypographyInput.js +41 -44
- package/dist/editor/PropertyEditor/inputs/TypographyInput.js.map +1 -1
- package/dist/editor/PropertyEditor/inputs/index.d.ts +2 -0
- package/dist/editor/PropertyEditor/inputs/index.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/renderPropertyInput.d.ts +1 -1
- package/dist/editor/PropertyEditor/renderPropertyInput.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/renderPropertyInput.js +167 -139
- package/dist/editor/PropertyEditor/renderPropertyInput.js.map +1 -1
- package/dist/editor/components/CenterPanel.d.ts +13 -4
- package/dist/editor/components/CenterPanel.d.ts.map +1 -1
- package/dist/editor/components/CenterPanel.js +40 -31
- package/dist/editor/components/CenterPanel.js.map +1 -1
- package/dist/editor/components/LeftPanel.d.ts +2 -1
- package/dist/editor/components/LeftPanel.d.ts.map +1 -1
- package/dist/editor/components/LeftPanel.js +13 -12
- package/dist/editor/components/LeftPanel.js.map +1 -1
- package/dist/editor/components/LoadingSpinner.d.ts.map +1 -0
- package/dist/editor/components/LoadingSpinner.js.map +1 -0
- package/dist/editor/components/RightPanel.d.ts +8 -2
- package/dist/editor/components/RightPanel.d.ts.map +1 -1
- package/dist/editor/components/RightPanel.js +24 -19
- package/dist/editor/components/RightPanel.js.map +1 -1
- package/dist/editor/components/Toolbar.d.ts +5 -1
- package/dist/editor/components/Toolbar.d.ts.map +1 -1
- package/dist/editor/components/Toolbar.js +56 -40
- package/dist/editor/components/Toolbar.js.map +1 -1
- package/dist/engine/export/exportHtml.d.ts +10 -5
- package/dist/engine/export/exportHtml.d.ts.map +1 -1
- package/dist/engine/export/exportHtml.js +38 -40
- package/dist/engine/export/exportHtml.js.map +1 -1
- package/dist/engine/export/exporters/content/HeadingExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/content/HeadingExporter.js +6 -6
- package/dist/engine/export/exporters/content/HeadingExporter.js.map +1 -1
- package/dist/engine/export/exporters/content/LinkExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/content/LinkExporter.js +6 -6
- package/dist/engine/export/exporters/content/LinkExporter.js.map +1 -1
- package/dist/engine/export/exporters/content/TextExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/content/TextExporter.js +7 -7
- package/dist/engine/export/exporters/content/TextExporter.js.map +1 -1
- package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts +6 -0
- package/dist/engine/export/exporters/sections/BlogPostExporters.d.ts.map +1 -0
- package/dist/engine/export/exporters/sections/BlogPostExporters.js +101 -0
- package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -0
- package/dist/engine/export/exporters/sections/FooterExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/sections/FooterExporter.js +33 -40
- package/dist/engine/export/exporters/sections/FooterExporter.js.map +1 -1
- package/dist/engine/export/exporters/sections/HeroExporter.d.ts.map +1 -1
- package/dist/engine/export/exporters/sections/HeroExporter.js +222 -218
- package/dist/engine/export/exporters/sections/HeroExporter.js.map +1 -1
- package/dist/engine/export/exporters/sections/MarketingExporters.js +88 -88
- package/dist/engine/export/exporters/sections/MarketingExporters.js.map +1 -1
- package/dist/engine/export/exporters/sections/NavbarExporter.js +34 -34
- package/dist/engine/export/exporters/sections/NavbarExporter.js.map +1 -1
- package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
- package/dist/engine/export/exporters/sections/index.js +29 -22
- package/dist/engine/export/exporters/sections/index.js.map +1 -1
- package/dist/engine/export/sanitizeHtml.d.ts.map +1 -1
- package/dist/engine/export/sanitizeHtml.js +65 -18
- package/dist/engine/export/sanitizeHtml.js.map +1 -1
- package/dist/engine/export/styleResolver.d.ts.map +1 -1
- package/dist/engine/export/styleResolver.js +33 -33
- package/dist/engine/export/styleResolver.js.map +1 -1
- package/dist/engine/generators/generateLandingPage.d.ts +4 -4
- package/dist/engine/generators/generateLandingPage.d.ts.map +1 -1
- package/dist/engine/generators/generateLandingPage.js.map +1 -1
- package/dist/engine/index.d.ts +6 -3
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +99 -89
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/patch/PatchBuilder.d.ts +11 -11
- package/dist/engine/patch/PatchBuilder.d.ts.map +1 -1
- package/dist/engine/patch/PatchBuilder.js +92 -93
- package/dist/engine/patch/PatchBuilder.js.map +1 -1
- package/dist/engine/patch/applyPatch.js.map +1 -1
- package/dist/engine/plugins/builtin/blog/index.d.ts +3 -0
- package/dist/engine/plugins/builtin/blog/index.d.ts.map +1 -0
- package/dist/engine/plugins/builtin/blog/manifest.d.ts +3 -0
- package/dist/engine/plugins/builtin/blog/manifest.d.ts.map +1 -0
- package/dist/engine/plugins/builtin/blog/manifest.js +273 -0
- package/dist/engine/plugins/builtin/blog/manifest.js.map +1 -0
- package/dist/engine/plugins/builtin/blog/mockContentProvider.d.ts +7 -0
- package/dist/engine/plugins/builtin/blog/mockContentProvider.d.ts.map +1 -0
- package/dist/engine/plugins/builtin/blog/mockContentProvider.js +135 -0
- package/dist/engine/plugins/builtin/blog/mockContentProvider.js.map +1 -0
- package/dist/engine/plugins/contentHydration.d.ts +17 -0
- package/dist/engine/plugins/contentHydration.d.ts.map +1 -0
- package/dist/engine/plugins/contentHydration.js +121 -0
- package/dist/engine/plugins/contentHydration.js.map +1 -0
- package/dist/engine/plugins/dynamicPageResolver.d.ts +25 -0
- package/dist/engine/plugins/dynamicPageResolver.d.ts.map +1 -0
- package/dist/engine/plugins/dynamicPageResolver.js +32 -0
- package/dist/engine/plugins/dynamicPageResolver.js.map +1 -0
- package/dist/engine/plugins/index.d.ts +11 -0
- package/dist/engine/plugins/index.d.ts.map +1 -0
- package/dist/engine/plugins/pluginRegistry.d.ts +37 -0
- package/dist/engine/plugins/pluginRegistry.d.ts.map +1 -0
- package/dist/engine/plugins/pluginRegistry.js +134 -0
- package/dist/engine/plugins/pluginRegistry.js.map +1 -0
- package/dist/engine/plugins/types.d.ts +180 -0
- package/dist/engine/plugins/types.d.ts.map +1 -0
- package/dist/engine/presets/heroVariations.d.ts +5 -0
- package/dist/engine/presets/heroVariations.d.ts.map +1 -1
- package/dist/engine/presets/heroVariations.js +50 -6
- package/dist/engine/presets/heroVariations.js.map +1 -1
- package/dist/engine/preview/Preview.d.ts +19 -0
- package/dist/engine/preview/Preview.d.ts.map +1 -0
- package/dist/engine/preview/Preview.js +418 -0
- package/dist/engine/preview/Preview.js.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostCard.d.ts +3 -0
- package/dist/engine/registry/blocks/sections/blogPostCard.d.ts.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostCard.js +53 -0
- package/dist/engine/registry/blocks/sections/blogPostCard.js.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostDetail.d.ts +3 -0
- package/dist/engine/registry/blocks/sections/blogPostDetail.d.ts.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostDetail.js +49 -0
- package/dist/engine/registry/blocks/sections/blogPostDetail.js.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostGrid.d.ts +3 -0
- package/dist/engine/registry/blocks/sections/blogPostGrid.d.ts.map +1 -0
- package/dist/engine/registry/blocks/sections/blogPostGrid.js +89 -0
- package/dist/engine/registry/blocks/sections/blogPostGrid.js.map +1 -0
- package/dist/engine/registry/blocks/sections/hero.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/hero.js +67 -14
- package/dist/engine/registry/blocks/sections/hero.js.map +1 -1
- package/dist/engine/registry/blocks/sections/index.d.ts +3 -0
- package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/navbar.d.ts.map +1 -1
- package/dist/engine/registry/blocks/sections/navbar.js +2 -1
- package/dist/engine/registry/blocks/sections/navbar.js.map +1 -1
- package/dist/engine/registry/registry.d.ts.map +1 -1
- package/dist/engine/registry/registry.js +39 -36
- package/dist/engine/registry/registry.js.map +1 -1
- package/dist/engine/registry/types.d.ts +17 -13
- package/dist/engine/registry/types.d.ts.map +1 -1
- package/dist/engine/render/renderNodeImpl.js +85 -85
- package/dist/engine/render/renderNodeImpl.js.map +1 -1
- package/dist/engine/render/renderPage.d.ts +3 -3
- package/dist/engine/render/renderPage.d.ts.map +1 -1
- package/dist/engine/render/renderPage.js.map +1 -1
- package/dist/engine/render/renderers/composition/CardRenderer.js +4 -4
- package/dist/engine/render/renderers/content/LinkRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/content/LinkRenderer.js +41 -16
- package/dist/engine/render/renderers/content/LinkRenderer.js.map +1 -1
- package/dist/engine/render/renderers/content/SocialLinksRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/content/SocialLinksRenderer.js +16 -23
- package/dist/engine/render/renderers/content/SocialLinksRenderer.js.map +1 -1
- package/dist/engine/render/renderers/forms/FormRenderer.js +6 -6
- package/dist/engine/render/renderers/layout/GridRenderer.js +3 -3
- package/dist/engine/render/renderers/sections/BlogPostCardRenderer.d.ts +3 -0
- package/dist/engine/render/renderers/sections/BlogPostCardRenderer.d.ts.map +1 -0
- package/dist/engine/render/renderers/sections/BlogPostCardRenderer.js +199 -0
- package/dist/engine/render/renderers/sections/BlogPostCardRenderer.js.map +1 -0
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.d.ts +3 -0
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.d.ts.map +1 -0
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js +293 -0
- package/dist/engine/render/renderers/sections/BlogPostDetailRenderer.js.map +1 -0
- package/dist/engine/render/renderers/sections/BlogPostGridRenderer.d.ts +3 -0
- package/dist/engine/render/renderers/sections/BlogPostGridRenderer.d.ts.map +1 -0
- package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js +101 -0
- package/dist/engine/render/renderers/sections/BlogPostGridRenderer.js.map +1 -0
- package/dist/engine/render/renderers/sections/CtaRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/CtaRenderer.js +33 -31
- package/dist/engine/render/renderers/sections/CtaRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/FaqItemRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/FaqItemRenderer.js +7 -6
- package/dist/engine/render/renderers/sections/FaqItemRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/FaqRenderer.js +7 -7
- package/dist/engine/render/renderers/sections/FaqRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/FeatureGridRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/FeatureGridRenderer.js +19 -18
- package/dist/engine/render/renderers/sections/FeatureGridRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/FeatureRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/FeatureRenderer.js +5 -4
- package/dist/engine/render/renderers/sections/FeatureRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/FooterRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/FooterRenderer.js +25 -30
- package/dist/engine/render/renderers/sections/FooterRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/HeroRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/HeroRenderer.js +293 -229
- package/dist/engine/render/renderers/sections/HeroRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/NavbarRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/NavbarRenderer.js +23 -22
- package/dist/engine/render/renderers/sections/NavbarRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/PricingCardRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/PricingCardRenderer.js +7 -6
- package/dist/engine/render/renderers/sections/PricingCardRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/PricingRenderer.js +9 -9
- package/dist/engine/render/renderers/sections/PricingRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/TestimonialGridRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/TestimonialGridRenderer.js +17 -16
- package/dist/engine/render/renderers/sections/TestimonialGridRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/TestimonialRenderer.d.ts.map +1 -1
- package/dist/engine/render/renderers/sections/TestimonialRenderer.js +11 -10
- package/dist/engine/render/renderers/sections/TestimonialRenderer.js.map +1 -1
- package/dist/engine/render/renderers/sections/index.js +24 -18
- package/dist/engine/render/renderers/sections/index.js.map +1 -1
- package/dist/engine/schema/siteDocument.d.ts +118 -7
- package/dist/engine/schema/siteDocument.d.ts.map +1 -1
- package/dist/engine/schema/siteDocument.js +1 -1
- package/dist/engine/schema/siteDocument.js.map +1 -1
- package/dist/engine/schema/themeTokens.d.ts +1 -1
- package/dist/engine/schema/themeTokens.js.map +1 -1
- package/dist/engine/shared/carouselAnimation.d.ts +20 -0
- package/dist/engine/shared/carouselAnimation.d.ts.map +1 -0
- package/dist/engine/shared/carouselAnimation.js +62 -0
- package/dist/engine/shared/carouselAnimation.js.map +1 -0
- package/dist/engine/shared/imageGrid/presets.js +4 -12
- package/dist/engine/shared/imageGrid/presets.js.map +1 -1
- package/dist/engine/shared/imageGrid/types.d.ts +2 -0
- package/dist/engine/shared/imageGrid/types.d.ts.map +1 -1
- package/dist/engine/shared/layoutConstants.d.ts +13 -0
- package/dist/engine/shared/layoutConstants.d.ts.map +1 -0
- package/dist/engine/shared/layoutConstants.js +14 -0
- package/dist/engine/shared/layoutConstants.js.map +1 -0
- package/dist/engine/shared/shadowConstants.d.ts +5 -0
- package/dist/engine/shared/shadowConstants.d.ts.map +1 -0
- package/dist/engine/shared/shadowConstants.js +11 -0
- package/dist/engine/shared/shadowConstants.js.map +1 -0
- package/dist/engine/shared/showWhen.d.ts +44 -0
- package/dist/engine/shared/showWhen.d.ts.map +1 -0
- package/dist/engine/shared/showWhen.js +33 -0
- package/dist/engine/shared/showWhen.js.map +1 -0
- package/dist/engine/shared/socialIcons.d.ts +6 -0
- package/dist/engine/shared/socialIcons.d.ts.map +1 -0
- package/dist/engine/shared/socialIcons.js +13 -0
- package/dist/engine/shared/socialIcons.js.map +1 -0
- package/dist/engine/shared/typeGuards.d.ts +11 -0
- package/dist/engine/shared/typeGuards.d.ts.map +1 -0
- package/dist/hooks/useEditorState.d.ts +8 -5
- package/dist/hooks/useEditorState.d.ts.map +1 -1
- package/dist/hooks/useEditorState.js +150 -194
- package/dist/hooks/useEditorState.js.map +1 -1
- package/dist/hooks/useNavbarAutoSync.d.ts +2 -2
- package/dist/hooks/useNavbarAutoSync.d.ts.map +1 -1
- package/dist/hooks/useNavbarAutoSync.js.map +1 -1
- package/dist/index.d.ts +60 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +109 -124
- package/dist/index.js.map +1 -1
- package/dist/shared/index.d.ts +2 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/schema.d.ts +4 -4
- package/dist/shared/schema.d.ts.map +1 -1
- package/dist/shared/schema.js.map +1 -1
- package/dist/shared/templates/escola-blog.d.ts +3 -0
- package/dist/shared/templates/escola-blog.d.ts.map +1 -0
- package/dist/shared/templates/escola-blog.js +160 -0
- package/dist/shared/templates/escola-blog.js.map +1 -0
- package/dist/shared/templates/escola-edvi.d.ts +2 -2
- package/dist/shared/templates/escola-edvi.d.ts.map +1 -1
- package/dist/shared/templates/escola-edvi.js.map +1 -1
- package/dist/shared/templates/escola-premium.d.ts +2 -2
- package/dist/shared/templates/escola-premium.d.ts.map +1 -1
- package/dist/shared/templates/escola-premium.js.map +1 -1
- package/dist/shared/templates/escola-zilom.d.ts +2 -2
- package/dist/shared/templates/escola-zilom.d.ts.map +1 -1
- package/dist/shared/templates/escola-zilom.js.map +1 -1
- package/dist/shared/templates/index.d.ts +7 -5
- package/dist/shared/templates/index.d.ts.map +1 -1
- package/dist/shared/templates/index.js +30 -12
- package/dist/shared/templates/index.js.map +1 -1
- package/dist/shared/validators.d.ts +3 -3
- package/dist/shared/validators.d.ts.map +1 -1
- package/dist/shared/validators.js.map +1 -1
- package/dist/site/BlockRenderer.d.ts +1 -1
- package/dist/site/BlockRenderer.d.ts.map +1 -1
- package/dist/site/BlockRenderer.js +22 -26
- package/dist/site/BlockRenderer.js.map +1 -1
- package/dist/site/blocks/Button.js +15 -17
- package/dist/site/blocks/Button.js.map +1 -1
- package/dist/site/blocks/Card.js +13 -15
- package/dist/site/blocks/Card.js.map +1 -1
- package/dist/site/blocks/Features.js +15 -17
- package/dist/site/blocks/Features.js.map +1 -1
- package/dist/site/blocks/Footer.js +10 -12
- package/dist/site/blocks/Footer.js.map +1 -1
- package/dist/site/blocks/Hero.js +12 -14
- package/dist/site/blocks/Hero.js.map +1 -1
- package/dist/site/blocks/Navbar.js +13 -15
- package/dist/site/blocks/Navbar.js.map +1 -1
- package/dist/site/blocks/Section.js +9 -11
- package/dist/site/blocks/Section.js.map +1 -1
- package/dist/site/blocks/SectionHeader.js +9 -11
- package/dist/site/blocks/SectionHeader.js.map +1 -1
- package/dist/site/blocks/SiteRoot.js +9 -12
- package/dist/site/blocks/SiteRoot.js.map +1 -1
- package/dist/site/index.js +73 -73
- package/dist/styles/site/sections.css.d.ts +1 -1
- package/dist/utils/blockUtils.d.ts +2 -2
- package/dist/utils/blockUtils.d.ts.map +1 -1
- package/dist/utils/blockUtils.js.map +1 -1
- package/dist/utils/changeDetector.d.ts +3 -2
- package/dist/utils/changeDetector.d.ts.map +1 -1
- package/dist/utils/changeDetector.js +39 -39
- package/dist/utils/changeDetector.js.map +1 -1
- package/dist/utils/cn.js +2 -2
- package/dist/utils/dataURLUtils.d.ts +24 -0
- package/dist/utils/dataURLUtils.d.ts.map +1 -0
- package/dist/utils/dataURLUtils.js +47 -0
- package/dist/utils/dataURLUtils.js.map +1 -0
- package/dist/utils/documentHash.d.ts +2 -2
- package/dist/utils/documentHash.d.ts.map +1 -1
- package/dist/utils/documentHash.js +8 -7
- package/dist/utils/documentHash.js.map +1 -1
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +13 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/navbarSync.d.ts +3 -3
- package/dist/utils/navbarSync.d.ts.map +1 -1
- package/dist/utils/navbarSync.js +25 -24
- package/dist/utils/navbarSync.js.map +1 -1
- package/dist/utils/sharedTemplateToEngine.d.ts +7 -8
- package/dist/utils/sharedTemplateToEngine.d.ts.map +1 -1
- package/dist/utils/sharedTemplateToEngine.js +14 -87
- package/dist/utils/sharedTemplateToEngine.js.map +1 -1
- package/dist/viewer/LandingPageViewer.d.ts +32 -0
- package/dist/viewer/LandingPageViewer.d.ts.map +1 -0
- package/dist/viewer/LandingPageViewer.js +300 -0
- package/dist/viewer/LandingPageViewer.js.map +1 -0
- package/package.json +10 -5
- package/dist/components/ComponentPalette/definitions.d.ts +0 -3
- package/dist/components/ComponentPalette/definitions.d.ts.map +0 -1
- package/dist/components/ComponentPalette/definitions.js +0 -206
- package/dist/components/ComponentPalette/definitions.js.map +0 -1
- package/dist/components/ComponentPalette/index.d.ts +0 -7
- package/dist/components/ComponentPalette/index.d.ts.map +0 -1
- package/dist/components/ComponentPalette/index.js +0 -86
- package/dist/components/ComponentPalette/index.js.map +0 -1
- package/dist/components/LoadingSpinner.d.ts.map +0 -1
- package/dist/components/LoadingSpinner.js.map +0 -1
- package/dist/components/PreviewPanel/index.d.ts +0 -12
- package/dist/components/PreviewPanel/index.d.ts.map +0 -1
- package/dist/components/PreviewPanel/index.js +0 -140
- package/dist/components/PreviewPanel/index.js.map +0 -1
- package/dist/components/PropertyPanel/index.d.ts +0 -8
- package/dist/components/PropertyPanel/index.d.ts.map +0 -1
- package/dist/components/PropertyPanel/index.js +0 -223
- package/dist/components/PropertyPanel/index.js.map +0 -1
- package/dist/components/SiteEditor/index.d.ts +0 -3
- package/dist/components/SiteEditor/index.d.ts.map +0 -1
- package/dist/components/SiteEditor/index.js +0 -251
- package/dist/components/SiteEditor/index.js.map +0 -1
- package/dist/components/SiteViewer/index.d.ts +0 -3
- package/dist/components/SiteViewer/index.d.ts.map +0 -1
- package/dist/components/SiteViewer/index.js +0 -55
- package/dist/components/SiteViewer/index.js.map +0 -1
- package/dist/components/TemplateSelector/index.d.ts +0 -7
- package/dist/components/TemplateSelector/index.d.ts.map +0 -1
- package/dist/components/TemplateSelector/index.js +0 -109
- package/dist/components/TemplateSelector/index.js.map +0 -1
- package/dist/components/Toolbar/index.d.ts +0 -15
- package/dist/components/Toolbar/index.d.ts.map +0 -1
- package/dist/components/Toolbar/index.js +0 -113
- package/dist/components/Toolbar/index.js.map +0 -1
- package/dist/components/editors/PaletteSelector.d.ts +0 -14
- package/dist/components/editors/PaletteSelector.d.ts.map +0 -1
- package/dist/components/editors/PaletteSelector.js +0 -175
- package/dist/components/editors/PaletteSelector.js.map +0 -1
- package/dist/components/effects/SectionGlow.d.ts +0 -12
- package/dist/components/effects/SectionGlow.d.ts.map +0 -1
- package/dist/components/effects/SectionGlow.js +0 -139
- package/dist/components/effects/SectionGlow.js.map +0 -1
- package/dist/components/inputs/CheckboxInput.d.ts +0 -3
- package/dist/components/inputs/CheckboxInput.d.ts.map +0 -1
- package/dist/components/inputs/CheckboxInput.js +0 -46
- package/dist/components/inputs/CheckboxInput.js.map +0 -1
- package/dist/components/inputs/ColorInput.d.ts +0 -7
- package/dist/components/inputs/ColorInput.d.ts.map +0 -1
- package/dist/components/inputs/ColorInput.js +0 -180
- package/dist/components/inputs/ColorInput.js.map +0 -1
- package/dist/components/inputs/GradientInput.d.ts +0 -7
- package/dist/components/inputs/GradientInput.d.ts.map +0 -1
- package/dist/components/inputs/GradientInput.js +0 -78
- package/dist/components/inputs/GradientInput.js.map +0 -1
- package/dist/components/inputs/ImageInput.d.ts.map +0 -1
- package/dist/components/inputs/ImageInput.js.map +0 -1
- package/dist/components/inputs/SelectInput.d.ts +0 -7
- package/dist/components/inputs/SelectInput.d.ts.map +0 -1
- package/dist/components/inputs/SelectInput.js +0 -97
- package/dist/components/inputs/SelectInput.js.map +0 -1
- package/dist/components/inputs/SliderInput.d.ts +0 -8
- package/dist/components/inputs/SliderInput.d.ts.map +0 -1
- package/dist/components/inputs/SliderInput.js +0 -77
- package/dist/components/inputs/SliderInput.js.map +0 -1
- package/dist/components/inputs/index.d.ts +0 -11
- package/dist/components/inputs/index.d.ts.map +0 -1
- package/dist/components/inputs/types.d.ts +0 -48
- package/dist/components/inputs/types.d.ts.map +0 -1
- package/dist/components/inputs/types.js +0 -9
- package/dist/components/inputs/types.js.map +0 -1
- package/dist/components/renderers/ComponentRenderer.d.ts +0 -8
- package/dist/components/renderers/ComponentRenderer.d.ts.map +0 -1
- package/dist/components/renderers/ComponentRenderer.js +0 -13
- package/dist/components/renderers/ComponentRenderer.js.map +0 -1
- package/dist/components/renderers/HeroRenderer.d.ts +0 -3
- package/dist/components/renderers/HeroRenderer.d.ts.map +0 -1
- package/dist/components/renderers/HeroRenderer.js +0 -10
- package/dist/components/renderers/HeroRenderer.js.map +0 -1
- package/dist/components/renderers/hero/HeroBanner.d.ts +0 -3
- package/dist/components/renderers/hero/HeroBanner.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroBanner.js +0 -122
- package/dist/components/renderers/hero/HeroBanner.js.map +0 -1
- package/dist/components/renderers/hero/HeroCinematic.d.ts +0 -3
- package/dist/components/renderers/hero/HeroCinematic.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroCinematic.js +0 -141
- package/dist/components/renderers/hero/HeroCinematic.js.map +0 -1
- package/dist/components/renderers/hero/HeroClassic.d.ts +0 -3
- package/dist/components/renderers/hero/HeroClassic.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroClassic.js +0 -241
- package/dist/components/renderers/hero/HeroClassic.js.map +0 -1
- package/dist/components/renderers/hero/HeroCollage.d.ts +0 -3
- package/dist/components/renderers/hero/HeroCollage.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroCollage.js +0 -131
- package/dist/components/renderers/hero/HeroCollage.js.map +0 -1
- package/dist/components/renderers/hero/HeroColumns.d.ts +0 -3
- package/dist/components/renderers/hero/HeroColumns.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroColumns.js +0 -114
- package/dist/components/renderers/hero/HeroColumns.js.map +0 -1
- package/dist/components/renderers/hero/HeroGlass.d.ts +0 -3
- package/dist/components/renderers/hero/HeroGlass.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroGlass.js +0 -119
- package/dist/components/renderers/hero/HeroGlass.js.map +0 -1
- package/dist/components/renderers/hero/HeroNeon.d.ts +0 -3
- package/dist/components/renderers/hero/HeroNeon.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroNeon.js +0 -136
- package/dist/components/renderers/hero/HeroNeon.js.map +0 -1
- package/dist/components/renderers/hero/HeroParallax.d.ts +0 -3
- package/dist/components/renderers/hero/HeroParallax.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroParallax.js +0 -99
- package/dist/components/renderers/hero/HeroParallax.js.map +0 -1
- package/dist/components/renderers/hero/HeroSplit.d.ts +0 -3
- package/dist/components/renderers/hero/HeroSplit.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroSplit.js +0 -142
- package/dist/components/renderers/hero/HeroSplit.js.map +0 -1
- package/dist/components/renderers/hero/HeroSpotlight.d.ts +0 -3
- package/dist/components/renderers/hero/HeroSpotlight.d.ts.map +0 -1
- package/dist/components/renderers/hero/HeroSpotlight.js +0 -213
- package/dist/components/renderers/hero/HeroSpotlight.js.map +0 -1
- package/dist/components/renderers/hero/index.d.ts +0 -14
- package/dist/components/renderers/hero/index.d.ts.map +0 -1
- package/dist/components/renderers/index.d.ts +0 -8
- package/dist/components/renderers/index.d.ts.map +0 -1
- package/dist/components/renderers/index.js +0 -89
- package/dist/components/renderers/index.js.map +0 -1
- package/dist/components/renderers/types.d.ts +0 -11
- package/dist/components/renderers/types.d.ts.map +0 -1
- package/dist/editor/LandingPageEditorV2.d.ts +0 -19
- package/dist/editor/LandingPageEditorV2.d.ts.map +0 -1
- package/dist/editor/LandingPageEditorV2.js +0 -311
- package/dist/editor/LandingPageEditorV2.js.map +0 -1
- package/dist/editor/PropertyEditor/PropertyGroup.js +0 -23
- package/dist/editor/PropertyEditor/PropertyGroup.js.map +0 -1
- package/dist/engine/preview/PreviewV2.d.ts +0 -15
- package/dist/engine/preview/PreviewV2.d.ts.map +0 -1
- package/dist/engine/preview/PreviewV2.js +0 -242
- package/dist/engine/preview/PreviewV2.js.map +0 -1
- package/dist/modules/registry.d.ts +0 -31
- package/dist/modules/registry.d.ts.map +0 -1
- package/dist/modules/registry.js +0 -67
- package/dist/modules/registry.js.map +0 -1
- package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -57
- package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/core/dist/core.esm.js +0 -2345
- package/dist/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -440
- package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -236
- package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
- package/dist/node_modules/clsx/dist/clsx.js +0 -17
- package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/Icon.js +0 -35
- package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +0 -18
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +0 -15
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-right.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/arrow-right.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/briefcase.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/briefcase.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js +0 -6
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +0 -6
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +0 -15
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +0 -12
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/globe.js +0 -10
- package/dist/node_modules/lucide-react/dist/esm/icons/globe.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/grid-3x3.js +0 -12
- package/dist/node_modules/lucide-react/dist/esm/icons/grid-3x3.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.js +0 -13
- package/dist/node_modules/lucide-react/dist/esm/icons/grip-vertical.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/heading.js +0 -10
- package/dist/node_modules/lucide-react/dist/esm/icons/heading.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/image.js +0 -10
- package/dist/node_modules/lucide-react/dist/esm/icons/image.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/images.js +0 -11
- package/dist/node_modules/lucide-react/dist/esm/icons/images.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/list.js +0 -13
- package/dist/node_modules/lucide-react/dist/esm/icons/list.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +0 -6
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js +0 -18
- package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer-click.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/navigation.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/navigation.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +0 -10
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/phone.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/phone.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/redo-2.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/redo-2.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/redo.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/redo.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/rotate-ccw.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/save.js +0 -16
- package/dist/node_modules/lucide-react/dist/esm/icons/save.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/square.js +0 -8
- package/dist/node_modules/lucide-react/dist/esm/icons/square.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/star.js +0 -14
- package/dist/node_modules/lucide-react/dist/esm/icons/star.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js +0 -12
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/type.js +0 -10
- package/dist/node_modules/lucide-react/dist/esm/icons/type.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/undo-2.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/undo-2.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/undo.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/undo.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js +0 -9
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js.map +0 -1
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +0 -6
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +0 -1
- package/dist/node_modules/react-colorful/dist/index.js +0 -167
- package/dist/node_modules/react-colorful/dist/index.js.map +0 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +0 -2266
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +0 -1
- package/dist/types/index.d.ts +0 -99
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/module.d.ts +0 -25
- package/dist/types/module.d.ts.map +0 -1
- package/dist/utils/htmlExporter.d.ts +0 -6
- package/dist/utils/htmlExporter.d.ts.map +0 -1
- package/dist/utils/htmlExporter.js +0 -92
- package/dist/utils/htmlExporter.js.map +0 -1
- package/dist/utils/themeApplier.d.ts +0 -11
- package/dist/utils/themeApplier.d.ts.map +0 -1
- package/dist/utils/themeApplier.js +0 -29
- package/dist/utils/themeApplier.js.map +0 -1
- package/dist/utils/useDebounce.d.ts +0 -12
- package/dist/utils/useDebounce.d.ts.map +0 -1
- package/dist/viewer/LandingPageViewerV2.d.ts +0 -25
- package/dist/viewer/LandingPageViewerV2.d.ts.map +0 -1
- package/dist/viewer/LandingPageViewerV2.js +0 -253
- package/dist/viewer/LandingPageViewerV2.js.map +0 -1
- /package/dist/{components → editor/PropertyEditor}/inputs/ImageInput.d.ts +0 -0
- /package/dist/{components → editor/components}/LoadingSpinner.d.ts +0 -0
- /package/dist/{components → editor/components}/LoadingSpinner.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heroVariations.js","sources":["../../../src/engine/presets/heroVariations.ts"],"sourcesContent":["/**\n * Presets de variações do bloco Hero\n * Imagens padrão são placeholders visíveis; o usuário pode trocar por upload ou URL.\n */\n\nimport type { HeroVariationId } from \"../schema/siteDocument\";\n\n/** URL de imagem placeholder que funciona no editor e no site (sem depender de /site-images/) */\nexport const PLACEHOLDER_IMAGE_URL =\n \"https://placehold.co/1200x800/e2e8f0/64748b?text=Imagem+Hero\";\n\nexport const HERO_IMAGE_NAMES = [\n \"20221121_00_ensino_ciencias_molecula.jpg\",\n \"escolaweb-capas-artigos-5-maneiras-de-engajar-os-alunos-nas-atividades-escolares-1.jpg\",\n \"metodo-tradicional-de-ensino-do-Brasil.jpg\",\n \"niveis-e-modalidades-de-ensino-da-Educacao-Basica-scaled.jpg\",\n] as const;\n\nexport interface HeroVariationPreset {\n id: HeroVariationId;\n name: string;\n defaultProps: {\n variation: HeroVariationId;\n variant: \"centered\" | \"split\" | \"image-bg\" | \"video-bg\";\n title: string;\n subtitle?: string;\n description?: string;\n primaryButton?: { text: string; href?: string };\n secondaryButton?: { text: string; href?: string };\n image?: string;\n badge?: string;\n align?: \"left\" | \"center\" | \"right\";\n minHeight?: string;\n overlay?: boolean;\n overlayColor?: string;\n background?: string;\n // Typography\n titleColor?: string;\n subtitleColor?: string;\n descriptionColor?: string;\n // Badge\n badgeColor?: string;\n badgeTextColor?: string;\n // Layout\n contentMaxWidth?: string;\n paddingY?: string;\n // Image\n imageRadius?: number;\n imageShadow?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n imagePosition?: \"left\" | \"right\";\n // Buttons\n buttonSize?: \"sm\" | \"md\" | \"lg\";\n primaryButtonVariant?: \"solid\" | \"outline\" | \"ghost\";\n primaryButtonColor?: string;\n primaryButtonTextColor?: string;\n primaryButtonRadius?: number;\n secondaryButtonVariant?: \"solid\" | \"outline\" | \"ghost\";\n secondaryButtonColor?: string;\n secondaryButtonTextColor?: string;\n secondaryButtonRadius?: number;\n // Decorative\n showWave?: boolean;\n waveColor?: string;\n };\n}\n\nexport const heroVariations: Record<HeroVariationId, HeroVariationPreset> = {\n // ============================================================================\n // HERO SPLIT - Layout dividido (conteúdo + imagem)\n // ============================================================================\n \"hero-split\": {\n id: \"hero-split\",\n name: \"Dividido\",\n defaultProps: {\n variation: \"hero-split\",\n variant: \"split\",\n title: \"Educação que transforma\",\n subtitle: \"Metodologias ativas e suporte dedicado\",\n description:\n \"Conteúdo alinhado à Base Nacional Comum Curricular, com foco em competências e habilidades para o mundo atual.\",\n primaryButton: { text: \"Conhecer cursos\", href: \"#courses\" },\n secondaryButton: { text: \"Fale conosco\", href: \"#contact\" },\n align: \"left\",\n minHeight: \"600px\",\n imageRadius: 16,\n imageShadow: \"lg\",\n imagePosition: \"right\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"outline\",\n primaryButtonRadius: 8,\n secondaryButtonRadius: 8,\n },\n },\n\n // ============================================================================\n // HERO PARALLAX - Efeito de parallax com imagem fixa\n // ============================================================================\n \"hero-parallax\": {\n id: \"hero-parallax\",\n name: \"Parallax\",\n defaultProps: {\n variation: \"hero-parallax\",\n variant: \"image-bg\",\n title: \"Ensino de qualidade para todos\",\n subtitle: \"Do tradicional ao contemporâneo\",\n description:\n \"Integramos as melhores práticas pedagógicas para formar cidadãos críticos e criativos.\",\n primaryButton: { text: \"Saiba mais\", href: \"#about\" },\n secondaryButton: { text: \"Matricule-se\", href: \"#enroll\" },\n overlay: true,\n overlayColor: \"linear-gradient(135deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.4) 100%)\",\n align: \"center\",\n minHeight: \"85vh\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#e5e7eb\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: \"#ffffff\",\n secondaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 8,\n secondaryButtonRadius: 8,\n },\n },\n\n // ============================================================================\n // HERO OVERLAY - Fullscreen com overlay escuro\n // ============================================================================\n \"hero-overlay\": {\n id: \"hero-overlay\",\n name: \"Fullscreen\",\n defaultProps: {\n variation: \"hero-overlay\",\n variant: \"image-bg\",\n title: \"Engaje seus alunos nas atividades escolares\",\n subtitle: \"5 maneiras comprovadas de aumentar a participação\",\n badge: \"Destaque\",\n primaryButton: { text: \"Ver artigos\", href: \"#blog\" },\n secondaryButton: { text: \"Aula grátis\", href: \"#trial\" },\n overlay: true,\n overlayColor: \"linear-gradient(180deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.8) 100%)\",\n align: \"center\",\n minHeight: \"100vh\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#d1d5db\",\n badgeColor: \"#3b82f6\",\n badgeTextColor: \"#ffffff\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"ghost\",\n secondaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 50,\n secondaryButtonRadius: 50,\n },\n },\n\n // ============================================================================\n // HERO GRADIENT - Fundo gradiente vibrante (SEM imagem)\n // ============================================================================\n \"hero-gradient\": {\n id: \"hero-gradient\",\n name: \"Gradiente\",\n defaultProps: {\n variation: \"hero-gradient\",\n variant: \"centered\",\n title: \"Transforme o futuro da educação\",\n subtitle: \"Plataforma completa para gestão escolar\",\n description:\n \"Simplifique processos, engaje alunos e pais, e tenha controle total da sua instituição com nossa solução integrada.\",\n primaryButton: { text: \"Começar grátis\", href: \"#trial\" },\n secondaryButton: { text: \"Ver demonstração\", href: \"#demo\" },\n badge: \"Novo\",\n align: \"center\",\n minHeight: \"90vh\",\n // Gradiente vibrante azul/roxo\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%)\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#e5e7eb\",\n badgeColor: \"rgba(255,255,255,0.2)\",\n badgeTextColor: \"#ffffff\",\n contentMaxWidth: \"800px\",\n // Botões brancos/transparentes para contraste\n primaryButtonVariant: \"solid\",\n primaryButtonColor: \"#ffffff\",\n primaryButtonTextColor: \"#667eea\",\n primaryButtonRadius: 50,\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: \"#ffffff\",\n secondaryButtonTextColor: \"#ffffff\",\n secondaryButtonRadius: 50,\n // Onda decorativa\n showWave: true,\n waveColor: \"rgba(255,255,255,0.1)\",\n },\n },\n\n // ============================================================================\n // HERO MINIMAL - Design limpo e minimalista\n // ============================================================================\n \"hero-minimal\": {\n id: \"hero-minimal\",\n name: \"Minimal\",\n defaultProps: {\n variation: \"hero-minimal\",\n variant: \"centered\",\n title: \"Educação simplificada\",\n subtitle: \"Menos complexidade, mais aprendizado\",\n description:\n \"Uma abordagem moderna e direta para o ensino de qualidade. Foco no que realmente importa.\",\n primaryButton: { text: \"Explorar\", href: \"#explore\" },\n align: \"center\",\n minHeight: \"70vh\",\n background: \"#fafafa\",\n titleColor: \"#111827\",\n subtitleColor: \"#4b5563\",\n descriptionColor: \"#6b7280\",\n contentMaxWidth: \"700px\",\n paddingY: \"120px\",\n // Botão único, estilo minimalista\n primaryButtonVariant: \"solid\",\n primaryButtonColor: \"#111827\",\n primaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 4,\n buttonSize: \"lg\",\n },\n },\n\n // ============================================================================\n // HERO CARD - Conteúdo em card flutuante sobre imagem\n // ============================================================================\n \"hero-card\": {\n id: \"hero-card\",\n name: \"Card\",\n defaultProps: {\n variation: \"hero-card\",\n variant: \"image-bg\",\n title: \"Aprenda com os melhores\",\n subtitle: \"Professores qualificados e conteúdo atualizado\",\n description:\n \"Nossa equipe de educadores está pronta para guiar você em uma jornada de conhecimento transformadora.\",\n primaryButton: { text: \"Matricule-se\", href: \"#enroll\" },\n secondaryButton: { text: \"Conheça o time\", href: \"#team\" },\n badge: \"Matrículas Abertas\",\n overlay: true,\n overlayColor: \"rgba(0,0,0,0.3)\",\n align: \"left\",\n minHeight: \"70vh\",\n paddingY: \"6rem\",\n // Card styling (cores do card)\n background: \"#ffffff\",\n titleColor: \"#111827\",\n subtitleColor: \"#374151\",\n descriptionColor: \"#6b7280\",\n badgeColor: \"#10b981\",\n badgeTextColor: \"#ffffff\",\n contentMaxWidth: \"450px\",\n // Botões dentro do card\n primaryButtonVariant: \"solid\",\n primaryButtonRadius: 8,\n secondaryButtonVariant: \"ghost\",\n secondaryButtonRadius: 8,\n // Imagem\n imageRadius: 0,\n imageShadow: \"none\",\n },\n },\n};\n\nexport const heroVariationIds: HeroVariationId[] = [\n \"hero-split\",\n \"hero-parallax\",\n \"hero-overlay\",\n \"hero-gradient\",\n \"hero-minimal\",\n \"hero-card\",\n];\n\nexport function getHeroVariation(id: HeroVariationId): HeroVariationPreset {\n return heroVariations[id];\n}\n"],"names":["PLACEHOLDER_IMAGE_URL","HERO_IMAGE_NAMES","heroVariations","heroVariationIds","getHeroVariation","id"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heroVariations.js","sources":["../../../src/engine/presets/heroVariations.ts"],"sourcesContent":["/**\n * Presets de variações do bloco Hero\n * Imagens padrão são placeholders visíveis; o usuário pode trocar por upload ou URL.\n */\n\nimport type { HeroVariationId } from \"../schema/siteDocument\";\n\n/** URL de imagem placeholder que funciona no editor e no site (sem depender de /site-images/) */\nexport const PLACEHOLDER_IMAGE_URL =\n \"https://placehold.co/1200x800/e2e8f0/64748b?text=Imagem+Hero\";\n\n/** Imagens placeholder para o carrossel de hero */\nexport const CAROUSEL_PLACEHOLDER_IMAGES = [\n \"https://placehold.co/1920x1080/1e3a5f/ffffff?text=Slide+1\",\n \"https://placehold.co/1920x1080/2d5016/ffffff?text=Slide+2\",\n \"https://placehold.co/1920x1080/5a1a2e/ffffff?text=Slide+3\",\n];\n\nexport const HERO_IMAGE_NAMES = [\n \"20221121_00_ensino_ciencias_molecula.jpg\",\n \"escolaweb-capas-artigos-5-maneiras-de-engajar-os-alunos-nas-atividades-escolares-1.jpg\",\n \"metodo-tradicional-de-ensino-do-Brasil.jpg\",\n \"niveis-e-modalidades-de-ensino-da-Educacao-Basica-scaled.jpg\",\n] as const;\n\nexport interface HeroVariationPreset {\n id: HeroVariationId;\n name: string;\n defaultProps: {\n variation: HeroVariationId;\n variant: \"centered\" | \"split\" | \"image-bg\" | \"video-bg\";\n title: string;\n subtitle?: string;\n description?: string;\n primaryButton?: { text: string; href?: string };\n secondaryButton?: { text: string; href?: string };\n image?: string;\n badge?: string;\n align?: \"left\" | \"center\" | \"right\";\n minHeight?: string;\n overlay?: boolean;\n overlayColor?: string;\n background?: string;\n // Typography\n titleColor?: string;\n subtitleColor?: string;\n descriptionColor?: string;\n // Badge\n badgeColor?: string;\n badgeTextColor?: string;\n // Layout\n contentMaxWidth?: string;\n paddingY?: string;\n // Image\n imageRadius?: number;\n imageShadow?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n imagePosition?: \"left\" | \"right\";\n // Buttons\n buttonSize?: \"sm\" | \"md\" | \"lg\";\n primaryButtonVariant?: \"solid\" | \"outline\" | \"ghost\";\n primaryButtonColor?: string;\n primaryButtonTextColor?: string;\n primaryButtonRadius?: number;\n secondaryButtonVariant?: \"solid\" | \"outline\" | \"ghost\";\n secondaryButtonColor?: string;\n secondaryButtonTextColor?: string;\n secondaryButtonRadius?: number;\n // Decorative\n showWave?: boolean;\n waveColor?: string;\n // Carousel\n carouselImages?: string[];\n carouselInterval?: number;\n carouselTransition?: \"crossfade\" | \"slide\";\n };\n}\n\nexport const heroVariations: Record<HeroVariationId, HeroVariationPreset> = {\n // ============================================================================\n // HERO SPLIT - Layout dividido (conteúdo + imagem)\n // ============================================================================\n \"hero-split\": {\n id: \"hero-split\",\n name: \"Dividido\",\n defaultProps: {\n variation: \"hero-split\",\n variant: \"split\",\n title: \"Educação que transforma\",\n subtitle: \"Metodologias ativas e suporte dedicado\",\n description:\n \"Conteúdo alinhado à Base Nacional Comum Curricular, com foco em competências e habilidades para o mundo atual.\",\n primaryButton: { text: \"Conhecer cursos\", href: \"#courses\" },\n secondaryButton: { text: \"Fale conosco\", href: \"#contact\" },\n align: \"left\",\n minHeight: \"600px\",\n imageRadius: 16,\n imageShadow: \"lg\",\n imagePosition: \"right\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"outline\",\n primaryButtonRadius: 8,\n secondaryButtonRadius: 8,\n },\n },\n\n // ============================================================================\n // HERO PARALLAX - Efeito de parallax com imagem fixa\n // ============================================================================\n \"hero-parallax\": {\n id: \"hero-parallax\",\n name: \"Parallax\",\n defaultProps: {\n variation: \"hero-parallax\",\n variant: \"image-bg\",\n title: \"Ensino de qualidade para todos\",\n subtitle: \"Do tradicional ao contemporâneo\",\n description:\n \"Integramos as melhores práticas pedagógicas para formar cidadãos críticos e criativos.\",\n primaryButton: { text: \"Saiba mais\", href: \"#about\" },\n secondaryButton: { text: \"Matricule-se\", href: \"#enroll\" },\n overlay: true,\n overlayColor: \"linear-gradient(135deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.4) 100%)\",\n align: \"center\",\n minHeight: \"85vh\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#e5e7eb\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: \"#ffffff\",\n secondaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 8,\n secondaryButtonRadius: 8,\n },\n },\n\n // ============================================================================\n // HERO OVERLAY - Fullscreen com overlay escuro\n // ============================================================================\n \"hero-overlay\": {\n id: \"hero-overlay\",\n name: \"Fullscreen\",\n defaultProps: {\n variation: \"hero-overlay\",\n variant: \"image-bg\",\n title: \"Engaje seus alunos nas atividades escolares\",\n subtitle: \"5 maneiras comprovadas de aumentar a participação\",\n badge: \"Destaque\",\n primaryButton: { text: \"Ver artigos\", href: \"#blog\" },\n secondaryButton: { text: \"Aula grátis\", href: \"#trial\" },\n overlay: true,\n overlayColor: \"linear-gradient(180deg, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.8) 100%)\",\n align: \"center\",\n minHeight: \"100vh\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#d1d5db\",\n badgeColor: \"#3b82f6\",\n badgeTextColor: \"#ffffff\",\n primaryButtonVariant: \"solid\",\n secondaryButtonVariant: \"ghost\",\n secondaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 50,\n secondaryButtonRadius: 50,\n },\n },\n\n // ============================================================================\n // HERO GRADIENT - Fundo gradiente vibrante (SEM imagem)\n // ============================================================================\n \"hero-gradient\": {\n id: \"hero-gradient\",\n name: \"Gradiente\",\n defaultProps: {\n variation: \"hero-gradient\",\n variant: \"centered\",\n title: \"Transforme o futuro da educação\",\n subtitle: \"Plataforma completa para gestão escolar\",\n description:\n \"Simplifique processos, engaje alunos e pais, e tenha controle total da sua instituição com nossa solução integrada.\",\n primaryButton: { text: \"Começar grátis\", href: \"#trial\" },\n secondaryButton: { text: \"Ver demonstração\", href: \"#demo\" },\n badge: \"Novo\",\n align: \"center\",\n minHeight: \"90vh\",\n // Gradiente vibrante azul/roxo\n background: \"linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%)\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#e5e7eb\",\n badgeColor: \"rgba(255,255,255,0.2)\",\n badgeTextColor: \"#ffffff\",\n contentMaxWidth: \"800px\",\n // Botões brancos/transparentes para contraste\n primaryButtonVariant: \"solid\",\n primaryButtonColor: \"#ffffff\",\n primaryButtonTextColor: \"#667eea\",\n primaryButtonRadius: 50,\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: \"#ffffff\",\n secondaryButtonTextColor: \"#ffffff\",\n secondaryButtonRadius: 50,\n // Onda decorativa\n showWave: true,\n waveColor: \"rgba(255,255,255,0.1)\",\n },\n },\n\n // ============================================================================\n // HERO MINIMAL - Design limpo e minimalista\n // ============================================================================\n \"hero-minimal\": {\n id: \"hero-minimal\",\n name: \"Minimal\",\n defaultProps: {\n variation: \"hero-minimal\",\n variant: \"centered\",\n title: \"Educação simplificada\",\n subtitle: \"Menos complexidade, mais aprendizado\",\n description:\n \"Uma abordagem moderna e direta para o ensino de qualidade. Foco no que realmente importa.\",\n primaryButton: { text: \"Explorar\", href: \"#explore\" },\n align: \"center\",\n minHeight: \"70vh\",\n background: \"#fafafa\",\n titleColor: \"#111827\",\n subtitleColor: \"#4b5563\",\n descriptionColor: \"#6b7280\",\n contentMaxWidth: \"700px\",\n paddingY: \"120px\",\n // Botão único, estilo minimalista\n primaryButtonVariant: \"solid\",\n primaryButtonColor: \"#111827\",\n primaryButtonTextColor: \"#ffffff\",\n primaryButtonRadius: 4,\n buttonSize: \"lg\",\n },\n },\n\n // ============================================================================\n // HERO CARD - Conteúdo em card flutuante sobre imagem\n // ============================================================================\n \"hero-card\": {\n id: \"hero-card\",\n name: \"Card\",\n defaultProps: {\n variation: \"hero-card\",\n variant: \"image-bg\",\n title: \"Aprenda com os melhores\",\n subtitle: \"Professores qualificados e conteúdo atualizado\",\n description:\n \"Nossa equipe de educadores está pronta para guiar você em uma jornada de conhecimento transformadora.\",\n primaryButton: { text: \"Matricule-se\", href: \"#enroll\" },\n secondaryButton: { text: \"Conheça o time\", href: \"#team\" },\n badge: \"Matrículas Abertas\",\n overlay: true,\n overlayColor: \"rgba(0,0,0,0.3)\",\n align: \"left\",\n minHeight: \"70vh\",\n paddingY: \"6rem\",\n // Card styling (cores do card)\n background: \"#ffffff\",\n titleColor: \"#111827\",\n subtitleColor: \"#374151\",\n descriptionColor: \"#6b7280\",\n badgeColor: \"#10b981\",\n badgeTextColor: \"#ffffff\",\n contentMaxWidth: \"450px\",\n // Botões dentro do card\n primaryButtonVariant: \"solid\",\n primaryButtonRadius: 8,\n secondaryButtonVariant: \"ghost\",\n secondaryButtonRadius: 8,\n // Imagem\n imageRadius: 0,\n imageShadow: \"none\",\n },\n },\n\n // ============================================================================\n // HERO CAROUSEL - Carrossel de imagens de fundo com crossfade\n // ============================================================================\n \"hero-carousel\": {\n id: \"hero-carousel\",\n name: \"Carrossel\",\n defaultProps: {\n variation: \"hero-carousel\",\n variant: \"image-bg\",\n title: \"Descubra novas possibilidades\",\n subtitle: \"Uma jornada de aprendizado envolvente\",\n description:\n \"Explore nossos programas e descubra como podemos ajudar você a alcançar seus objetivos educacionais.\",\n primaryButton: { text: \"Explorar cursos\", href: \"#courses\" },\n secondaryButton: { text: \"Saiba mais\", href: \"#about\" },\n overlay: true,\n overlayColor: \"linear-gradient(180deg, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.7) 100%)\",\n align: \"center\",\n minHeight: \"90vh\",\n titleColor: \"#ffffff\",\n subtitleColor: \"#f3f4f6\",\n descriptionColor: \"#e5e7eb\",\n contentMaxWidth: \"800px\",\n primaryButtonVariant: \"solid\",\n primaryButtonRadius: 8,\n secondaryButtonVariant: \"outline\",\n secondaryButtonColor: \"#ffffff\",\n secondaryButtonTextColor: \"#ffffff\",\n secondaryButtonRadius: 8,\n // Carousel\n carouselImages: [\n \"https://placehold.co/1920x1080/1e3a5f/ffffff?text=Slide+1\",\n \"https://placehold.co/1920x1080/2d5016/ffffff?text=Slide+2\",\n \"https://placehold.co/1920x1080/5a1a2e/ffffff?text=Slide+3\",\n ],\n carouselInterval: 5,\n carouselTransition: \"crossfade\",\n },\n },\n};\n\nexport const heroVariationIds: HeroVariationId[] = [\n \"hero-split\",\n \"hero-parallax\",\n \"hero-overlay\",\n \"hero-gradient\",\n \"hero-minimal\",\n \"hero-card\",\n \"hero-carousel\",\n];\n\nexport function getHeroVariation(id: HeroVariationId): HeroVariationPreset {\n return heroVariations[id];\n}\n"],"names":["PLACEHOLDER_IMAGE_URL","CAROUSEL_PLACEHOLDER_IMAGES","HERO_IMAGE_NAMES","heroVariations","heroVariationIds","getHeroVariation","id"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { SiteDocument } from '../schema/siteDocument';
|
|
3
|
+
export interface PreviewProps {
|
|
4
|
+
document: SiteDocument;
|
|
5
|
+
pageId?: string;
|
|
6
|
+
className?: string;
|
|
7
|
+
style?: React.CSSProperties;
|
|
8
|
+
onBlockClick?: (blockId: string, group?: string) => void;
|
|
9
|
+
selectedBlockId?: string | null;
|
|
10
|
+
/** Exibe hover e label de seleção nos blocos do preview */
|
|
11
|
+
showSelectionOverlay?: boolean;
|
|
12
|
+
/** Grupo focado para indicador visual no preview */
|
|
13
|
+
focusedGroup?: string | null;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Componente de preview usando iframe isolado
|
|
17
|
+
*/
|
|
18
|
+
export declare function Preview({ document, pageId, className, style, onBlockClick, selectedBlockId, showSelectionOverlay, focusedGroup, }: PreviewProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
//# sourceMappingURL=Preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Preview.d.ts","sourceRoot":"","sources":["../../../src/engine/preview/Preview.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA+C,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,YAAY,EAAS,MAAM,wBAAwB,CAAC;AAO7D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2DAA2D;IAC3D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oDAAoD;IACpD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAwDD;;GAEG;AACH,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,YAAY,EACZ,eAAe,EACf,oBAA4B,EAC5B,YAAmB,GACpB,EAAE,YAAY,2CAokBd"}
|
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { jsx as C, jsxs as W } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as y, useState as j, useEffect as k, useMemo as F } from "react";
|
|
3
|
+
import { componentRegistry as X } from "../registry/registry.js";
|
|
4
|
+
import { exportPageToHtml as Y, exportBlockToHtml as K } from "../export/exportHtml.js";
|
|
5
|
+
import { detectChangedBlocks as Q } from "../../utils/changeDetector.js";
|
|
6
|
+
import { hashDocument as P } from "../../utils/documentHash.js";
|
|
7
|
+
import { logger as D } from "../../utils/logger.js";
|
|
8
|
+
function U(a, v) {
|
|
9
|
+
const s = (E) => {
|
|
10
|
+
for (const c of E) {
|
|
11
|
+
if (c.id === v) return c;
|
|
12
|
+
const i = c.props;
|
|
13
|
+
if (i?.children && Array.isArray(i.children)) {
|
|
14
|
+
const r = s(i.children);
|
|
15
|
+
if (r) return r;
|
|
16
|
+
}
|
|
17
|
+
if (c.type === "card") {
|
|
18
|
+
if (i.header && Array.isArray(i.header)) {
|
|
19
|
+
const r = s(i.header);
|
|
20
|
+
if (r) return r;
|
|
21
|
+
}
|
|
22
|
+
if (i.content && Array.isArray(i.content)) {
|
|
23
|
+
const r = s(i.content);
|
|
24
|
+
if (r) return r;
|
|
25
|
+
}
|
|
26
|
+
if (i.footer && Array.isArray(i.footer)) {
|
|
27
|
+
const r = s(i.footer);
|
|
28
|
+
if (r) return r;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
};
|
|
34
|
+
return s(a.structure);
|
|
35
|
+
}
|
|
36
|
+
function V(a) {
|
|
37
|
+
const v = {}, s = (E) => {
|
|
38
|
+
for (const c of E) {
|
|
39
|
+
const i = X.get(c.type);
|
|
40
|
+
v[c.id] = i?.name || c.type;
|
|
41
|
+
const r = c.props;
|
|
42
|
+
r?.children && Array.isArray(r.children) && s(r.children), c.type === "card" && (Array.isArray(r?.header) && s(r.header), Array.isArray(r?.content) && s(r.content), Array.isArray(r?.footer) && s(r.footer));
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return a?.structure && s(a.structure), v;
|
|
46
|
+
}
|
|
47
|
+
function le({
|
|
48
|
+
document: a,
|
|
49
|
+
pageId: v,
|
|
50
|
+
className: s,
|
|
51
|
+
style: E,
|
|
52
|
+
onBlockClick: c,
|
|
53
|
+
selectedBlockId: i,
|
|
54
|
+
showSelectionOverlay: r = !1,
|
|
55
|
+
focusedGroup: H = null
|
|
56
|
+
}) {
|
|
57
|
+
const l = y(null), _ = y(null), A = y(null), R = y(null), B = y(!1), [G, N] = j(!0), I = y(i), z = y(r), $ = y(H);
|
|
58
|
+
k(() => {
|
|
59
|
+
I.current = i;
|
|
60
|
+
}, [i]), k(() => {
|
|
61
|
+
z.current = r;
|
|
62
|
+
}, [r]), k(() => {
|
|
63
|
+
$.current = H;
|
|
64
|
+
}, [H]);
|
|
65
|
+
const u = F(() => v ? a.pages.find((t) => t.id === v) : a.pages[0], [a, v]), M = y({});
|
|
66
|
+
k(() => {
|
|
67
|
+
M.current = V(u);
|
|
68
|
+
}, [u]);
|
|
69
|
+
const L = (t) => {
|
|
70
|
+
if (!l.current) return;
|
|
71
|
+
const e = l.current.contentDocument || l.current.contentWindow?.document;
|
|
72
|
+
if (!e) return;
|
|
73
|
+
const o = z.current, n = $.current;
|
|
74
|
+
requestAnimationFrame(() => {
|
|
75
|
+
const p = e.getElementById("block-highlight");
|
|
76
|
+
p && p.remove(), e.querySelectorAll("[data-block-id]").forEach((w) => {
|
|
77
|
+
const f = w;
|
|
78
|
+
f.style.outline = "", f.style.outlineOffset = "";
|
|
79
|
+
});
|
|
80
|
+
const d = e.getElementById("sg-block-label");
|
|
81
|
+
d && d.remove();
|
|
82
|
+
const T = e.getElementById("sg-group-highlight");
|
|
83
|
+
T && T.remove();
|
|
84
|
+
const x = e.getElementById("sg-group-label");
|
|
85
|
+
if (x && x.remove(), t) {
|
|
86
|
+
const w = e.createElement("style");
|
|
87
|
+
if (w.id = "block-highlight", w.textContent = `
|
|
88
|
+
[data-block-id="${t}"] {
|
|
89
|
+
outline: 2px solid #3b82f6 !important;
|
|
90
|
+
outline-offset: 2px !important;
|
|
91
|
+
position: relative;
|
|
92
|
+
}
|
|
93
|
+
[data-block-id="${t}"]::before {
|
|
94
|
+
content: '';
|
|
95
|
+
position: absolute;
|
|
96
|
+
top: -4px;
|
|
97
|
+
left: -4px;
|
|
98
|
+
right: -4px;
|
|
99
|
+
bottom: -4px;
|
|
100
|
+
background: rgba(59, 130, 246, 0.1);
|
|
101
|
+
pointer-events: none;
|
|
102
|
+
z-index: -1;
|
|
103
|
+
}
|
|
104
|
+
`, e.head.appendChild(w), o) {
|
|
105
|
+
const f = e.querySelector(`[data-block-id="${t}"]`);
|
|
106
|
+
if (f) {
|
|
107
|
+
const h = M.current[t] || t, b = e.createElement("div");
|
|
108
|
+
b.id = "sg-block-label", b.textContent = h, b.style.cssText = "position:absolute;top:-22px;left:0;background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px 4px 0 0;z-index:10000;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:16px;", getComputedStyle(f).position === "static" && (f.style.position = "relative"), f.appendChild(b);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (n) {
|
|
112
|
+
const h = e.querySelector(`[data-block-id="${t}"]`)?.querySelector(`[data-block-group="${n}"]`);
|
|
113
|
+
if (h) {
|
|
114
|
+
const b = e.createElement("style");
|
|
115
|
+
b.id = "sg-group-highlight", b.textContent = `
|
|
116
|
+
[data-block-id="${t}"] [data-block-group="${n}"] {
|
|
117
|
+
outline: 2px solid #8b5cf6 !important;
|
|
118
|
+
outline-offset: 2px !important;
|
|
119
|
+
position: relative;
|
|
120
|
+
}
|
|
121
|
+
`, e.head.appendChild(b);
|
|
122
|
+
const S = e.createElement("div");
|
|
123
|
+
S.id = "sg-group-label", S.textContent = n, S.style.cssText = "position:absolute;top:-20px;right:0;background:#8b5cf6;color:#fff;font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px 4px 0 0;z-index:10001;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:14px;", getComputedStyle(h).position === "static" && (h.style.position = "relative"), h.appendChild(S);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}, J = () => {
|
|
129
|
+
l.current?.contentWindow && l.current.contentWindow.postMessage({
|
|
130
|
+
type: "sg-set-block-names",
|
|
131
|
+
names: M.current
|
|
132
|
+
}, "*");
|
|
133
|
+
}, q = (t) => {
|
|
134
|
+
if (!l.current) return;
|
|
135
|
+
const e = l.current.contentDocument || l.current.contentWindow?.document;
|
|
136
|
+
if (!e) return;
|
|
137
|
+
const o = e.getElementById("sg-hover-overlay");
|
|
138
|
+
if (o && o.remove(), !t) {
|
|
139
|
+
const n = e.getElementById("sg-hover-tooltip");
|
|
140
|
+
n && (n.style.opacity = "0");
|
|
141
|
+
}
|
|
142
|
+
if (t) {
|
|
143
|
+
const n = e.createElement("style");
|
|
144
|
+
n.id = "sg-hover-overlay", n.textContent = `
|
|
145
|
+
[data-block-id] {
|
|
146
|
+
cursor: pointer;
|
|
147
|
+
transition: outline 0.15s ease, outline-offset 0.15s ease;
|
|
148
|
+
}
|
|
149
|
+
[data-block-id]:hover {
|
|
150
|
+
outline: 2px dashed #94a3b8 !important;
|
|
151
|
+
outline-offset: 2px !important;
|
|
152
|
+
}
|
|
153
|
+
[data-block-group] {
|
|
154
|
+
cursor: pointer;
|
|
155
|
+
transition: outline 0.15s ease, background 0.15s ease;
|
|
156
|
+
}
|
|
157
|
+
[data-block-group]:hover {
|
|
158
|
+
outline: 1.5px dashed #a78bfa !important;
|
|
159
|
+
outline-offset: 1px !important;
|
|
160
|
+
background: rgba(139, 92, 246, 0.04);
|
|
161
|
+
}
|
|
162
|
+
`, e.head.appendChild(n), J();
|
|
163
|
+
}
|
|
164
|
+
L(I.current || null);
|
|
165
|
+
}, m = (t, e) => {
|
|
166
|
+
if (!(!l.current || !u))
|
|
167
|
+
try {
|
|
168
|
+
e && N(!0);
|
|
169
|
+
let o = Y(u, t, !0);
|
|
170
|
+
const n = `
|
|
171
|
+
<script>
|
|
172
|
+
(function() {
|
|
173
|
+
// Click handler
|
|
174
|
+
document.addEventListener('click', function(e) {
|
|
175
|
+
var target = e.target;
|
|
176
|
+
var anchor = target;
|
|
177
|
+
while (anchor && anchor.tagName !== 'A') {
|
|
178
|
+
anchor = anchor.parentElement;
|
|
179
|
+
}
|
|
180
|
+
if (anchor && anchor.tagName === 'A' && anchor.href) {
|
|
181
|
+
e.preventDefault();
|
|
182
|
+
e.stopPropagation();
|
|
183
|
+
window.parent.postMessage({
|
|
184
|
+
type: 'editor-navigate',
|
|
185
|
+
href: anchor.getAttribute('href') || anchor.href
|
|
186
|
+
}, '*');
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
var element = target;
|
|
190
|
+
var group = null;
|
|
191
|
+
while (element && !element.dataset.blockId) {
|
|
192
|
+
if (element.dataset && element.dataset.blockGroup && !group) {
|
|
193
|
+
group = element.dataset.blockGroup;
|
|
194
|
+
}
|
|
195
|
+
element = element.parentElement;
|
|
196
|
+
}
|
|
197
|
+
if (element && element.dataset.blockId) {
|
|
198
|
+
window.parent.postMessage({
|
|
199
|
+
type: 'block-click',
|
|
200
|
+
blockId: element.dataset.blockId,
|
|
201
|
+
group: group
|
|
202
|
+
}, '*');
|
|
203
|
+
}
|
|
204
|
+
}, true);
|
|
205
|
+
|
|
206
|
+
// Hover tooltip — block name map injected from parent via postMessage
|
|
207
|
+
var _blockNames = {};
|
|
208
|
+
var _hoverTooltip = null;
|
|
209
|
+
|
|
210
|
+
window.addEventListener('message', function(e) {
|
|
211
|
+
if (e.data && e.data.type === 'sg-set-block-names') {
|
|
212
|
+
_blockNames = e.data.names || {};
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
function getTooltip() {
|
|
217
|
+
if (_hoverTooltip) return _hoverTooltip;
|
|
218
|
+
_hoverTooltip = document.createElement('div');
|
|
219
|
+
_hoverTooltip.id = 'sg-hover-tooltip';
|
|
220
|
+
_hoverTooltip.style.cssText = 'position:fixed;top:0;left:0;background:#334155;color:#fff;font-size:11px;font-weight:500;padding:3px 8px;border-radius:4px;z-index:99999;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:16px;opacity:0;transition:opacity 0.12s ease;box-shadow:0 2px 6px rgba(0,0,0,0.2);';
|
|
221
|
+
document.body.appendChild(_hoverTooltip);
|
|
222
|
+
return _hoverTooltip;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
var _currentHoveredBlock = null;
|
|
226
|
+
var _currentHoveredGroup = null;
|
|
227
|
+
|
|
228
|
+
document.addEventListener('mouseover', function(e) {
|
|
229
|
+
// Check if hover overlay is active
|
|
230
|
+
if (!document.getElementById('sg-hover-overlay')) return;
|
|
231
|
+
var el = e.target;
|
|
232
|
+
var groupName = null;
|
|
233
|
+
while (el && !el.dataset.blockId) {
|
|
234
|
+
if (el.dataset && el.dataset.blockGroup && !groupName) {
|
|
235
|
+
groupName = el.dataset.blockGroup;
|
|
236
|
+
}
|
|
237
|
+
el = el.parentElement;
|
|
238
|
+
}
|
|
239
|
+
if (el && el.dataset.blockId) {
|
|
240
|
+
if (el !== _currentHoveredBlock || groupName !== _currentHoveredGroup) {
|
|
241
|
+
_currentHoveredBlock = el;
|
|
242
|
+
_currentHoveredGroup = groupName;
|
|
243
|
+
var tt = getTooltip();
|
|
244
|
+
var blockName = _blockNames[el.dataset.blockId] || el.dataset.blockId;
|
|
245
|
+
tt.textContent = groupName ? (blockName + ' \\u203A ' + groupName) : blockName;
|
|
246
|
+
tt.style.opacity = '1';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}, true);
|
|
250
|
+
|
|
251
|
+
document.addEventListener('mousemove', function(e) {
|
|
252
|
+
if (_hoverTooltip && _hoverTooltip.style.opacity === '1') {
|
|
253
|
+
_hoverTooltip.style.left = (e.clientX + 12) + 'px';
|
|
254
|
+
_hoverTooltip.style.top = (e.clientY - 28) + 'px';
|
|
255
|
+
}
|
|
256
|
+
}, true);
|
|
257
|
+
|
|
258
|
+
document.addEventListener('mouseout', function(e) {
|
|
259
|
+
var el = e.target;
|
|
260
|
+
while (el && !el.dataset.blockId) el = el.parentElement;
|
|
261
|
+
if (el === _currentHoveredBlock) {
|
|
262
|
+
var related = e.relatedTarget;
|
|
263
|
+
while (related && related !== el) related = related.parentElement;
|
|
264
|
+
if (!related) {
|
|
265
|
+
_currentHoveredBlock = null;
|
|
266
|
+
_currentHoveredGroup = null;
|
|
267
|
+
if (_hoverTooltip) _hoverTooltip.style.opacity = '0';
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}, true);
|
|
271
|
+
})();
|
|
272
|
+
<\/script>
|
|
273
|
+
`;
|
|
274
|
+
o = o.replace("</body>", `${n}</body>`), o.includes("</body>") || (o = o + n);
|
|
275
|
+
const p = l.current, g = () => {
|
|
276
|
+
L(I.current || null), z.current && q(!0);
|
|
277
|
+
};
|
|
278
|
+
e ? (p.onload = () => {
|
|
279
|
+
N(!1), _.current = JSON.parse(JSON.stringify(t)), A.current = P(t), g();
|
|
280
|
+
}, setTimeout(() => {
|
|
281
|
+
N(!1), _.current = JSON.parse(JSON.stringify(t)), A.current = P(t), g();
|
|
282
|
+
}, 1e3)) : (_.current = JSON.parse(JSON.stringify(t)), A.current = P(t), p.onload = () => {
|
|
283
|
+
g();
|
|
284
|
+
}), p.srcdoc = o;
|
|
285
|
+
} catch (o) {
|
|
286
|
+
D.error("[Preview] Error:", o), e && N(!1);
|
|
287
|
+
}
|
|
288
|
+
}, O = (t, e) => {
|
|
289
|
+
if (!(!l.current || !u))
|
|
290
|
+
try {
|
|
291
|
+
const o = U(u, t);
|
|
292
|
+
if (!o) {
|
|
293
|
+
m(e, !1);
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const n = K(o, void 0, e.theme);
|
|
297
|
+
requestAnimationFrame(() => {
|
|
298
|
+
const p = l.current;
|
|
299
|
+
if (!p) return;
|
|
300
|
+
const g = p.contentDocument || p.contentWindow?.document;
|
|
301
|
+
if (!g) return;
|
|
302
|
+
const d = g.querySelector(`[data-block-id="${t}"]`);
|
|
303
|
+
if (d)
|
|
304
|
+
try {
|
|
305
|
+
g.querySelectorAll(`style[data-block-style="${t}"]`).forEach((h) => h.remove());
|
|
306
|
+
const x = g.createElement("div");
|
|
307
|
+
x.innerHTML = n, x.querySelectorAll("style").forEach((h) => {
|
|
308
|
+
h.setAttribute("data-block-style", t);
|
|
309
|
+
});
|
|
310
|
+
const f = g.createDocumentFragment();
|
|
311
|
+
for (; x.firstChild; )
|
|
312
|
+
f.appendChild(x.firstChild);
|
|
313
|
+
f.childNodes.length > 0 ? d.parentNode?.replaceChild(f, d) : d.outerHTML = n, _.current = JSON.parse(JSON.stringify(e)), A.current = P(e), L(I.current || null);
|
|
314
|
+
} catch (T) {
|
|
315
|
+
D.error("[Preview] Erro ao atualizar:", T), m(e, !1);
|
|
316
|
+
}
|
|
317
|
+
else
|
|
318
|
+
m(e, !1);
|
|
319
|
+
});
|
|
320
|
+
} catch (o) {
|
|
321
|
+
D.error("[Preview] Erro:", o), m(e, !1);
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
return k(() => {
|
|
325
|
+
if (!u) {
|
|
326
|
+
N(!1);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const t = P(a);
|
|
330
|
+
if (!B.current) {
|
|
331
|
+
l.current && (B.current = !0, R.current = u?.id ?? null, m(a, !0));
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
if (!l.current) return;
|
|
335
|
+
const e = u?.id ?? null;
|
|
336
|
+
if (R.current !== e) {
|
|
337
|
+
R.current = e, m(a, !1);
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
if (A.current === t)
|
|
341
|
+
return;
|
|
342
|
+
const o = Q(
|
|
343
|
+
_.current || a,
|
|
344
|
+
a,
|
|
345
|
+
u?.id
|
|
346
|
+
);
|
|
347
|
+
if (o.length === 0) {
|
|
348
|
+
D.debug(
|
|
349
|
+
"[Preview] Hash changed but no changes detected, forcing reload"
|
|
350
|
+
), m(a, !1);
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (o.some(
|
|
354
|
+
(n) => n.blockId === "__structural__" || n.changedProps?.includes("children")
|
|
355
|
+
)) {
|
|
356
|
+
m(a, !1);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
if (o.length === 1) {
|
|
360
|
+
const n = o[0];
|
|
361
|
+
if (!(n.changedProps || []).some(
|
|
362
|
+
(d) => d === "children" || d === "header" || d === "content" || d === "footer"
|
|
363
|
+
)) {
|
|
364
|
+
O(n.blockId, a);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
m(a, !1);
|
|
369
|
+
}, [a, u]), k(() => {
|
|
370
|
+
B.current && L(i || null);
|
|
371
|
+
}, [i, H]), k(() => {
|
|
372
|
+
B.current && q(r);
|
|
373
|
+
}, [r]), k(() => {
|
|
374
|
+
if (!c) return;
|
|
375
|
+
const t = (e) => {
|
|
376
|
+
e.data?.type === "block-click" && e.data?.blockId && c(e.data.blockId, e.data.group || void 0);
|
|
377
|
+
};
|
|
378
|
+
return window.addEventListener("message", t), () => {
|
|
379
|
+
window.removeEventListener("message", t);
|
|
380
|
+
};
|
|
381
|
+
}, [c]), u ? /* @__PURE__ */ W("div", { className: s, style: { position: "relative", ...E }, children: [
|
|
382
|
+
G && /* @__PURE__ */ C(
|
|
383
|
+
"div",
|
|
384
|
+
{
|
|
385
|
+
style: {
|
|
386
|
+
position: "absolute",
|
|
387
|
+
top: 0,
|
|
388
|
+
left: 0,
|
|
389
|
+
right: 0,
|
|
390
|
+
bottom: 0,
|
|
391
|
+
display: "flex",
|
|
392
|
+
alignItems: "center",
|
|
393
|
+
justifyContent: "center",
|
|
394
|
+
backgroundColor: "rgba(255, 255, 255, 0.8)",
|
|
395
|
+
zIndex: 10
|
|
396
|
+
},
|
|
397
|
+
children: /* @__PURE__ */ C("div", { style: { color: "#6b7280" }, children: "Carregando preview..." })
|
|
398
|
+
}
|
|
399
|
+
),
|
|
400
|
+
/* @__PURE__ */ C(
|
|
401
|
+
"iframe",
|
|
402
|
+
{
|
|
403
|
+
ref: l,
|
|
404
|
+
style: {
|
|
405
|
+
width: "100%",
|
|
406
|
+
height: "100%",
|
|
407
|
+
border: "none",
|
|
408
|
+
backgroundColor: "#ffffff"
|
|
409
|
+
},
|
|
410
|
+
title: "Preview do site"
|
|
411
|
+
}
|
|
412
|
+
)
|
|
413
|
+
] }) : /* @__PURE__ */ C("div", { className: s, style: E, children: /* @__PURE__ */ C("div", { style: { padding: "2rem", textAlign: "center", color: "#6b7280" }, children: "Página não encontrada" }) });
|
|
414
|
+
}
|
|
415
|
+
export {
|
|
416
|
+
le as Preview
|
|
417
|
+
};
|
|
418
|
+
//# sourceMappingURL=Preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Preview.js","sources":["../../../src/engine/preview/Preview.tsx"],"sourcesContent":["/**\n * Preview\n * Sem dependências circulares, sem reloads desnecessários\n */\n\nimport React, { useEffect, useRef, useState, useMemo } from \"react\";\nimport { SiteDocument, Block } from \"../schema/siteDocument\";\nimport { componentRegistry } from \"../registry/registry\";\nimport { exportPageToHtml, exportBlockToHtml } from \"../export/exportHtml\";\nimport { detectChangedBlocks } from \"../../utils/changeDetector\";\nimport { hashDocument } from \"../../utils/documentHash\";\nimport { logger } from \"../../utils/logger\";\n\nexport interface PreviewProps {\n document: SiteDocument;\n pageId?: string;\n className?: string;\n style?: React.CSSProperties;\n onBlockClick?: (blockId: string, group?: string) => void;\n selectedBlockId?: string | null;\n /** Exibe hover e label de seleção nos blocos do preview */\n showSelectionOverlay?: boolean;\n /** Grupo focado para indicador visual no preview */\n focusedGroup?: string | null;\n}\n\n/**\n * Encontra um bloco na estrutura recursivamente\n */\nfunction findBlockInPage(page: any, blockId: string): Block | null {\n const findInBlocks = (blocks: Block[]): Block | null => {\n for (const block of blocks) {\n if (block.id === blockId) return block;\n const props = block.props as Record<string, any>;\n if (props?.children && Array.isArray(props.children)) {\n const found = findInBlocks(props.children);\n if (found) return found;\n }\n if (block.type === \"card\") {\n if (props.header && Array.isArray(props.header)) {\n const found = findInBlocks(props.header);\n if (found) return found;\n }\n if (props.content && Array.isArray(props.content)) {\n const found = findInBlocks(props.content);\n if (found) return found;\n }\n if (props.footer && Array.isArray(props.footer)) {\n const found = findInBlocks(props.footer);\n if (found) return found;\n }\n }\n }\n return null;\n };\n return findInBlocks(page.structure);\n}\n\n/**\n * Monta mapa blockId → nome legível (da registry)\n */\nfunction buildBlockNameMap(page: any): Record<string, string> {\n const map: Record<string, string> = {};\n const walk = (blocks: Block[]) => {\n for (const block of blocks) {\n const def = componentRegistry.get(block.type);\n map[block.id] = def?.name || block.type;\n const props = block.props as Record<string, any>;\n if (props?.children && Array.isArray(props.children)) walk(props.children);\n if (block.type === \"card\") {\n if (Array.isArray(props?.header)) walk(props.header);\n if (Array.isArray(props?.content)) walk(props.content);\n if (Array.isArray(props?.footer)) walk(props.footer);\n }\n }\n };\n if (page?.structure) walk(page.structure);\n return map;\n}\n\n/**\n * Componente de preview usando iframe isolado\n */\nexport function Preview({\n document,\n pageId,\n className,\n style,\n onBlockClick,\n selectedBlockId,\n showSelectionOverlay = false,\n focusedGroup = null,\n}: PreviewProps) {\n const iframeRef = useRef<HTMLIFrameElement>(null);\n const previousDocRef = useRef<SiteDocument | null>(null);\n const previousDocHashRef = useRef<string | null>(null);\n const previousPageIdRef = useRef<string | null>(null);\n const isInitializedRef = useRef<boolean>(false);\n const [isLoading, setIsLoading] = useState(true);\n\n // Usar ref para selectedBlockId (necessário para highlight assíncrono)\n const selectedBlockIdRef = useRef(selectedBlockId);\n const showSelectionOverlayRef = useRef(showSelectionOverlay);\n const focusedGroupRef = useRef(focusedGroup);\n\n // Atualizar refs quando props mudam\n useEffect(() => {\n selectedBlockIdRef.current = selectedBlockId;\n }, [selectedBlockId]);\n\n useEffect(() => {\n showSelectionOverlayRef.current = showSelectionOverlay;\n }, [showSelectionOverlay]);\n\n useEffect(() => {\n focusedGroupRef.current = focusedGroup;\n }, [focusedGroup]);\n\n const page = useMemo(() => {\n return pageId\n ? document.pages.find((p) => p.id === pageId)\n : document.pages[0];\n }, [document, pageId]);\n\n // Mapa blockId → nome legível para labels\n const blockNameMapRef = useRef<Record<string, string>>({});\n useEffect(() => {\n blockNameMapRef.current = buildBlockNameMap(page);\n }, [page]);\n\n // Atualizar highlight + selection overlay diretamente no iframe (sem reload)\n const updateHighlight = (blockId: string | null) => {\n if (!iframeRef.current) return;\n\n const iframeDoc =\n iframeRef.current.contentDocument ||\n iframeRef.current.contentWindow?.document;\n if (!iframeDoc) return;\n\n const overlayEnabled = showSelectionOverlayRef.current;\n const group = focusedGroupRef.current;\n\n requestAnimationFrame(() => {\n // Remover highlight anterior\n const oldStyle = iframeDoc.getElementById(\"block-highlight\");\n if (oldStyle) oldStyle.remove();\n\n const allBlocks = iframeDoc.querySelectorAll(\"[data-block-id]\");\n allBlocks.forEach((el) => {\n const htmlEl = el as HTMLElement;\n htmlEl.style.outline = \"\";\n htmlEl.style.outlineOffset = \"\";\n });\n\n // Remover labels anteriores\n const oldLabel = iframeDoc.getElementById(\"sg-block-label\");\n if (oldLabel) oldLabel.remove();\n const oldGroupStyle = iframeDoc.getElementById(\"sg-group-highlight\");\n if (oldGroupStyle) oldGroupStyle.remove();\n const oldGroupLabel = iframeDoc.getElementById(\"sg-group-label\");\n if (oldGroupLabel) oldGroupLabel.remove();\n\n // Adicionar novo highlight\n if (blockId) {\n const highlightStyle = iframeDoc.createElement(\"style\");\n highlightStyle.id = \"block-highlight\";\n highlightStyle.textContent = `\n [data-block-id=\"${blockId}\"] {\n outline: 2px solid #3b82f6 !important;\n outline-offset: 2px !important;\n position: relative;\n }\n [data-block-id=\"${blockId}\"]::before {\n content: '';\n position: absolute;\n top: -4px;\n left: -4px;\n right: -4px;\n bottom: -4px;\n background: rgba(59, 130, 246, 0.1);\n pointer-events: none;\n z-index: -1;\n }\n `;\n iframeDoc.head.appendChild(highlightStyle);\n\n // Selection label (only when overlay is enabled)\n if (overlayEnabled) {\n const selectedEl = iframeDoc.querySelector(`[data-block-id=\"${blockId}\"]`) as HTMLElement;\n if (selectedEl) {\n const blockName = blockNameMapRef.current[blockId] || blockId;\n const label = iframeDoc.createElement(\"div\");\n label.id = \"sg-block-label\";\n label.textContent = blockName;\n label.style.cssText = \"position:absolute;top:-22px;left:0;background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px 4px 0 0;z-index:10000;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:16px;\";\n const pos = getComputedStyle(selectedEl).position;\n if (pos === \"static\") selectedEl.style.position = \"relative\";\n selectedEl.appendChild(label);\n }\n }\n\n // Indicador de grupo — mostra qual sub-seção foi clicada (purple)\n if (group) {\n const blockEl = iframeDoc.querySelector(`[data-block-id=\"${blockId}\"]`);\n const groupEl = blockEl?.querySelector(`[data-block-group=\"${group}\"]`) as HTMLElement;\n if (groupEl) {\n const ghStyle = iframeDoc.createElement(\"style\");\n ghStyle.id = \"sg-group-highlight\";\n ghStyle.textContent = `\n [data-block-id=\"${blockId}\"] [data-block-group=\"${group}\"] {\n outline: 2px solid #8b5cf6 !important;\n outline-offset: 2px !important;\n position: relative;\n }\n `;\n iframeDoc.head.appendChild(ghStyle);\n\n const gLabel = iframeDoc.createElement(\"div\");\n gLabel.id = \"sg-group-label\";\n gLabel.textContent = group;\n gLabel.style.cssText = \"position:absolute;top:-20px;right:0;background:#8b5cf6;color:#fff;font-size:10px;font-weight:600;padding:2px 8px;border-radius:4px 4px 0 0;z-index:10001;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:14px;\";\n const gPos = getComputedStyle(groupEl).position;\n if (gPos === \"static\") groupEl.style.position = \"relative\";\n groupEl.appendChild(gLabel);\n }\n }\n }\n });\n };\n\n // Enviar mapa de nomes para o iframe\n const sendBlockNamesToIframe = () => {\n if (!iframeRef.current?.contentWindow) return;\n iframeRef.current.contentWindow.postMessage({\n type: \"sg-set-block-names\",\n names: blockNameMapRef.current,\n }, \"*\");\n };\n\n // Atualizar hover overlay (injetar/remover CSS de hover nos blocos)\n const updateSelectionOverlay = (enabled: boolean) => {\n if (!iframeRef.current) return;\n\n const iframeDoc =\n iframeRef.current.contentDocument ||\n iframeRef.current.contentWindow?.document;\n if (!iframeDoc) return;\n\n const existingStyle = iframeDoc.getElementById(\"sg-hover-overlay\");\n if (existingStyle) existingStyle.remove();\n\n // Remove tooltip when disabling\n if (!enabled) {\n const tooltip = iframeDoc.getElementById(\"sg-hover-tooltip\");\n if (tooltip) tooltip.style.opacity = \"0\";\n }\n\n if (enabled) {\n const hoverStyle = iframeDoc.createElement(\"style\");\n hoverStyle.id = \"sg-hover-overlay\";\n hoverStyle.textContent = `\n [data-block-id] {\n cursor: pointer;\n transition: outline 0.15s ease, outline-offset 0.15s ease;\n }\n [data-block-id]:hover {\n outline: 2px dashed #94a3b8 !important;\n outline-offset: 2px !important;\n }\n [data-block-group] {\n cursor: pointer;\n transition: outline 0.15s ease, background 0.15s ease;\n }\n [data-block-group]:hover {\n outline: 1.5px dashed #a78bfa !important;\n outline-offset: 1px !important;\n background: rgba(139, 92, 246, 0.04);\n }\n `;\n iframeDoc.head.appendChild(hoverStyle);\n sendBlockNamesToIframe();\n }\n\n // Re-apply highlight (recalcula label)\n updateHighlight(selectedBlockIdRef.current || null);\n };\n\n // Atualizar preview completo (com srcdoc - causa reload)\n const updateFullPreview = (doc: SiteDocument, showLoading: boolean) => {\n if (!iframeRef.current || !page) return;\n\n try {\n if (showLoading) {\n setIsLoading(true);\n }\n\n let html = exportPageToHtml(page, doc, true);\n\n // Adicionar click handler + hover handler: links não navegam, enviam editor-navigate; outros cliques enviam block-click\n const clickHandler = `\n <script>\n (function() {\n // Click handler\n document.addEventListener('click', function(e) {\n var target = e.target;\n var anchor = target;\n while (anchor && anchor.tagName !== 'A') {\n anchor = anchor.parentElement;\n }\n if (anchor && anchor.tagName === 'A' && anchor.href) {\n e.preventDefault();\n e.stopPropagation();\n window.parent.postMessage({\n type: 'editor-navigate',\n href: anchor.getAttribute('href') || anchor.href\n }, '*');\n return;\n }\n var element = target;\n var group = null;\n while (element && !element.dataset.blockId) {\n if (element.dataset && element.dataset.blockGroup && !group) {\n group = element.dataset.blockGroup;\n }\n element = element.parentElement;\n }\n if (element && element.dataset.blockId) {\n window.parent.postMessage({\n type: 'block-click',\n blockId: element.dataset.blockId,\n group: group\n }, '*');\n }\n }, true);\n\n // Hover tooltip — block name map injected from parent via postMessage\n var _blockNames = {};\n var _hoverTooltip = null;\n\n window.addEventListener('message', function(e) {\n if (e.data && e.data.type === 'sg-set-block-names') {\n _blockNames = e.data.names || {};\n }\n });\n\n function getTooltip() {\n if (_hoverTooltip) return _hoverTooltip;\n _hoverTooltip = document.createElement('div');\n _hoverTooltip.id = 'sg-hover-tooltip';\n _hoverTooltip.style.cssText = 'position:fixed;top:0;left:0;background:#334155;color:#fff;font-size:11px;font-weight:500;padding:3px 8px;border-radius:4px;z-index:99999;pointer-events:none;font-family:system-ui,sans-serif;white-space:nowrap;line-height:16px;opacity:0;transition:opacity 0.12s ease;box-shadow:0 2px 6px rgba(0,0,0,0.2);';\n document.body.appendChild(_hoverTooltip);\n return _hoverTooltip;\n }\n\n var _currentHoveredBlock = null;\n var _currentHoveredGroup = null;\n\n document.addEventListener('mouseover', function(e) {\n // Check if hover overlay is active\n if (!document.getElementById('sg-hover-overlay')) return;\n var el = e.target;\n var groupName = null;\n while (el && !el.dataset.blockId) {\n if (el.dataset && el.dataset.blockGroup && !groupName) {\n groupName = el.dataset.blockGroup;\n }\n el = el.parentElement;\n }\n if (el && el.dataset.blockId) {\n if (el !== _currentHoveredBlock || groupName !== _currentHoveredGroup) {\n _currentHoveredBlock = el;\n _currentHoveredGroup = groupName;\n var tt = getTooltip();\n var blockName = _blockNames[el.dataset.blockId] || el.dataset.blockId;\n tt.textContent = groupName ? (blockName + ' \\\\u203A ' + groupName) : blockName;\n tt.style.opacity = '1';\n }\n }\n }, true);\n\n document.addEventListener('mousemove', function(e) {\n if (_hoverTooltip && _hoverTooltip.style.opacity === '1') {\n _hoverTooltip.style.left = (e.clientX + 12) + 'px';\n _hoverTooltip.style.top = (e.clientY - 28) + 'px';\n }\n }, true);\n\n document.addEventListener('mouseout', function(e) {\n var el = e.target;\n while (el && !el.dataset.blockId) el = el.parentElement;\n if (el === _currentHoveredBlock) {\n var related = e.relatedTarget;\n while (related && related !== el) related = related.parentElement;\n if (!related) {\n _currentHoveredBlock = null;\n _currentHoveredGroup = null;\n if (_hoverTooltip) _hoverTooltip.style.opacity = '0';\n }\n }\n }, true);\n })();\n </script>\n `;\n html = html.replace(\"</body>\", `${clickHandler}</body>`);\n if (!html.includes(\"</body>\")) {\n html = html + clickHandler;\n }\n\n const iframe = iframeRef.current;\n\n const applyOverlayAfterLoad = () => {\n updateHighlight(selectedBlockIdRef.current || null);\n if (showSelectionOverlayRef.current) {\n updateSelectionOverlay(true);\n }\n };\n\n if (showLoading) {\n iframe.onload = () => {\n setIsLoading(false);\n previousDocRef.current = JSON.parse(JSON.stringify(doc));\n previousDocHashRef.current = hashDocument(doc);\n applyOverlayAfterLoad();\n };\n setTimeout(() => {\n setIsLoading(false);\n previousDocRef.current = JSON.parse(JSON.stringify(doc));\n previousDocHashRef.current = hashDocument(doc);\n applyOverlayAfterLoad();\n }, 1000);\n } else {\n previousDocRef.current = JSON.parse(JSON.stringify(doc));\n previousDocHashRef.current = hashDocument(doc);\n iframe.onload = () => {\n applyOverlayAfterLoad();\n };\n }\n\n iframe.srcdoc = html;\n } catch (error) {\n logger.error(\"[Preview] Error:\", error);\n if (showLoading) {\n setIsLoading(false);\n }\n }\n };\n\n // Atualizar apenas um bloco (sem reload)\n const updatePartialPreview = (blockId: string, doc: SiteDocument) => {\n if (!iframeRef.current || !page) return;\n\n try {\n const block = findBlockInPage(page, blockId);\n if (!block) {\n updateFullPreview(doc, false);\n return;\n }\n\n const blockHtml = exportBlockToHtml(block, undefined, doc.theme);\n\n requestAnimationFrame(() => {\n const iframe = iframeRef.current;\n if (!iframe) return;\n\n const iframeDoc =\n iframe.contentDocument || iframe.contentWindow?.document;\n if (!iframeDoc) return;\n\n const element = iframeDoc.querySelector(`[data-block-id=\"${blockId}\"]`);\n if (element) {\n try {\n // Remover <style> tags antigas associadas a este bloco\n const oldStyles = iframeDoc.querySelectorAll(`style[data-block-style=\"${blockId}\"]`);\n oldStyles.forEach(s => s.remove());\n\n const temp = iframeDoc.createElement(\"div\");\n temp.innerHTML = blockHtml;\n\n // Marcar e extrair <style> tags para inserção separada\n const styleTags = temp.querySelectorAll(\"style\");\n styleTags.forEach(style => {\n style.setAttribute(\"data-block-style\", blockId);\n });\n\n // Usar DocumentFragment para substituir com múltiplos elementos irmãos\n // (ex: <style>hover CSS</style><button>text</button>)\n const fragment = iframeDoc.createDocumentFragment();\n while (temp.firstChild) {\n fragment.appendChild(temp.firstChild);\n }\n\n if (fragment.childNodes.length > 0) {\n element.parentNode?.replaceChild(fragment, element);\n } else {\n element.outerHTML = blockHtml;\n }\n\n // Atualizar refs\n previousDocRef.current = JSON.parse(JSON.stringify(doc));\n previousDocHashRef.current = hashDocument(doc);\n\n // Reaplicar highlight\n updateHighlight(selectedBlockIdRef.current || null);\n } catch (error) {\n logger.error(\"[Preview] Erro ao atualizar:\", error);\n updateFullPreview(doc, false);\n }\n } else {\n updateFullPreview(doc, false);\n }\n });\n } catch (error) {\n logger.error(\"[Preview] Erro:\", error);\n updateFullPreview(doc, false);\n }\n };\n\n // Efeito para mudanças no DOCUMENTO (não no selectedBlockId)\n useEffect(() => {\n if (!page) {\n setIsLoading(false);\n return;\n }\n\n const currentDocHash = hashDocument(document);\n\n // Primeira renderização\n if (!isInitializedRef.current) {\n if (iframeRef.current) {\n isInitializedRef.current = true;\n previousPageIdRef.current = page?.id ?? null;\n updateFullPreview(document, true);\n }\n return;\n }\n\n if (!iframeRef.current) return;\n\n // Detectar troca de página (pageId mudou)\n const currentPageId = page?.id ?? null;\n if (previousPageIdRef.current !== currentPageId) {\n previousPageIdRef.current = currentPageId;\n updateFullPreview(document, false);\n return;\n }\n\n // Se hash não mudou, não há mudanças no documento\n if (previousDocHashRef.current === currentDocHash) {\n return;\n }\n\n // Detectar mudanças na página atual\n const changedBlocks = detectChangedBlocks(\n previousDocRef.current || document,\n document,\n page?.id,\n );\n\n // Se não há mudanças detectadas mas o hash mudou, forçar reload\n if (changedBlocks.length === 0) {\n logger.debug(\n \"[Preview] Hash changed but no changes detected, forcing reload\",\n );\n updateFullPreview(document, false);\n return;\n }\n\n // Mudança estrutural (bloco adicionado/removido) = reload completo\n if (\n changedBlocks.some(\n (c) =>\n c.blockId === \"__structural__\" ||\n c.changedProps?.includes(\"children\"),\n )\n ) {\n updateFullPreview(document, false);\n return;\n }\n\n // Mudança de 1 bloco (não estrutural) = atualização parcial\n if (changedBlocks.length === 1) {\n const change = changedBlocks[0];\n const changedProps = change.changedProps || [];\n\n const isStructural = changedProps.some(\n (prop) =>\n prop === \"children\" ||\n prop === \"header\" ||\n prop === \"content\" ||\n prop === \"footer\",\n );\n\n if (!isStructural) {\n updatePartialPreview(change.blockId, document);\n return;\n }\n }\n\n // Fallback: reload completo SEM loader\n updateFullPreview(document, false);\n }, [document, page]); // APENAS document e page - sem funções\n\n // Efeito SEPARADO para highlight (não recarrega o preview)\n useEffect(() => {\n if (!isInitializedRef.current) return;\n updateHighlight(selectedBlockId || null);\n }, [selectedBlockId, focusedGroup]); // eslint-disable-line react-hooks/exhaustive-deps -- updateHighlight reads focusedGroupRef\n\n // Efeito para toggle do selection overlay\n useEffect(() => {\n if (!isInitializedRef.current) return;\n updateSelectionOverlay(showSelectionOverlay);\n }, [showSelectionOverlay]); // eslint-disable-line react-hooks/exhaustive-deps -- same pattern as updateFullPreview\n\n // Listener para cliques\n useEffect(() => {\n if (!onBlockClick) return;\n\n const handleMessage = (event: MessageEvent) => {\n if (event.data?.type === \"block-click\" && event.data?.blockId) {\n onBlockClick(event.data.blockId, event.data.group || undefined);\n }\n };\n\n window.addEventListener(\"message\", handleMessage);\n return () => {\n window.removeEventListener(\"message\", handleMessage);\n };\n }, [onBlockClick]);\n\n if (!page) {\n return (\n <div className={className} style={style}>\n <div style={{ padding: \"2rem\", textAlign: \"center\", color: \"#6b7280\" }}>\n Página não encontrada\n </div>\n </div>\n );\n }\n\n return (\n <div className={className} style={{ position: \"relative\", ...style }}>\n {isLoading && (\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"rgba(255, 255, 255, 0.8)\",\n zIndex: 10,\n }}\n >\n <div style={{ color: \"#6b7280\" }}>Carregando preview...</div>\n </div>\n )}\n <iframe\n ref={iframeRef}\n style={{\n width: \"100%\",\n height: \"100%\",\n border: \"none\",\n backgroundColor: \"#ffffff\",\n }}\n title=\"Preview do site\"\n />\n </div>\n );\n}\n"],"names":["findBlockInPage","page","blockId","findInBlocks","blocks","block","props","found","buildBlockNameMap","map","walk","def","componentRegistry","Preview","document","pageId","className","style","onBlockClick","selectedBlockId","showSelectionOverlay","focusedGroup","iframeRef","useRef","previousDocRef","previousDocHashRef","previousPageIdRef","isInitializedRef","isLoading","setIsLoading","useState","selectedBlockIdRef","showSelectionOverlayRef","focusedGroupRef","useEffect","useMemo","p","blockNameMapRef","updateHighlight","iframeDoc","overlayEnabled","group","oldStyle","el","htmlEl","oldLabel","oldGroupStyle","oldGroupLabel","highlightStyle","selectedEl","blockName","label","groupEl","ghStyle","gLabel","sendBlockNamesToIframe","updateSelectionOverlay","enabled","existingStyle","tooltip","hoverStyle","updateFullPreview","doc","showLoading","html","exportPageToHtml","clickHandler","iframe","applyOverlayAfterLoad","hashDocument","error","logger","updatePartialPreview","blockHtml","exportBlockToHtml","element","s","temp","fragment","currentDocHash","currentPageId","changedBlocks","detectChangedBlocks","c","change","prop","handleMessage","event","jsxs","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blogPostCard.d.ts","sourceRoot":"","sources":["../../../../../src/engine/registry/blocks/sections/blogPostCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAAC,cAAc,CA8C7D,CAAC"}
|