@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":"changeDetector.js","sources":["../../src/utils/changeDetector.ts"],"sourcesContent":["/**\n * Change Detector\n * Detecta mudanças entre documentos para atualização parcial\n */\n\nimport { SiteDocumentV2, Block } from '../engine/schema/siteDocument'\n\n\n/**\n * Compara dois blocos e retorna se são diferentes\n * Também retorna quais propriedades mudaram\n */\nfunction blocksAreDifferent(block1: Block, block2: Block): { different: boolean; changedProps?: string[] } {\n // Comparação rápida primeiro\n if (JSON.stringify(block1) === JSON.stringify(block2)) {\n return { different: false }\n }\n\n // Detectar quais propriedades mudaram\n const props1 = block1.props as Record<string, any>\n const props2 = block2.props as Record<string, any>\n const changedProps: string[] = []\n\n // Verificar todas as propriedades\n const allProps = new Set([...Object.keys(props1 || {}), ...Object.keys(props2 || {})])\n for (const prop of allProps) {\n // Ignorar propriedades que são arrays de filhos - essas mudanças são detectadas nos filhos\n if (prop === 'children' || prop === 'header' || prop === 'content' || prop === 'footer') {\n // Comparar apenas se os arrays têm tamanhos diferentes ou IDs diferentes\n const oldChildren = props1[prop] || []\n const newChildren = props2[prop] || []\n \n if (Array.isArray(oldChildren) && Array.isArray(newChildren)) {\n // Se os arrays têm tamanhos diferentes, a mudança será detectada nos filhos\n if (oldChildren.length !== newChildren.length) {\n changedProps.push(prop)\n } else {\n // Verificar se os IDs dos filhos são os mesmos (ordem pode ter mudado)\n const oldIds = oldChildren.map((c: any) => c?.id).filter(Boolean).sort()\n const newIds = newChildren.map((c: any) => c?.id).filter(Boolean).sort()\n if (JSON.stringify(oldIds) !== JSON.stringify(newIds)) {\n changedProps.push(prop)\n }\n }\n } else if (JSON.stringify(oldChildren) !== JSON.stringify(newChildren)) {\n changedProps.push(prop)\n }\n } else {\n // Para outras propriedades, comparar normalmente\n if (JSON.stringify(props1[prop]) !== JSON.stringify(props2[prop])) {\n changedProps.push(prop)\n }\n }\n }\n\n return { different: changedProps.length > 0, changedProps }\n}\n\n/**\n * Detecta quais blocos foram modificados entre dois documentos\n * @returns Array de objetos com blockId e changedProps\n */\nexport function detectChangedBlocks(\n oldDoc: SiteDocumentV2,\n newDoc: SiteDocumentV2\n): Array<{ blockId: string; changedProps?: string[] }> {\n const changedBlocks: Array<{ blockId: string; changedProps?: string[] }> = []\n\n // Comparar páginas\n const oldPage = oldDoc.pages.find((p) => p.id === 'home') || oldDoc.pages[0]\n const newPage = newDoc.pages.find((p) => p.id === 'home') || newDoc.pages[0]\n\n if (!oldPage || !newPage) {\n return [] // Se não há páginas, não há mudanças\n }\n\n // Comparação rápida: se os IDs dos blocos raiz são os mesmos, não precisa verificar estrutura\n const oldRootIds = (oldPage.structure || []).map(b => b?.id).filter(Boolean).sort()\n const newRootIds = (newPage.structure || []).map(b => b?.id).filter(Boolean).sort()\n \n // Se ambos estão vazios, não há mudança estrutural\n if (oldRootIds.length === 0 && newRootIds.length === 0) {\n // Ambos vazios - não há estrutura para comparar, retornar vazio (sem mudanças)\n return []\n }\n \n if (JSON.stringify(oldRootIds) !== JSON.stringify(newRootIds)) {\n // Estrutura mudou (blocos adicionados/removidos na raiz)\n // Retornar mudança especial indicando mudança estrutural\n return [{ blockId: '__structural__', changedProps: ['children'] }]\n }\n\n // Comparar estrutura recursivamente\n const compareBlocks = (oldBlocks: Block[], newBlocks: Block[]): Array<{ blockId: string; changedProps?: string[] }> => {\n const localChangedBlocks: Array<{ blockId: string; changedProps?: string[] }> = []\n \n // Criar mapas de blocos por ID\n const oldBlocksMap = new Map<string, Block>()\n const newBlocksMap = new Map<string, Block>()\n\n const addToMap = (blocks: Block[], map: Map<string, Block>) => {\n for (const block of blocks) {\n if (!block || !block.id) continue\n map.set(block.id, block)\n const props = block.props as any\n if (props?.children && Array.isArray(props.children)) {\n addToMap(props.children, map)\n }\n if (block.type === 'card') {\n if (props.header && Array.isArray(props.header)) {\n addToMap(props.header, map)\n }\n if (props.content && Array.isArray(props.content)) {\n addToMap(props.content, map)\n }\n if (props.footer && Array.isArray(props.footer)) {\n addToMap(props.footer, map)\n }\n }\n }\n }\n\n addToMap(oldBlocks, oldBlocksMap)\n addToMap(newBlocks, newBlocksMap)\n\n // Verificar blocos que mudaram ou foram adicionados\n for (const [id, newBlock] of newBlocksMap) {\n const oldBlock = oldBlocksMap.get(id)\n if (!oldBlock) {\n // Novo bloco adicionado - mas não forçar recriação completa, apenas notar\n localChangedBlocks.push({ blockId: id })\n } else {\n const diff = blocksAreDifferent(oldBlock, newBlock)\n if (diff.different) {\n localChangedBlocks.push({ blockId: id, changedProps: diff.changedProps })\n }\n }\n }\n\n // Verificar blocos que foram removidos\n for (const [id] of oldBlocksMap) {\n if (!newBlocksMap.has(id)) {\n // Bloco foi removido - retornar vazio para forçar recriação completa\n return []\n }\n }\n\n return localChangedBlocks\n }\n\n const result = compareBlocks(oldPage.structure, newPage.structure)\n\n changedBlocks.push(...result)\n\n return changedBlocks\n}\n\n/**\n * Determina o tipo de mudança baseado no bloco e propriedade modificada\n */\nexport function getChangeType(_blockId: string, propName: string, blockType?: string): 'text' | 'layout' | 'visual' {\n // Mudanças visuais (cores, tema)\n const visualProps = ['color', 'bg', 'background', 'backgroundColor', 'primary', 'secondary', 'accent']\n if (visualProps.some((p) => propName.toLowerCase().includes(p))) {\n return 'visual'\n }\n\n // Mudanças de texto\n const textBlockTypes = ['heading', 'text', 'button', 'link']\n if (blockType && textBlockTypes.includes(blockType)) {\n if (propName === 'text' || propName === 'content') {\n return 'text'\n }\n }\n\n // Mudanças de layout (padrão)\n return 'layout'\n}\n\n/**\n * Verifica se apenas um bloco foi modificado\n */\nexport function isSingleBlockChange(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): boolean {\n return changedBlocks.length === 1\n}\n\n/**\n * Obtém IDs dos blocos modificados\n */\nexport function getChangedBlockIds(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): string[] {\n return changedBlocks.map((c) => c.blockId)\n}\n\n/**\n * Verifica se as mudanças são apenas visuais (cores, background, etc)\n */\nexport function isVisualChangeOnly(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): boolean {\n if (changedBlocks.length === 0) return false\n \n const visualProps = ['color', 'bg', 'background', 'backgroundColor', 'border', 'shadow', 'radius']\n \n for (const change of changedBlocks) {\n if (!change.changedProps) return false\n \n // Se todas as propriedades mudadas são visuais\n const allVisual = change.changedProps.every((prop) => \n visualProps.some((vp) => prop.toLowerCase().includes(vp.toLowerCase()))\n )\n \n if (!allVisual) return false\n }\n \n return true\n}\n"],"names":["blocksAreDifferent","block1","block2","props1","props2","changedProps","allProps","prop","oldChildren","newChildren","oldIds","c","newIds","detectChangedBlocks","oldDoc","newDoc","changedBlocks","oldPage","p","newPage","oldRootIds","b","newRootIds","result","oldBlocks","newBlocks","localChangedBlocks","oldBlocksMap","newBlocksMap","addToMap","blocks","map","block","props","id","newBlock","oldBlock","diff"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changeDetector.js","sources":["../../src/utils/changeDetector.ts"],"sourcesContent":["/**\n * Change Detector\n * Detecta mudanças entre documentos para atualização parcial\n */\n\nimport { SiteDocument, Block } from '../engine/schema/siteDocument'\n\n\n/**\n * Compara dois blocos e retorna se são diferentes\n * Também retorna quais propriedades mudaram\n */\nfunction blocksAreDifferent(block1: Block, block2: Block): { different: boolean; changedProps?: string[] } {\n // Comparação rápida primeiro\n if (JSON.stringify(block1) === JSON.stringify(block2)) {\n return { different: false }\n }\n\n // Detectar quais propriedades mudaram\n const props1 = block1.props as Record<string, any>\n const props2 = block2.props as Record<string, any>\n const changedProps: string[] = []\n\n // Verificar todas as propriedades\n const allProps = new Set([...Object.keys(props1 || {}), ...Object.keys(props2 || {})])\n for (const prop of allProps) {\n // Ignorar propriedades que são arrays de filhos - essas mudanças são detectadas nos filhos\n if (prop === 'children' || prop === 'header' || prop === 'content' || prop === 'footer') {\n // Comparar apenas se os arrays têm tamanhos diferentes ou IDs diferentes\n const oldChildren = props1[prop] || []\n const newChildren = props2[prop] || []\n \n if (Array.isArray(oldChildren) && Array.isArray(newChildren)) {\n // Se os arrays têm tamanhos diferentes, a mudança será detectada nos filhos\n if (oldChildren.length !== newChildren.length) {\n changedProps.push(prop)\n } else {\n // Verificar se os IDs dos filhos são os mesmos (ordem pode ter mudado)\n const oldIds = oldChildren.map((c: any) => c?.id).filter(Boolean).sort()\n const newIds = newChildren.map((c: any) => c?.id).filter(Boolean).sort()\n if (JSON.stringify(oldIds) !== JSON.stringify(newIds)) {\n changedProps.push(prop)\n }\n }\n } else if (JSON.stringify(oldChildren) !== JSON.stringify(newChildren)) {\n changedProps.push(prop)\n }\n } else {\n // Para outras propriedades, comparar normalmente\n if (JSON.stringify(props1[prop]) !== JSON.stringify(props2[prop])) {\n changedProps.push(prop)\n }\n }\n }\n\n return { different: changedProps.length > 0, changedProps }\n}\n\n/**\n * Detecta quais blocos foram modificados entre dois documentos\n * @param pageId - ID da página atual sendo editada (se omitido, usa \"home\" ou primeira página)\n * @returns Array de objetos com blockId e changedProps\n */\nexport function detectChangedBlocks(\n oldDoc: SiteDocument,\n newDoc: SiteDocument,\n pageId?: string,\n): Array<{ blockId: string; changedProps?: string[] }> {\n const changedBlocks: Array<{ blockId: string; changedProps?: string[] }> = []\n\n // Comparar a página que está sendo editada\n const findPage = (doc: SiteDocument) =>\n (pageId ? doc.pages.find((p) => p.id === pageId) : null)\n || doc.pages.find((p) => p.id === 'home')\n || doc.pages[0]\n\n const oldPage = findPage(oldDoc)\n const newPage = findPage(newDoc)\n\n if (!oldPage || !newPage) {\n return [] // Se não há páginas, não há mudanças\n }\n\n // Comparação rápida: se os IDs dos blocos raiz são os mesmos, não precisa verificar estrutura\n const oldRootIds = (oldPage.structure || []).map(b => b?.id).filter(Boolean).sort()\n const newRootIds = (newPage.structure || []).map(b => b?.id).filter(Boolean).sort()\n \n // Se ambos estão vazios, não há mudança estrutural\n if (oldRootIds.length === 0 && newRootIds.length === 0) {\n // Ambos vazios - não há estrutura para comparar, retornar vazio (sem mudanças)\n return []\n }\n \n if (JSON.stringify(oldRootIds) !== JSON.stringify(newRootIds)) {\n // Estrutura mudou (blocos adicionados/removidos na raiz)\n // Retornar mudança especial indicando mudança estrutural\n return [{ blockId: '__structural__', changedProps: ['children'] }]\n }\n\n // Comparar estrutura recursivamente\n const compareBlocks = (oldBlocks: Block[], newBlocks: Block[]): Array<{ blockId: string; changedProps?: string[] }> => {\n const localChangedBlocks: Array<{ blockId: string; changedProps?: string[] }> = []\n \n // Criar mapas de blocos por ID\n const oldBlocksMap = new Map<string, Block>()\n const newBlocksMap = new Map<string, Block>()\n\n const addToMap = (blocks: Block[], map: Map<string, Block>) => {\n for (const block of blocks) {\n if (!block || !block.id) continue\n map.set(block.id, block)\n const props = block.props as Record<string, any>\n if (props?.children && Array.isArray(props.children)) {\n addToMap(props.children as Block[], map)\n }\n if (block.type === 'card') {\n if (props.header && Array.isArray(props.header)) {\n addToMap(props.header as Block[], map)\n }\n if (props.content && Array.isArray(props.content)) {\n addToMap(props.content as Block[], map)\n }\n if (props.footer && Array.isArray(props.footer)) {\n addToMap(props.footer as Block[], map)\n }\n }\n }\n }\n\n addToMap(oldBlocks, oldBlocksMap)\n addToMap(newBlocks, newBlocksMap)\n\n // Verificar blocos que mudaram ou foram adicionados\n for (const [id, newBlock] of newBlocksMap) {\n const oldBlock = oldBlocksMap.get(id)\n if (!oldBlock) {\n // Novo bloco adicionado - mas não forçar recriação completa, apenas notar\n localChangedBlocks.push({ blockId: id })\n } else {\n const diff = blocksAreDifferent(oldBlock, newBlock)\n if (diff.different) {\n localChangedBlocks.push({ blockId: id, changedProps: diff.changedProps })\n }\n }\n }\n\n // Verificar blocos que foram removidos\n for (const [id] of oldBlocksMap) {\n if (!newBlocksMap.has(id)) {\n // Bloco foi removido - retornar vazio para forçar recriação completa\n return []\n }\n }\n\n return localChangedBlocks\n }\n\n const result = compareBlocks(oldPage.structure, newPage.structure)\n\n changedBlocks.push(...result)\n\n return changedBlocks\n}\n\n/**\n * Determina o tipo de mudança baseado no bloco e propriedade modificada\n */\nexport function getChangeType(_blockId: string, propName: string, blockType?: string): 'text' | 'layout' | 'visual' {\n // Mudanças visuais (cores, tema)\n const visualProps = ['color', 'bg', 'background', 'backgroundColor', 'primary', 'secondary', 'accent']\n if (visualProps.some((p) => propName.toLowerCase().includes(p))) {\n return 'visual'\n }\n\n // Mudanças de texto\n const textBlockTypes = ['heading', 'text', 'button', 'link']\n if (blockType && textBlockTypes.includes(blockType)) {\n if (propName === 'text' || propName === 'content') {\n return 'text'\n }\n }\n\n // Mudanças de layout (padrão)\n return 'layout'\n}\n\n/**\n * Verifica se apenas um bloco foi modificado\n */\nexport function isSingleBlockChange(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): boolean {\n return changedBlocks.length === 1\n}\n\n/**\n * Obtém IDs dos blocos modificados\n */\nexport function getChangedBlockIds(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): string[] {\n return changedBlocks.map((c) => c.blockId)\n}\n\n/**\n * Verifica se as mudanças são apenas visuais (cores, background, etc)\n */\nexport function isVisualChangeOnly(changedBlocks: Array<{ blockId: string; changedProps?: string[] }>): boolean {\n if (changedBlocks.length === 0) return false\n \n const visualProps = ['color', 'bg', 'background', 'backgroundColor', 'border', 'shadow', 'radius']\n \n for (const change of changedBlocks) {\n if (!change.changedProps) return false\n \n // Se todas as propriedades mudadas são visuais\n const allVisual = change.changedProps.every((prop) => \n visualProps.some((vp) => prop.toLowerCase().includes(vp.toLowerCase()))\n )\n \n if (!allVisual) return false\n }\n \n return true\n}\n"],"names":["blocksAreDifferent","block1","block2","props1","props2","changedProps","allProps","prop","oldChildren","newChildren","oldIds","c","newIds","detectChangedBlocks","oldDoc","newDoc","pageId","changedBlocks","findPage","doc","p","oldPage","newPage","oldRootIds","b","newRootIds","result","oldBlocks","newBlocks","localChangedBlocks","oldBlocksMap","newBlocksMap","addToMap","blocks","map","block","props","id","newBlock","oldBlock","diff"],"mappings":"AAYA,SAASA,EAAmBC,GAAeC,GAAgE;AAEzG,MAAI,KAAK,UAAUD,CAAM,MAAM,KAAK,UAAUC,CAAM;AAClD,WAAO,EAAE,WAAW,GAAA;AAItB,QAAMC,IAASF,EAAO,OAChBG,IAASF,EAAO,OAChBG,IAAyB,CAAA,GAGzBC,IAAW,oBAAI,IAAI,CAAC,GAAG,OAAO,KAAKH,KAAU,CAAA,CAAE,GAAG,GAAG,OAAO,KAAKC,KAAU,CAAA,CAAE,CAAC,CAAC;AACrF,aAAWG,KAAQD;AAEjB,QAAIC,MAAS,cAAcA,MAAS,YAAYA,MAAS,aAAaA,MAAS,UAAU;AAEvF,YAAMC,IAAcL,EAAOI,CAAI,KAAK,CAAA,GAC9BE,IAAcL,EAAOG,CAAI,KAAK,CAAA;AAEpC,UAAI,MAAM,QAAQC,CAAW,KAAK,MAAM,QAAQC,CAAW;AAEzD,YAAID,EAAY,WAAWC,EAAY;AACrC,UAAAJ,EAAa,KAAKE,CAAI;AAAA,aACjB;AAEL,gBAAMG,IAASF,EAAY,IAAI,CAACG,MAAWA,GAAG,EAAE,EAAE,OAAO,OAAO,EAAE,KAAA,GAC5DC,IAASH,EAAY,IAAI,CAACE,MAAWA,GAAG,EAAE,EAAE,OAAO,OAAO,EAAE,KAAA;AAClE,UAAI,KAAK,UAAUD,CAAM,MAAM,KAAK,UAAUE,CAAM,KAClDP,EAAa,KAAKE,CAAI;AAAA,QAE1B;AAAA,UACF,CAAW,KAAK,UAAUC,CAAW,MAAM,KAAK,UAAUC,CAAW,KACnEJ,EAAa,KAAKE,CAAI;AAAA,IAE1B;AAEE,MAAI,KAAK,UAAUJ,EAAOI,CAAI,CAAC,MAAM,KAAK,UAAUH,EAAOG,CAAI,CAAC,KAC9DF,EAAa,KAAKE,CAAI;AAK5B,SAAO,EAAE,WAAWF,EAAa,SAAS,GAAG,cAAAA,EAAA;AAC/C;AAOO,SAASQ,EACdC,GACAC,GACAC,GACqD;AACrD,QAAMC,IAAqE,CAAA,GAGrEC,IAAW,CAACC,OACfH,IAASG,EAAI,MAAM,KAAK,CAACC,MAAMA,EAAE,OAAOJ,CAAM,IAAI,SAChDG,EAAI,MAAM,KAAK,CAACC,MAAMA,EAAE,OAAO,MAAM,KACrCD,EAAI,MAAM,CAAC,GAEVE,IAAUH,EAASJ,CAAM,GACzBQ,IAAUJ,EAASH,CAAM;AAE/B,MAAI,CAACM,KAAW,CAACC;AACf,WAAO,CAAA;AAIT,QAAMC,KAAcF,EAAQ,aAAa,CAAA,GAAI,IAAI,CAAAG,MAAKA,GAAG,EAAE,EAAE,OAAO,OAAO,EAAE,KAAA,GACvEC,KAAcH,EAAQ,aAAa,CAAA,GAAI,IAAI,CAAAE,MAAKA,GAAG,EAAE,EAAE,OAAO,OAAO,EAAE,KAAA;AAG7E,MAAID,EAAW,WAAW,KAAKE,EAAW,WAAW;AAEnD,WAAO,CAAA;AAGT,MAAI,KAAK,UAAUF,CAAU,MAAM,KAAK,UAAUE,CAAU;AAG1D,WAAO,CAAC,EAAE,SAAS,kBAAkB,cAAc,CAAC,UAAU,GAAG;AA6DnE,QAAMC,KAzDgB,CAACC,GAAoBC,MAA4E;AACrH,UAAMC,IAA0E,CAAA,GAG1EC,wBAAmB,IAAA,GACnBC,wBAAmB,IAAA,GAEnBC,IAAW,CAACC,GAAiBC,MAA4B;AAC7D,iBAAWC,KAASF,GAAQ;AAC1B,YAAI,CAACE,KAAS,CAACA,EAAM,GAAI;AACzB,QAAAD,EAAI,IAAIC,EAAM,IAAIA,CAAK;AACvB,cAAMC,IAAQD,EAAM;AACpB,QAAIC,GAAO,YAAY,MAAM,QAAQA,EAAM,QAAQ,KACjDJ,EAASI,EAAM,UAAqBF,CAAG,GAErCC,EAAM,SAAS,WACbC,EAAM,UAAU,MAAM,QAAQA,EAAM,MAAM,KAC5CJ,EAASI,EAAM,QAAmBF,CAAG,GAEnCE,EAAM,WAAW,MAAM,QAAQA,EAAM,OAAO,KAC9CJ,EAASI,EAAM,SAAoBF,CAAG,GAEpCE,EAAM,UAAU,MAAM,QAAQA,EAAM,MAAM,KAC5CJ,EAASI,EAAM,QAAmBF,CAAG;AAAA,MAG3C;AAAA,IACF;AAEA,IAAAF,EAASL,GAAWG,CAAY,GAChCE,EAASJ,GAAWG,CAAY;AAGhC,eAAW,CAACM,GAAIC,CAAQ,KAAKP,GAAc;AACzC,YAAMQ,IAAWT,EAAa,IAAIO,CAAE;AACpC,UAAI,CAACE;AAEH,QAAAV,EAAmB,KAAK,EAAE,SAASQ,EAAA,CAAI;AAAA,WAClC;AACL,cAAMG,IAAOxC,EAAmBuC,GAAUD,CAAQ;AAClD,QAAIE,EAAK,aACPX,EAAmB,KAAK,EAAE,SAASQ,GAAI,cAAcG,EAAK,cAAc;AAAA,MAE5E;AAAA,IACF;AAGA,eAAW,CAACH,CAAE,KAAKP;AACjB,UAAI,CAACC,EAAa,IAAIM,CAAE;AAEtB,eAAO,CAAA;AAIX,WAAOR;AAAA,EACT,GAE6BR,EAAQ,WAAWC,EAAQ,SAAS;AAEjE,SAAAL,EAAc,KAAK,GAAGS,CAAM,GAErBT;AACT;"}
|
package/dist/utils/cn.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { clsx as o } from "
|
|
2
|
-
import { twMerge as t } from "
|
|
1
|
+
import { clsx as o } from "clsx";
|
|
2
|
+
import { twMerge as t } from "tailwind-merge";
|
|
3
3
|
function n(...r) {
|
|
4
4
|
return t(o(r));
|
|
5
5
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { UploadConfig } from '../editor/LandingPageEditor';
|
|
2
|
+
/**
|
|
3
|
+
* Detect if a string is a Data URL
|
|
4
|
+
*/
|
|
5
|
+
export declare function isDataURL(str: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Convert Data URL to Blob
|
|
8
|
+
*/
|
|
9
|
+
export declare function dataURLtoBlob(dataURL: string): Blob;
|
|
10
|
+
/**
|
|
11
|
+
* Upload a Data URL to Supabase Storage
|
|
12
|
+
* @param dataURL - The data URL to upload
|
|
13
|
+
* @param uploadConfig - Upload configuration (tenantId, schoolId, siteId, authToken)
|
|
14
|
+
* @returns Promise with the public URL of the uploaded asset
|
|
15
|
+
*/
|
|
16
|
+
export declare function uploadDataURL(dataURL: string, uploadConfig: UploadConfig): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Process a block recursively to upload all Data URLs
|
|
19
|
+
* @param block - The block to process
|
|
20
|
+
* @param uploadConfig - Upload configuration
|
|
21
|
+
* @returns Promise with the processed block (Data URLs replaced with uploaded URLs)
|
|
22
|
+
*/
|
|
23
|
+
export declare function processBlockDataURLs(block: any, uploadConfig: UploadConfig): Promise<any>;
|
|
24
|
+
//# sourceMappingURL=dataURLUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataURLUtils.d.ts","sourceRoot":"","sources":["../../src/utils/dataURLUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAUnD;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,GAAG,EACV,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,GAAG,CAAC,CAqCd"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
function i(r) {
|
|
2
|
+
return r?.startsWith("data:image/") || r?.startsWith("data:video/");
|
|
3
|
+
}
|
|
4
|
+
function d(r) {
|
|
5
|
+
const t = r.split(","), e = t[0].match(/:(.*?);/)?.[1] || "image/png", a = atob(t[1]);
|
|
6
|
+
let o = a.length;
|
|
7
|
+
const s = new Uint8Array(o);
|
|
8
|
+
for (; o--; )
|
|
9
|
+
s[o] = a.charCodeAt(o);
|
|
10
|
+
return new Blob([s], { type: e });
|
|
11
|
+
}
|
|
12
|
+
async function c(r, t) {
|
|
13
|
+
if (!t?.tenantId) throw new Error("Upload config não disponível");
|
|
14
|
+
const e = d(r), a = new File([e], "image.png", { type: e.type }), o = new FormData();
|
|
15
|
+
o.append("file", a);
|
|
16
|
+
const s = "http://localhost:3001", n = new URLSearchParams();
|
|
17
|
+
n.append("tenantId", t.tenantId), n.append("assetType", "image"), t.schoolId && n.append("schoolId", t.schoolId), t.siteId && n.append("siteId", t.siteId);
|
|
18
|
+
const l = await fetch(`${s}/api/site-assets/upload?${n}`, {
|
|
19
|
+
method: "POST",
|
|
20
|
+
headers: {
|
|
21
|
+
Authorization: `Bearer ${t.authToken}`
|
|
22
|
+
},
|
|
23
|
+
body: o
|
|
24
|
+
});
|
|
25
|
+
if (!l.ok) {
|
|
26
|
+
const p = await l.json().catch(() => ({}));
|
|
27
|
+
throw new Error(p.message || "Upload falhou");
|
|
28
|
+
}
|
|
29
|
+
return (await l.json()).url;
|
|
30
|
+
}
|
|
31
|
+
async function g(r, t) {
|
|
32
|
+
const e = { ...r };
|
|
33
|
+
if (e.props) {
|
|
34
|
+
const a = { ...e.props };
|
|
35
|
+
a.logo && (typeof a.logo == "string" && i(a.logo) ? a.logo = await c(a.logo, t) : typeof a.logo == "object" && a.logo.src && i(a.logo.src) && (a.logo = { ...a.logo, src: await c(a.logo.src, t) })), a.image && typeof a.image == "string" && i(a.image) && (a.image = await c(a.image, t)), a.backgroundImage && typeof a.backgroundImage == "string" && i(a.backgroundImage) && (a.backgroundImage = await c(a.backgroundImage, t)), a.children && Array.isArray(a.children) && (a.children = await Promise.all(
|
|
36
|
+
a.children.map((o) => g(o, t))
|
|
37
|
+
)), e.props = a;
|
|
38
|
+
}
|
|
39
|
+
return e;
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
d as dataURLtoBlob,
|
|
43
|
+
i as isDataURL,
|
|
44
|
+
g as processBlockDataURLs,
|
|
45
|
+
c as uploadDataURL
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=dataURLUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataURLUtils.js","sources":["../../src/utils/dataURLUtils.ts"],"sourcesContent":["/**\n * Data URL Utilities\n * Helper functions for handling Data URLs (base64 encoded images/videos)\n * and uploading them to Supabase Storage\n */\n\nimport { UploadConfig } from '../editor/LandingPageEditor';\n\n/**\n * Detect if a string is a Data URL\n */\nexport function isDataURL(str: string): boolean {\n return str?.startsWith('data:image/') || str?.startsWith('data:video/');\n}\n\n/**\n * Convert Data URL to Blob\n */\nexport function dataURLtoBlob(dataURL: string): Blob {\n const arr = dataURL.split(',');\n const mime = arr[0].match(/:(.*?);/)?.[1] || 'image/png';\n const bstr = atob(arr[1]);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n\n/**\n * Upload a Data URL to Supabase Storage\n * @param dataURL - The data URL to upload\n * @param uploadConfig - Upload configuration (tenantId, schoolId, siteId, authToken)\n * @returns Promise with the public URL of the uploaded asset\n */\nexport async function uploadDataURL(\n dataURL: string,\n uploadConfig: UploadConfig\n): Promise<string> {\n if (!uploadConfig?.tenantId) throw new Error('Upload config não disponível');\n\n const blob = dataURLtoBlob(dataURL);\n const file = new File([blob], 'image.png', { type: blob.type });\n\n const formData = new FormData();\n formData.append('file', file);\n\n const apiUrl = (import.meta as any).env.VITE_API_URL || 'http://localhost:3001';\n const params = new URLSearchParams();\n params.append('tenantId', uploadConfig.tenantId);\n params.append('assetType', 'image');\n if (uploadConfig.schoolId) params.append('schoolId', uploadConfig.schoolId);\n if (uploadConfig.siteId) params.append('siteId', uploadConfig.siteId);\n\n const res = await fetch(`${apiUrl}/api/site-assets/upload?${params}`, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${uploadConfig.authToken}`,\n },\n body: formData,\n });\n\n if (!res.ok) {\n const errorData = await res.json().catch(() => ({}));\n throw new Error(errorData.message || 'Upload falhou');\n }\n\n const data = await res.json();\n return data.url;\n}\n\n/**\n * Process a block recursively to upload all Data URLs\n * @param block - The block to process\n * @param uploadConfig - Upload configuration\n * @returns Promise with the processed block (Data URLs replaced with uploaded URLs)\n */\nexport async function processBlockDataURLs(\n block: any,\n uploadConfig: UploadConfig\n): Promise<any> {\n const newBlock = { ...block };\n\n // Processar props que podem ter imagens\n if (newBlock.props) {\n const newProps = { ...newBlock.props };\n\n // Processar logo (pode ser string ou objeto)\n if (newProps.logo) {\n if (typeof newProps.logo === 'string' && isDataURL(newProps.logo)) {\n newProps.logo = await uploadDataURL(newProps.logo, uploadConfig);\n } else if (typeof newProps.logo === 'object' && newProps.logo.src && isDataURL(newProps.logo.src)) {\n newProps.logo = { ...newProps.logo, src: await uploadDataURL(newProps.logo.src, uploadConfig) };\n }\n }\n\n // Processar image prop (hero, etc)\n if (newProps.image && typeof newProps.image === 'string' && isDataURL(newProps.image)) {\n newProps.image = await uploadDataURL(newProps.image, uploadConfig);\n }\n\n // Processar backgroundImage\n if (newProps.backgroundImage && typeof newProps.backgroundImage === 'string' && isDataURL(newProps.backgroundImage)) {\n newProps.backgroundImage = await uploadDataURL(newProps.backgroundImage, uploadConfig);\n }\n\n // Processar children recursivamente\n if (newProps.children && Array.isArray(newProps.children)) {\n newProps.children = await Promise.all(\n newProps.children.map((child: any) => processBlockDataURLs(child, uploadConfig))\n );\n }\n\n newBlock.props = newProps;\n }\n\n return newBlock;\n}\n"],"names":["isDataURL","str","dataURLtoBlob","dataURL","arr","mime","bstr","n","u8arr","uploadDataURL","uploadConfig","blob","file","formData","apiUrl","params","res","errorData","processBlockDataURLs","block","newBlock","newProps","child"],"mappings":"AAWO,SAASA,EAAUC,GAAsB;AAC9C,SAAOA,GAAK,WAAW,aAAa,KAAKA,GAAK,WAAW,aAAa;AACxE;AAKO,SAASC,EAAcC,GAAuB;AACnD,QAAMC,IAAMD,EAAQ,MAAM,GAAG,GACvBE,IAAOD,EAAI,CAAC,EAAE,MAAM,SAAS,IAAI,CAAC,KAAK,aACvCE,IAAO,KAAKF,EAAI,CAAC,CAAC;AACxB,MAAIG,IAAID,EAAK;AACb,QAAME,IAAQ,IAAI,WAAWD,CAAC;AAC9B,SAAOA;AACL,IAAAC,EAAMD,CAAC,IAAID,EAAK,WAAWC,CAAC;AAE9B,SAAO,IAAI,KAAK,CAACC,CAAK,GAAG,EAAE,MAAMH,GAAM;AACzC;AAQA,eAAsBI,EACpBN,GACAO,GACiB;AACjB,MAAI,CAACA,GAAc,SAAU,OAAM,IAAI,MAAM,8BAA8B;AAE3E,QAAMC,IAAOT,EAAcC,CAAO,GAC5BS,IAAO,IAAI,KAAK,CAACD,CAAI,GAAG,aAAa,EAAE,MAAMA,EAAK,MAAM,GAExDE,IAAW,IAAI,SAAA;AACrB,EAAAA,EAAS,OAAO,QAAQD,CAAI;AAE5B,QAAME,IAAkD,yBAClDC,IAAS,IAAI,gBAAA;AACnB,EAAAA,EAAO,OAAO,YAAYL,EAAa,QAAQ,GAC/CK,EAAO,OAAO,aAAa,OAAO,GAC9BL,EAAa,YAAUK,EAAO,OAAO,YAAYL,EAAa,QAAQ,GACtEA,EAAa,UAAQK,EAAO,OAAO,UAAUL,EAAa,MAAM;AAEpE,QAAMM,IAAM,MAAM,MAAM,GAAGF,CAAM,2BAA2BC,CAAM,IAAI;AAAA,IACpE,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAiB,UAAUL,EAAa,SAAS;AAAA,IAAA;AAAA,IAEnD,MAAMG;AAAA,EAAA,CACP;AAED,MAAI,CAACG,EAAI,IAAI;AACX,UAAMC,IAAY,MAAMD,EAAI,KAAA,EAAO,MAAM,OAAO,CAAA,EAAG;AACnD,UAAM,IAAI,MAAMC,EAAU,WAAW,eAAe;AAAA,EACtD;AAGA,UADa,MAAMD,EAAI,KAAA,GACX;AACd;AAQA,eAAsBE,EACpBC,GACAT,GACc;AACd,QAAMU,IAAW,EAAE,GAAGD,EAAA;AAGtB,MAAIC,EAAS,OAAO;AAClB,UAAMC,IAAW,EAAE,GAAGD,EAAS,MAAA;AAG/B,IAAIC,EAAS,SACP,OAAOA,EAAS,QAAS,YAAYrB,EAAUqB,EAAS,IAAI,IAC9DA,EAAS,OAAO,MAAMZ,EAAcY,EAAS,MAAMX,CAAY,IACtD,OAAOW,EAAS,QAAS,YAAYA,EAAS,KAAK,OAAOrB,EAAUqB,EAAS,KAAK,GAAG,MAC9FA,EAAS,OAAO,EAAE,GAAGA,EAAS,MAAM,KAAK,MAAMZ,EAAcY,EAAS,KAAK,KAAKX,CAAY,EAAA,KAK5FW,EAAS,SAAS,OAAOA,EAAS,SAAU,YAAYrB,EAAUqB,EAAS,KAAK,MAClFA,EAAS,QAAQ,MAAMZ,EAAcY,EAAS,OAAOX,CAAY,IAI/DW,EAAS,mBAAmB,OAAOA,EAAS,mBAAoB,YAAYrB,EAAUqB,EAAS,eAAe,MAChHA,EAAS,kBAAkB,MAAMZ,EAAcY,EAAS,iBAAiBX,CAAY,IAInFW,EAAS,YAAY,MAAM,QAAQA,EAAS,QAAQ,MACtDA,EAAS,WAAW,MAAM,QAAQ;AAAA,MAChCA,EAAS,SAAS,IAAI,CAACC,MAAeJ,EAAqBI,GAAOZ,CAAY,CAAC;AAAA,IAAA,IAInFU,EAAS,QAAQC;AAAA,EACnB;AAEA,SAAOD;AACT;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SiteDocument } from '../engine/schema/siteDocument';
|
|
2
2
|
/**
|
|
3
3
|
* Gera hash do documento baseado em seu conteúdo
|
|
4
4
|
* Usa JSON.stringify para serializar e depois hash
|
|
5
5
|
*/
|
|
6
|
-
export declare function hashDocument(document:
|
|
6
|
+
export declare function hashDocument(document: SiteDocument): string;
|
|
7
7
|
/**
|
|
8
8
|
* Gera hash de um bloco específico
|
|
9
9
|
* Útil para cache de blocos individuais
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentHash.d.ts","sourceRoot":"","sources":["../../src/utils/documentHash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"documentHash.d.ts","sourceRoot":"","sources":["../../src/utils/documentHash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAgB5D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAU3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAQ5C"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import { logger as n } from "./logger.js";
|
|
2
|
+
function o(t) {
|
|
2
3
|
let r = 5381;
|
|
3
|
-
for (let
|
|
4
|
-
r = (r << 5) + r + t.charCodeAt(
|
|
4
|
+
for (let e = 0; e < t.length; e++)
|
|
5
|
+
r = (r << 5) + r + t.charCodeAt(e), r = r & r;
|
|
5
6
|
return Math.abs(r).toString(36);
|
|
6
7
|
}
|
|
7
|
-
function
|
|
8
|
+
function h(t) {
|
|
8
9
|
try {
|
|
9
10
|
const r = JSON.stringify(t, null, 0);
|
|
10
|
-
return
|
|
11
|
+
return o(r);
|
|
11
12
|
} catch (r) {
|
|
12
|
-
return
|
|
13
|
+
return n.error("Error hashing document:", r), Date.now().toString(36);
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
export {
|
|
16
|
-
|
|
17
|
+
h as hashDocument
|
|
17
18
|
};
|
|
18
19
|
//# sourceMappingURL=documentHash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentHash.js","sources":["../../src/utils/documentHash.ts"],"sourcesContent":["/**\n * Document Hash\n * Funções para gerar hash de documentos para cache\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"documentHash.js","sources":["../../src/utils/documentHash.ts"],"sourcesContent":["/**\n * Document Hash\n * Funções para gerar hash de documentos para cache\n */\n\nimport { SiteDocument } from '../engine/schema/siteDocument'\nimport { logger } from './logger'\n\n/**\n * Gera hash simples de uma string\n * Usa algoritmo djb2 (simples e rápido)\n */\nfunction simpleHash(str: string): string {\n let hash = 5381\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) + hash) + str.charCodeAt(i)\n hash = hash & hash // Convert to 32bit integer\n }\n return Math.abs(hash).toString(36)\n}\n\n/**\n * Gera hash do documento baseado em seu conteúdo\n * Usa JSON.stringify para serializar e depois hash\n */\nexport function hashDocument(document: SiteDocument): string {\n try {\n // Serializar documento (sem espaços para consistência)\n const serialized = JSON.stringify(document, null, 0)\n return simpleHash(serialized)\n } catch (error) {\n logger.error('Error hashing document:', error)\n // Fallback: usar timestamp se houver erro\n return Date.now().toString(36)\n }\n}\n\n/**\n * Gera hash de um bloco específico\n * Útil para cache de blocos individuais\n */\nexport function hashBlock(block: any): string {\n try {\n const serialized = JSON.stringify(block, null, 0)\n return simpleHash(serialized)\n } catch (error) {\n logger.error('Error hashing block:', error)\n return Date.now().toString(36)\n }\n}\n"],"names":["simpleHash","str","hash","i","hashDocument","document","serialized","error","logger"],"mappings":";AAYA,SAASA,EAAWC,GAAqB;AACvC,MAAIC,IAAO;AACX,WAASC,IAAI,GAAGA,IAAIF,EAAI,QAAQE;AAC9B,IAAAD,KAASA,KAAQ,KAAKA,IAAQD,EAAI,WAAWE,CAAC,GAC9CD,IAAOA,IAAOA;AAEhB,SAAO,KAAK,IAAIA,CAAI,EAAE,SAAS,EAAE;AACnC;AAMO,SAASE,EAAaC,GAAgC;AAC3D,MAAI;AAEF,UAAMC,IAAa,KAAK,UAAUD,GAAU,MAAM,CAAC;AACnD,WAAOL,EAAWM,CAAU;AAAA,EAC9B,SAASC,GAAO;AACd,WAAAC,EAAO,MAAM,2BAA2BD,CAAK,GAEtC,KAAK,MAAM,SAAS,EAAE;AAAA,EAC/B;AACF;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility — silenciável em produção
|
|
3
|
+
*
|
|
4
|
+
* Em dev: exibe tudo.
|
|
5
|
+
* Em produção: só warn/error (e somente se explicitamente habilitado).
|
|
6
|
+
*/
|
|
7
|
+
export declare const logger: {
|
|
8
|
+
readonly log: (...data: any[]) => void;
|
|
9
|
+
readonly warn: (...data: any[]) => void;
|
|
10
|
+
readonly error: (...data: any[]) => void;
|
|
11
|
+
readonly debug: (...data: any[]) => void;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,eAAO,MAAM,MAAM;;;;;CAKT,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const o = typeof process < "u" ? process.env.NODE_ENV !== "production" : typeof import.meta < "u" && !1;
|
|
2
|
+
function e() {
|
|
3
|
+
}
|
|
4
|
+
const n = {
|
|
5
|
+
log: o ? console.log.bind(console) : e,
|
|
6
|
+
warn: console.warn.bind(console),
|
|
7
|
+
error: console.error.bind(console),
|
|
8
|
+
debug: o ? console.log.bind(console) : e
|
|
9
|
+
};
|
|
10
|
+
export {
|
|
11
|
+
n as logger
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../src/utils/logger.ts"],"sourcesContent":["/**\n * Logger utility — silenciável em produção\n *\n * Em dev: exibe tudo.\n * Em produção: só warn/error (e somente se explicitamente habilitado).\n */\n\nconst isDev =\n typeof process !== \"undefined\"\n ? process.env.NODE_ENV !== \"production\"\n : typeof import.meta !== \"undefined\" &&\n (import.meta as any).env?.DEV === true;\n\nfunction noop() {}\n\nexport const logger = {\n log: isDev ? console.log.bind(console) : noop,\n warn: console.warn.bind(console),\n error: console.error.bind(console),\n debug: isDev ? console.log.bind(console) : noop,\n} as const;\n"],"names":["isDev","noop","logger"],"mappings":"AAOA,MAAMA,IACJ,OAAO,UAAY,MACf,QAAQ,IAAI,aAAa,eACzB,OAAO,cAAgB,OACtB;AAEP,SAASC,IAAO;AAAC;AAEV,MAAMC,IAAS;AAAA,EACpB,KAAKF,IAAQ,QAAQ,IAAI,KAAK,OAAO,IAAIC;AAAA,EACzC,MAAM,QAAQ,KAAK,KAAK,OAAO;AAAA,EAC/B,OAAO,QAAQ,MAAM,KAAK,OAAO;AAAA,EACjC,OAAOD,IAAQ,QAAQ,IAAI,KAAK,OAAO,IAAIC;AAC7C;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NavbarBlock,
|
|
1
|
+
import { NavbarBlock, SiteDocument, SitePage } from '../engine/schema/siteDocument';
|
|
2
2
|
import { Patch } from '../engine/patch/types';
|
|
3
3
|
/**
|
|
4
4
|
* Informação sobre um bloco navbar encontrado
|
|
@@ -18,7 +18,7 @@ interface NavbarLink {
|
|
|
18
18
|
/**
|
|
19
19
|
* Encontra todos os blocos navbar em todas as páginas do documento
|
|
20
20
|
*/
|
|
21
|
-
export declare function findNavbarBlocks(document:
|
|
21
|
+
export declare function findNavbarBlocks(document: SiteDocument): NavbarBlockInfo[];
|
|
22
22
|
/**
|
|
23
23
|
* Gera array de links do navbar a partir das páginas do documento
|
|
24
24
|
*/
|
|
@@ -27,6 +27,6 @@ export declare function generateNavbarLinks(pages: SitePage[]): NavbarLink[];
|
|
|
27
27
|
* Sincroniza os links de todos os navbars com as páginas do documento
|
|
28
28
|
* Retorna array de patches para aplicar
|
|
29
29
|
*/
|
|
30
|
-
export declare function syncNavbarLinks(document:
|
|
30
|
+
export declare function syncNavbarLinks(document: SiteDocument): Patch;
|
|
31
31
|
export {};
|
|
32
32
|
//# sourceMappingURL=navbarSync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navbarSync.d.ts","sourceRoot":"","sources":["../../src/utils/navbarSync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAS,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"navbarSync.d.ts","sourceRoot":"","sources":["../../src/utils/navbarSync.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAS,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAC1F,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAI7C;;GAEG;AACH,UAAU,eAAe;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAkDD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,EAAE,CAQ1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAKnE;AAeD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,KAAK,CAoC7D"}
|
package/dist/utils/navbarSync.js
CHANGED
|
@@ -1,55 +1,56 @@
|
|
|
1
1
|
import { PatchBuilder as s } from "../engine/patch/PatchBuilder.js";
|
|
2
|
-
|
|
2
|
+
import { logger as a } from "./logger.js";
|
|
3
|
+
function e(t, o, n = []) {
|
|
3
4
|
for (const c of t) {
|
|
4
|
-
c.type === "navbar" &&
|
|
5
|
+
c.type === "navbar" && n.push({
|
|
5
6
|
block: c,
|
|
6
|
-
pageId:
|
|
7
|
+
pageId: o,
|
|
7
8
|
blockId: c.id
|
|
8
9
|
});
|
|
9
10
|
const r = c.props;
|
|
10
|
-
r?.children && Array.isArray(r.children) && e(r.children,
|
|
11
|
+
r?.children && Array.isArray(r.children) && e(r.children, o, n), c.type === "card" && (r?.header && Array.isArray(r.header) && e(r.header, o, n), r?.content && Array.isArray(r.content) && e(r.content, o, n), r?.footer && Array.isArray(r.footer) && e(r.footer, o, n)), ["section", "container", "box", "stack", "grid"].includes(c.type) && r?.children && Array.isArray(r.children) && e(r.children, o, n);
|
|
11
12
|
}
|
|
12
|
-
return o;
|
|
13
|
-
}
|
|
14
|
-
function a(t) {
|
|
15
|
-
const n = [];
|
|
16
|
-
for (const o of t.pages)
|
|
17
|
-
e(o.structure, o.id, n);
|
|
18
13
|
return n;
|
|
19
14
|
}
|
|
20
15
|
function f(t) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
16
|
+
const o = [];
|
|
17
|
+
for (const n of t.pages)
|
|
18
|
+
e(n.structure, n.id, o);
|
|
19
|
+
return o;
|
|
25
20
|
}
|
|
26
21
|
function l(t) {
|
|
22
|
+
return t.map((o) => ({
|
|
23
|
+
text: o.name,
|
|
24
|
+
href: o.slug === "home" ? "/" : `/p/${o.slug}`
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
function u(t) {
|
|
27
28
|
return t.props._autoSync !== !1;
|
|
28
29
|
}
|
|
29
|
-
function
|
|
30
|
-
const
|
|
30
|
+
function h(t) {
|
|
31
|
+
const o = [], n = l(t.pages), c = f(t);
|
|
31
32
|
for (const r of c)
|
|
32
|
-
if (
|
|
33
|
+
if (u(r.block))
|
|
33
34
|
try {
|
|
34
35
|
const i = s.updateBlockProp(
|
|
35
36
|
t,
|
|
36
37
|
r.pageId,
|
|
37
38
|
r.blockId,
|
|
38
39
|
"links",
|
|
39
|
-
|
|
40
|
+
n
|
|
40
41
|
);
|
|
41
|
-
|
|
42
|
+
o.push(...i);
|
|
42
43
|
} catch (i) {
|
|
43
|
-
|
|
44
|
+
a.warn(
|
|
44
45
|
`Failed to sync navbar ${r.blockId} in page ${r.pageId}:`,
|
|
45
46
|
i
|
|
46
47
|
);
|
|
47
48
|
}
|
|
48
|
-
return
|
|
49
|
+
return o;
|
|
49
50
|
}
|
|
50
51
|
export {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
f as findNavbarBlocks,
|
|
53
|
+
l as generateNavbarLinks,
|
|
54
|
+
h as syncNavbarLinks
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=navbarSync.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navbarSync.js","sources":["../../src/utils/navbarSync.ts"],"sourcesContent":["/**\n * Navbar Sync - Sincronização automática de links do navbar\n * Sistema que mantém os links do navbar atualizados com as páginas do documento\n */\n\nimport { Block, NavbarBlock,
|
|
1
|
+
{"version":3,"file":"navbarSync.js","sources":["../../src/utils/navbarSync.ts"],"sourcesContent":["/**\n * Navbar Sync - Sincronização automática de links do navbar\n * Sistema que mantém os links do navbar atualizados com as páginas do documento\n */\n\nimport { Block, NavbarBlock, SiteDocument, SitePage } from \"@/engine/schema/siteDocument\";\nimport { Patch } from \"@/engine/patch/types\";\nimport { PatchBuilder } from \"@/engine/patch/PatchBuilder\";\nimport { logger } from \"./logger\";\n\n/**\n * Informação sobre um bloco navbar encontrado\n */\ninterface NavbarBlockInfo {\n block: NavbarBlock;\n pageId: string;\n blockId: string;\n}\n\n/**\n * Link do navbar\n */\ninterface NavbarLink {\n text: string;\n href: string;\n}\n\n/**\n * Busca recursiva por blocos navbar na estrutura\n */\nfunction findNavbarBlocksInStructure(\n structure: Block[],\n pageId: string,\n navbars: NavbarBlockInfo[] = []\n): NavbarBlockInfo[] {\n for (const block of structure) {\n // Se é um navbar, adiciona à lista\n if (block.type === \"navbar\") {\n navbars.push({\n block: block as NavbarBlock,\n pageId,\n blockId: block.id,\n });\n }\n\n // Busca recursiva em children\n const props = block.props as Record<string, any>;\n if (props?.children && Array.isArray(props.children)) {\n findNavbarBlocksInStructure(props.children, pageId, navbars);\n }\n\n // Busca em slots de card\n if (block.type === \"card\") {\n if (props?.header && Array.isArray(props.header)) {\n findNavbarBlocksInStructure(props.header, pageId, navbars);\n }\n if (props?.content && Array.isArray(props.content)) {\n findNavbarBlocksInStructure(props.content, pageId, navbars);\n }\n if (props?.footer && Array.isArray(props.footer)) {\n findNavbarBlocksInStructure(props.footer, pageId, navbars);\n }\n }\n\n // Busca em children de section/container/box/stack/grid\n if ([\"section\", \"container\", \"box\", \"stack\", \"grid\"].includes(block.type)) {\n if (props?.children && Array.isArray(props.children)) {\n findNavbarBlocksInStructure(props.children, pageId, navbars);\n }\n }\n }\n\n return navbars;\n}\n\n/**\n * Encontra todos os blocos navbar em todas as páginas do documento\n */\nexport function findNavbarBlocks(document: SiteDocument): NavbarBlockInfo[] {\n const navbars: NavbarBlockInfo[] = [];\n\n for (const page of document.pages) {\n findNavbarBlocksInStructure(page.structure, page.id, navbars);\n }\n\n return navbars;\n}\n\n/**\n * Gera array de links do navbar a partir das páginas do documento\n */\nexport function generateNavbarLinks(pages: SitePage[]): NavbarLink[] {\n return pages.map((page) => ({\n text: page.name,\n href: page.slug === \"home\" ? \"/\" : `/p/${page.slug}`,\n }));\n}\n\n/**\n * Verifica se um bloco navbar deve ter sincronização automática\n */\nfunction shouldAutoSync(navbarBlock: NavbarBlock): boolean {\n const props = navbarBlock.props as Record<string, any>;\n // Se _autoSync foi explicitamente setado como false, respeitar\n if (props._autoSync === false) {\n return false;\n }\n // Por padrão, sincronizar (undefined ou true)\n return true;\n}\n\n/**\n * Sincroniza os links de todos os navbars com as páginas do documento\n * Retorna array de patches para aplicar\n */\nexport function syncNavbarLinks(document: SiteDocument): Patch {\n const patches: Patch = [];\n\n // Gera links a partir das páginas\n const links = generateNavbarLinks(document.pages);\n\n // Encontra todos os navbars\n const navbars = findNavbarBlocks(document);\n\n // Para cada navbar, cria patch de atualização\n for (const navbarInfo of navbars) {\n // Verifica se deve sincronizar\n if (!shouldAutoSync(navbarInfo.block)) {\n continue;\n }\n\n try {\n // Cria patch para atualizar a propriedade links\n const patch = PatchBuilder.updateBlockProp(\n document,\n navbarInfo.pageId,\n navbarInfo.blockId,\n \"links\",\n links\n );\n\n patches.push(...patch);\n } catch (error) {\n logger.warn(\n `Failed to sync navbar ${navbarInfo.blockId} in page ${navbarInfo.pageId}:`,\n error\n );\n }\n }\n\n return patches;\n}\n"],"names":["findNavbarBlocksInStructure","structure","pageId","navbars","block","props","findNavbarBlocks","document","page","generateNavbarLinks","pages","shouldAutoSync","navbarBlock","syncNavbarLinks","patches","links","navbarInfo","patch","PatchBuilder","error","logger"],"mappings":";;AA8BA,SAASA,EACPC,GACAC,GACAC,IAA6B,CAAA,GACV;AACnB,aAAWC,KAASH,GAAW;AAE7B,IAAIG,EAAM,SAAS,YACjBD,EAAQ,KAAK;AAAA,MACX,OAAAC;AAAA,MACA,QAAAF;AAAA,MACA,SAASE,EAAM;AAAA,IAAA,CAChB;AAIH,UAAMC,IAAQD,EAAM;AACpB,IAAIC,GAAO,YAAY,MAAM,QAAQA,EAAM,QAAQ,KACjDL,EAA4BK,EAAM,UAAUH,GAAQC,CAAO,GAIzDC,EAAM,SAAS,WACbC,GAAO,UAAU,MAAM,QAAQA,EAAM,MAAM,KAC7CL,EAA4BK,EAAM,QAAQH,GAAQC,CAAO,GAEvDE,GAAO,WAAW,MAAM,QAAQA,EAAM,OAAO,KAC/CL,EAA4BK,EAAM,SAASH,GAAQC,CAAO,GAExDE,GAAO,UAAU,MAAM,QAAQA,EAAM,MAAM,KAC7CL,EAA4BK,EAAM,QAAQH,GAAQC,CAAO,IAKzD,CAAC,WAAW,aAAa,OAAO,SAAS,MAAM,EAAE,SAASC,EAAM,IAAI,KAClEC,GAAO,YAAY,MAAM,QAAQA,EAAM,QAAQ,KACjDL,EAA4BK,EAAM,UAAUH,GAAQC,CAAO;AAAA,EAGjE;AAEA,SAAOA;AACT;AAKO,SAASG,EAAiBC,GAA2C;AAC1E,QAAMJ,IAA6B,CAAA;AAEnC,aAAWK,KAAQD,EAAS;AAC1B,IAAAP,EAA4BQ,EAAK,WAAWA,EAAK,IAAIL,CAAO;AAG9D,SAAOA;AACT;AAKO,SAASM,EAAoBC,GAAiC;AACnE,SAAOA,EAAM,IAAI,CAACF,OAAU;AAAA,IAC1B,MAAMA,EAAK;AAAA,IACX,MAAMA,EAAK,SAAS,SAAS,MAAM,MAAMA,EAAK,IAAI;AAAA,EAAA,EAClD;AACJ;AAKA,SAASG,EAAeC,GAAmC;AAGzD,SAFcA,EAAY,MAEhB,cAAc;AAK1B;AAMO,SAASC,EAAgBN,GAA+B;AAC7D,QAAMO,IAAiB,CAAA,GAGjBC,IAAQN,EAAoBF,EAAS,KAAK,GAG1CJ,IAAUG,EAAiBC,CAAQ;AAGzC,aAAWS,KAAcb;AAEvB,QAAKQ,EAAeK,EAAW,KAAK;AAIpC,UAAI;AAEF,cAAMC,IAAQC,EAAa;AAAA,UACzBX;AAAA,UACAS,EAAW;AAAA,UACXA,EAAW;AAAA,UACX;AAAA,UACAD;AAAA,QAAA;AAGF,QAAAD,EAAQ,KAAK,GAAGG,CAAK;AAAA,MACvB,SAASE,GAAO;AACd,QAAAC,EAAO;AAAA,UACL,yBAAyBJ,EAAW,OAAO,YAAYA,EAAW,MAAM;AAAA,UACxEG;AAAA,QAAA;AAAA,MAEJ;AAGF,SAAOL;AACT;"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
/** Slugs canônicos das páginas pré-fabricadas do site. Links do navbar/CTAs usam /site/p/:slug. */
|
|
4
|
-
export declare const CANONICAL_SITE_PAGE_SLUGS: readonly ["home", "avisos", "cursos", "contato", "sobre", "metodologia", "depoimentos", "faq"];
|
|
1
|
+
import { SiteDocument as EngineDocument } from '../engine/schema/siteDocument';
|
|
2
|
+
import { SiteDocument as SharedDocument } from '../shared/schema';
|
|
5
3
|
/**
|
|
6
4
|
* Converte um documento no formato shared (usado nos templates em shared/templates)
|
|
7
|
-
* para o formato do engine (usado pelo
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* para o formato do engine (usado pelo LandingPageEditor e Preview).
|
|
6
|
+
*
|
|
7
|
+
* Cria apenas a página "home" com a estrutura do template.
|
|
8
|
+
* Páginas adicionais podem ser criadas pelo usuário no editor (botão "+ Nova Página")
|
|
9
|
+
* ou por plugins ativados (ex: Blog cria páginas "Blog" e "Post").
|
|
11
10
|
*/
|
|
12
11
|
export declare function sharedTemplateToEngineDocument(shared: SharedDocument): EngineDocument;
|
|
13
12
|
//# sourceMappingURL=sharedTemplateToEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedTemplateToEngine.d.ts","sourceRoot":"","sources":["../../src/utils/sharedTemplateToEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sharedTemplateToEngine.d.ts","sourceRoot":"","sources":["../../src/utils/sharedTemplateToEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,KAAK,EAAE,YAAY,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvE;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,cAAc,GACrB,cAAc,CAkBhB"}
|
|
@@ -1,92 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
"home",
|
|
4
|
-
"avisos",
|
|
5
|
-
"cursos",
|
|
6
|
-
"contato",
|
|
7
|
-
"sobre",
|
|
8
|
-
"metodologia",
|
|
9
|
-
"depoimentos",
|
|
10
|
-
"faq"
|
|
11
|
-
];
|
|
12
|
-
function p(o, e, n, i) {
|
|
13
|
-
return [
|
|
14
|
-
m(i),
|
|
1
|
+
function o(r) {
|
|
2
|
+
const e = a(r.theme), t = r.structure ? [...r.structure] : [], n = [
|
|
15
3
|
{
|
|
16
|
-
id:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
id: `${o}-placeholder`,
|
|
22
|
-
type: "text",
|
|
23
|
-
props: { text: n }
|
|
24
|
-
},
|
|
25
|
-
d()
|
|
4
|
+
id: "home",
|
|
5
|
+
name: r.meta?.title || "Home",
|
|
6
|
+
slug: "home",
|
|
7
|
+
structure: t
|
|
8
|
+
}
|
|
26
9
|
];
|
|
27
|
-
}
|
|
28
|
-
const c = {
|
|
29
|
-
avisos: {
|
|
30
|
-
name: "Avisos",
|
|
31
|
-
placeholder: "Os avisos e comunicados aparecerão aqui quando houver conteúdo."
|
|
32
|
-
},
|
|
33
|
-
cursos: {
|
|
34
|
-
name: "Cursos",
|
|
35
|
-
placeholder: "Conheça nossos cursos e formações. O conteúdo será exibido aqui."
|
|
36
|
-
},
|
|
37
|
-
contato: {
|
|
38
|
-
name: "Contato",
|
|
39
|
-
placeholder: "Entre em contato conosco. As informações serão exibidas aqui."
|
|
40
|
-
},
|
|
41
|
-
sobre: {
|
|
42
|
-
name: "Sobre",
|
|
43
|
-
placeholder: "Conheça nossa história e missão. O conteúdo será exibido aqui."
|
|
44
|
-
},
|
|
45
|
-
metodologia: {
|
|
46
|
-
name: "Metodologia",
|
|
47
|
-
placeholder: "Nossa forma de ensinar. O conteúdo será exibido aqui."
|
|
48
|
-
},
|
|
49
|
-
depoimentos: {
|
|
50
|
-
name: "Depoimentos",
|
|
51
|
-
placeholder: "O que nossos alunos dizem. Os depoimentos serão exibidos aqui."
|
|
52
|
-
},
|
|
53
|
-
faq: {
|
|
54
|
-
name: "FAQ",
|
|
55
|
-
placeholder: "Perguntas e respostas frequentes. O conteúdo será exibido aqui."
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
function h(o) {
|
|
59
|
-
const e = l(o.theme), n = o.structure ? [...o.structure] : [], t = [
|
|
60
|
-
{ id: "home", name: o.meta?.title || "Home", slug: "home" },
|
|
61
|
-
...u.filter((a) => a !== "home").map((a) => ({
|
|
62
|
-
id: a,
|
|
63
|
-
name: c[a].name,
|
|
64
|
-
slug: a
|
|
65
|
-
}))
|
|
66
|
-
].map(({ id: a, name: r, slug: s }) => ({
|
|
67
|
-
id: a,
|
|
68
|
-
name: r,
|
|
69
|
-
slug: s,
|
|
70
|
-
structure: []
|
|
71
|
-
}));
|
|
72
|
-
t[0].structure = n;
|
|
73
|
-
for (let a = 1; a < t.length; a++) {
|
|
74
|
-
const r = t[a], s = c[r.id];
|
|
75
|
-
r.structure = p(
|
|
76
|
-
r.id,
|
|
77
|
-
s.name,
|
|
78
|
-
s.placeholder,
|
|
79
|
-
t
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
10
|
return {
|
|
83
11
|
schemaVersion: 2,
|
|
84
12
|
theme: e,
|
|
85
|
-
pages:
|
|
13
|
+
pages: n
|
|
86
14
|
};
|
|
87
15
|
}
|
|
88
|
-
function
|
|
89
|
-
const e =
|
|
16
|
+
function a(r) {
|
|
17
|
+
const e = r.colors;
|
|
90
18
|
return {
|
|
91
19
|
colors: {
|
|
92
20
|
bg: e.background ?? "#ffffff",
|
|
@@ -110,10 +38,10 @@ function l(o) {
|
|
|
110
38
|
backgroundStyle: "flat",
|
|
111
39
|
typography: {
|
|
112
40
|
fontFamily: {
|
|
113
|
-
heading:
|
|
114
|
-
body:
|
|
41
|
+
heading: r.typography?.fontFamilyHeading ?? "Inter, system-ui, sans-serif",
|
|
42
|
+
body: r.typography?.fontFamily ?? "Inter, system-ui, sans-serif"
|
|
115
43
|
},
|
|
116
|
-
baseSize:
|
|
44
|
+
baseSize: r.typography?.baseFontSize ?? "16px",
|
|
117
45
|
headingScale: {
|
|
118
46
|
h1: "2.5rem",
|
|
119
47
|
h2: "2rem",
|
|
@@ -126,7 +54,6 @@ function l(o) {
|
|
|
126
54
|
};
|
|
127
55
|
}
|
|
128
56
|
export {
|
|
129
|
-
|
|
130
|
-
h as sharedTemplateToEngineDocument
|
|
57
|
+
o as sharedTemplateToEngineDocument
|
|
131
58
|
};
|
|
132
59
|
//# sourceMappingURL=sharedTemplateToEngine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sharedTemplateToEngine.js","sources":["../../src/utils/sharedTemplateToEngine.ts"],"sourcesContent":["/**\n * Converte documento no formato shared (templates) para o formato do engine
|
|
1
|
+
{"version":3,"file":"sharedTemplateToEngine.js","sources":["../../src/utils/sharedTemplateToEngine.ts"],"sourcesContent":["/**\n * Converte documento no formato shared (templates) para o formato do engine.\n * Shared: meta, theme (SimpleThemeTokens), structure na raiz.\n * Engine: schemaVersion, theme (ThemeTokens), pages[].structure.\n */\n\nimport type { SiteDocument as EngineDocument } from \"../engine/schema/siteDocument\";\nimport type { ThemeTokens } from \"../engine/schema/themeTokens\";\nimport type { SiteDocument as SharedDocument } from \"../shared/schema\";\n\n/**\n * Converte um documento no formato shared (usado nos templates em shared/templates)\n * para o formato do engine (usado pelo LandingPageEditor e Preview).\n *\n * Cria apenas a página \"home\" com a estrutura do template.\n * Páginas adicionais podem ser criadas pelo usuário no editor (botão \"+ Nova Página\")\n * ou por plugins ativados (ex: Blog cria páginas \"Blog\" e \"Post\").\n */\nexport function sharedTemplateToEngineDocument(\n shared: SharedDocument,\n): EngineDocument {\n const theme = mapSharedThemeToEngine(shared.theme);\n const structure = shared.structure ? [...shared.structure] : [];\n\n const pages: EngineDocument[\"pages\"] = [\n {\n id: \"home\",\n name: shared.meta?.title || \"Home\",\n slug: \"home\",\n structure: structure as EngineDocument[\"pages\"][0][\"structure\"],\n },\n ];\n\n return {\n schemaVersion: 2,\n theme,\n pages,\n };\n}\n\nfunction mapSharedThemeToEngine(\n sharedTheme: SharedDocument[\"theme\"],\n): ThemeTokens {\n const c = sharedTheme.colors;\n return {\n colors: {\n bg: c.background ?? \"#ffffff\",\n surface: c.surface ?? \"#f8fafc\",\n border: c.border ?? \"#e2e8f0\",\n text: c.text ?? \"#1e293b\",\n mutedText: c.textMuted ?? \"#64748b\",\n primary: c.primary ?? \"#3b82f6\",\n primaryText: \"#ffffff\",\n secondary: c.secondary ?? \"#64748b\",\n accent: c.accent ?? \"#f59e0b\",\n ring: c.primary ?? \"#3b82f6\",\n success: c.success,\n warning: c.warning,\n danger: c.error,\n },\n radiusScale: \"md\",\n shadowScale: \"soft\",\n spacingScale: \"normal\",\n motion: \"subtle\",\n backgroundStyle: \"flat\",\n typography: {\n fontFamily: {\n heading:\n sharedTheme.typography?.fontFamilyHeading ??\n \"Inter, system-ui, sans-serif\",\n body:\n sharedTheme.typography?.fontFamily ?? \"Inter, system-ui, sans-serif\",\n },\n baseSize: sharedTheme.typography?.baseFontSize ?? \"16px\",\n headingScale: {\n h1: \"2.5rem\",\n h2: \"2rem\",\n h3: \"1.75rem\",\n h4: \"1.5rem\",\n h5: \"1.25rem\",\n h6: \"1rem\",\n },\n },\n };\n}\n"],"names":["sharedTemplateToEngineDocument","shared","theme","mapSharedThemeToEngine","structure","pages","sharedTheme","c"],"mappings":"AAkBO,SAASA,EACdC,GACgB;AAChB,QAAMC,IAAQC,EAAuBF,EAAO,KAAK,GAC3CG,IAAYH,EAAO,YAAY,CAAC,GAAGA,EAAO,SAAS,IAAI,CAAA,GAEvDI,IAAiC;AAAA,IACrC;AAAA,MACE,IAAI;AAAA,MACJ,MAAMJ,EAAO,MAAM,SAAS;AAAA,MAC5B,MAAM;AAAA,MACN,WAAAG;AAAA,IAAA;AAAA,EACF;AAGF,SAAO;AAAA,IACL,eAAe;AAAA,IACf,OAAAF;AAAA,IACA,OAAAG;AAAA,EAAA;AAEJ;AAEA,SAASF,EACPG,GACa;AACb,QAAMC,IAAID,EAAY;AACtB,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,IAAIC,EAAE,cAAc;AAAA,MACpB,SAASA,EAAE,WAAW;AAAA,MACtB,QAAQA,EAAE,UAAU;AAAA,MACpB,MAAMA,EAAE,QAAQ;AAAA,MAChB,WAAWA,EAAE,aAAa;AAAA,MAC1B,SAASA,EAAE,WAAW;AAAA,MACtB,aAAa;AAAA,MACb,WAAWA,EAAE,aAAa;AAAA,MAC1B,QAAQA,EAAE,UAAU;AAAA,MACpB,MAAMA,EAAE,WAAW;AAAA,MACnB,SAASA,EAAE;AAAA,MACX,SAASA,EAAE;AAAA,MACX,QAAQA,EAAE;AAAA,IAAA;AAAA,IAEZ,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,iBAAiB;AAAA,IACjB,YAAY;AAAA,MACV,YAAY;AAAA,QACV,SACED,EAAY,YAAY,qBACxB;AAAA,QACF,MACEA,EAAY,YAAY,cAAc;AAAA,MAAA;AAAA,MAE1C,UAAUA,EAAY,YAAY,gBAAgB;AAAA,MAClD,cAAc;AAAA,QACZ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,EACF;AAEJ;"}
|