@brunoalz/smartgesti-site-editor 1.0.0 → 1.2.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.map +1 -1
- package/dist/editor/BlockSelector.js +60 -57
- package/dist/editor/BlockSelector.js.map +1 -1
- package/dist/editor/LandingPageEditor.d.ts.map +1 -1
- package/dist/editor/LandingPageEditor.js +145 -128
- package/dist/editor/LandingPageEditor.js.map +1 -1
- 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 +2 -0
- package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/BlockPropertyEditor.js +53 -45
- package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
- package/dist/editor/PropertyEditor/CollapsiblePropertyGroup.d.ts +2 -0
- 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/VariationSelector.d.ts.map +1 -1
- package/dist/editor/PropertyEditor/VariationSelector.js +10 -6
- package/dist/editor/PropertyEditor/VariationSelector.js.map +1 -1
- package/dist/editor/PropertyEditor/index.js +20 -18
- package/dist/editor/PropertyEditor/index.js.map +1 -1
- 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.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/index.d.ts +1 -0
- package/dist/editor/PropertyEditor/inputs/index.d.ts.map +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 +9 -1
- package/dist/editor/components/CenterPanel.d.ts.map +1 -1
- package/dist/editor/components/CenterPanel.js +24 -14
- package/dist/editor/components/CenterPanel.js.map +1 -1
- package/dist/editor/components/RightPanel.d.ts +5 -0
- package/dist/editor/components/RightPanel.d.ts.map +1 -1
- package/dist/editor/components/RightPanel.js +18 -12
- package/dist/editor/components/RightPanel.js.map +1 -1
- package/dist/editor/components/Toolbar.d.ts +3 -0
- package/dist/editor/components/Toolbar.d.ts.map +1 -1
- package/dist/editor/components/Toolbar.js +54 -35
- package/dist/editor/components/Toolbar.js.map +1 -1
- package/dist/engine/export/exportHtml.d.ts.map +1 -1
- package/dist/engine/export/exportHtml.js +50 -50
- package/dist/engine/export/exportHtml.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.js +22 -22
- 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 -205
- 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/index.d.ts +3 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +99 -87
- package/dist/engine/index.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 +6 -2
- package/dist/engine/preview/Preview.d.ts.map +1 -1
- package/dist/engine/preview/Preview.js +295 -125
- package/dist/engine/preview/Preview.js.map +1 -1
- 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 +16 -12
- package/dist/engine/registry/registry.js.map +1 -1
- package/dist/engine/registry/types.d.ts +10 -6
- package/dist/engine/registry/types.d.ts.map +1 -1
- 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 +8 -7
- 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 +295 -218
- 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 +104 -3
- package/dist/engine/schema/siteDocument.d.ts.map +1 -1
- package/dist/engine/schema/siteDocument.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/types.d.ts +2 -0
- package/dist/engine/shared/imageGrid/types.d.ts.map +1 -1
- 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/hooks/useEditorState.d.ts +3 -0
- package/dist/hooks/useEditorState.d.ts.map +1 -1
- package/dist/hooks/useEditorState.js +106 -84
- package/dist/hooks/useEditorState.js.map +1 -1
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +109 -93
- package/dist/index.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/index.d.ts +2 -0
- 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/utils/changeDetector.d.ts +2 -1
- 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/sharedTemplateToEngine.d.ts +4 -5
- 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 +13 -6
- package/dist/viewer/LandingPageViewer.d.ts.map +1 -1
- package/dist/viewer/LandingPageViewer.js +220 -122
- package/dist/viewer/LandingPageViewer.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { gridPresetMap as
|
|
5
|
-
function
|
|
6
|
-
const
|
|
2
|
+
import { useRef as C } from "react";
|
|
3
|
+
import { cn as v } from "../../../utils/cn.js";
|
|
4
|
+
import { gridPresetMap as y, imageGridPresetIds as I } from "../../../engine/shared/imageGrid/presets.js";
|
|
5
|
+
function j({ preset: d, isActive: n }) {
|
|
6
|
+
const u = y[d], m = () => {
|
|
7
7
|
switch (d) {
|
|
8
8
|
case "single":
|
|
9
9
|
return /* @__PURE__ */ e("div", { className: "w-full h-full bg-current rounded-sm" });
|
|
@@ -49,146 +49,172 @@ function I({ preset: d, isActive: s }) {
|
|
|
49
49
|
return /* @__PURE__ */ e(
|
|
50
50
|
"div",
|
|
51
51
|
{
|
|
52
|
-
className:
|
|
52
|
+
className: v(
|
|
53
53
|
"w-8 h-8 p-1",
|
|
54
|
-
|
|
54
|
+
n ? "text-blue-500" : "text-gray-400 dark:text-gray-500"
|
|
55
55
|
),
|
|
56
|
-
title:
|
|
57
|
-
children:
|
|
56
|
+
title: u.name,
|
|
57
|
+
children: m()
|
|
58
58
|
}
|
|
59
59
|
);
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function R({
|
|
62
62
|
index: d,
|
|
63
|
-
image:
|
|
64
|
-
onChange:
|
|
65
|
-
onRemove:
|
|
63
|
+
image: n,
|
|
64
|
+
onChange: u,
|
|
65
|
+
onRemove: m,
|
|
66
|
+
onScaleChange: i
|
|
66
67
|
}) {
|
|
67
|
-
const
|
|
68
|
-
|
|
68
|
+
const o = C(null), f = async (g) => {
|
|
69
|
+
const h = g.target.files?.[0];
|
|
70
|
+
if (!h) return;
|
|
71
|
+
if (!h.type.startsWith("image/")) {
|
|
72
|
+
alert("Apenas imagens são permitidas");
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (h.size > 10 * 1024 * 1024) {
|
|
76
|
+
alert("Arquivo muito grande. Máximo: 10MB");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const p = new FileReader();
|
|
80
|
+
p.onload = (x) => {
|
|
81
|
+
const N = x.target?.result;
|
|
82
|
+
u({ src: N, alt: n?.alt || "", scale: n?.scale });
|
|
83
|
+
}, p.readAsDataURL(h);
|
|
84
|
+
}, b = () => {
|
|
85
|
+
o.current && (o.current.value = "", o.current.click());
|
|
86
|
+
}, c = !!n?.src, l = n?.scale ?? 1;
|
|
87
|
+
return /* @__PURE__ */ a("div", { className: "flex items-center gap-3 group", children: [
|
|
69
88
|
/* @__PURE__ */ e(
|
|
70
89
|
"input",
|
|
71
90
|
{
|
|
72
|
-
ref:
|
|
91
|
+
ref: o,
|
|
73
92
|
type: "file",
|
|
74
93
|
accept: "image/*",
|
|
75
|
-
onChange:
|
|
76
|
-
const c = u.target.files?.[0];
|
|
77
|
-
if (!c) return;
|
|
78
|
-
if (!c.type.startsWith("image/")) {
|
|
79
|
-
alert("Apenas imagens são permitidas");
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
if (c.size > 10 * 1024 * 1024) {
|
|
83
|
-
alert("Arquivo muito grande. Máximo: 10MB");
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
const l = new FileReader();
|
|
87
|
-
l.onload = (m) => {
|
|
88
|
-
const v = m.target?.result;
|
|
89
|
-
o({ src: v, alt: s?.alt || "" });
|
|
90
|
-
}, l.readAsDataURL(c);
|
|
91
|
-
},
|
|
94
|
+
onChange: f,
|
|
92
95
|
className: "hidden"
|
|
93
96
|
}
|
|
94
97
|
),
|
|
95
|
-
/* @__PURE__ */
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
98
|
+
/* @__PURE__ */ a("div", { className: "relative flex-shrink-0", children: [
|
|
99
|
+
/* @__PURE__ */ e(
|
|
100
|
+
"button",
|
|
101
|
+
{
|
|
102
|
+
type: "button",
|
|
103
|
+
onClick: b,
|
|
104
|
+
className: v(
|
|
105
|
+
"w-12 h-12 rounded-lg overflow-hidden border-2 transition-all",
|
|
106
|
+
"flex items-center justify-center",
|
|
107
|
+
"bg-gray-50 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700",
|
|
108
|
+
c ? "border-blue-400 dark:border-blue-500" : "border-dashed border-gray-300 dark:border-gray-600 hover:border-blue-400"
|
|
109
|
+
),
|
|
110
|
+
children: c ? /* @__PURE__ */ e(
|
|
111
|
+
"img",
|
|
112
|
+
{
|
|
113
|
+
src: n.src,
|
|
114
|
+
alt: n.alt || `Imagem ${d + 1}`,
|
|
115
|
+
className: "w-full h-full object-cover"
|
|
116
|
+
}
|
|
117
|
+
) : /* @__PURE__ */ e(
|
|
118
|
+
"svg",
|
|
119
|
+
{
|
|
120
|
+
className: "w-5 h-5 text-gray-400",
|
|
121
|
+
fill: "none",
|
|
122
|
+
stroke: "currentColor",
|
|
123
|
+
viewBox: "0 0 24 24",
|
|
124
|
+
children: /* @__PURE__ */ e(
|
|
125
|
+
"path",
|
|
126
|
+
{
|
|
127
|
+
strokeLinecap: "round",
|
|
128
|
+
strokeLinejoin: "round",
|
|
129
|
+
strokeWidth: 2,
|
|
130
|
+
d: "M12 4v16m8-8H4"
|
|
131
|
+
}
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
c && /* @__PURE__ */ e(
|
|
138
|
+
"button",
|
|
139
|
+
{
|
|
140
|
+
type: "button",
|
|
141
|
+
onClick: m,
|
|
142
|
+
className: v(
|
|
143
|
+
"absolute -top-1 -right-1 w-4 h-4 rounded-full",
|
|
144
|
+
"bg-red-500 text-white",
|
|
145
|
+
"flex items-center justify-center",
|
|
146
|
+
"opacity-0 group-hover:opacity-100 transition-opacity",
|
|
147
|
+
"text-[10px] font-bold leading-none"
|
|
148
|
+
),
|
|
149
|
+
children: "×"
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ e("div", { className: "absolute bottom-0 left-0 right-0 bg-black/50 text-white text-[8px] text-center", children: d + 1 })
|
|
153
|
+
] }),
|
|
154
|
+
c && /* @__PURE__ */ a("div", { className: "flex-1 flex items-center gap-2 min-w-0", children: [
|
|
155
|
+
/* @__PURE__ */ e(
|
|
156
|
+
"input",
|
|
157
|
+
{
|
|
158
|
+
type: "range",
|
|
159
|
+
value: l,
|
|
160
|
+
onChange: (g) => i(Number(g.target.value)),
|
|
161
|
+
min: 1,
|
|
162
|
+
max: 3,
|
|
163
|
+
step: 0.1,
|
|
164
|
+
className: "flex-1 h-1.5 bg-gray-200 dark:bg-gray-700 rounded-lg appearance-none cursor-pointer"
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
/* @__PURE__ */ a("span", { className: "text-[10px] text-gray-500 dark:text-gray-400 w-8 text-right tabular-nums flex-shrink-0", children: [
|
|
168
|
+
Math.round(l * 100),
|
|
169
|
+
"%"
|
|
170
|
+
] })
|
|
171
|
+
] })
|
|
151
172
|
] });
|
|
152
173
|
}
|
|
153
|
-
function
|
|
174
|
+
function q({
|
|
154
175
|
preset: d,
|
|
155
|
-
images:
|
|
156
|
-
gap:
|
|
157
|
-
onPresetChange:
|
|
158
|
-
onImagesChange:
|
|
159
|
-
onGapChange:
|
|
160
|
-
label:
|
|
161
|
-
description:
|
|
176
|
+
images: n,
|
|
177
|
+
gap: u,
|
|
178
|
+
onPresetChange: m,
|
|
179
|
+
onImagesChange: i,
|
|
180
|
+
onGapChange: o,
|
|
181
|
+
label: f,
|
|
182
|
+
description: b
|
|
162
183
|
}) {
|
|
163
|
-
const c = d || "four-equal", l =
|
|
164
|
-
const t =
|
|
165
|
-
l.length > t.maxImages &&
|
|
166
|
-
},
|
|
167
|
-
const
|
|
168
|
-
for (;
|
|
169
|
-
|
|
170
|
-
|
|
184
|
+
const c = d || "four-equal", l = n || [], g = u ?? 8, p = y[c].maxImages, x = (r) => {
|
|
185
|
+
const t = y[r];
|
|
186
|
+
l.length > t.maxImages && i(l.slice(0, t.maxImages)), m(r);
|
|
187
|
+
}, N = (r, t) => {
|
|
188
|
+
const s = [...l];
|
|
189
|
+
for (; s.length <= r; )
|
|
190
|
+
s.push({ src: "", alt: "" });
|
|
191
|
+
s[r] = t, i(s);
|
|
171
192
|
}, w = (r) => {
|
|
172
193
|
const t = [...l];
|
|
173
|
-
t[r] = { src: "", alt: "" },
|
|
194
|
+
t[r] = { src: "", alt: "" }, i(t);
|
|
195
|
+
}, k = (r, t) => {
|
|
196
|
+
const s = [...l];
|
|
197
|
+
for (; s.length <= r; )
|
|
198
|
+
s.push({ src: "", alt: "" });
|
|
199
|
+
s[r] = { ...s[r], scale: t }, i(s);
|
|
174
200
|
};
|
|
175
201
|
return /* @__PURE__ */ a("div", { className: "space-y-3", children: [
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
202
|
+
f && /* @__PURE__ */ a("label", { className: "block text-xs font-medium text-gray-800 dark:text-gray-100", children: [
|
|
203
|
+
f,
|
|
204
|
+
b && /* @__PURE__ */ e("span", { className: "text-gray-500 dark:text-gray-400 text-xs font-normal ml-1", children: b })
|
|
179
205
|
] }),
|
|
180
206
|
/* @__PURE__ */ a("div", { className: "space-y-1", children: [
|
|
181
207
|
/* @__PURE__ */ e("span", { className: "text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide", children: "Layout" }),
|
|
182
|
-
/* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1 p-1 bg-gray-100 dark:bg-gray-800 rounded-lg", children:
|
|
208
|
+
/* @__PURE__ */ e("div", { className: "flex flex-wrap gap-1 p-1 bg-gray-100 dark:bg-gray-800 rounded-lg", children: I.map((r) => /* @__PURE__ */ e(
|
|
183
209
|
"button",
|
|
184
210
|
{
|
|
185
211
|
type: "button",
|
|
186
212
|
onClick: () => x(r),
|
|
187
|
-
className:
|
|
213
|
+
className: v(
|
|
188
214
|
"rounded-md transition-all",
|
|
189
215
|
c === r ? "bg-white dark:bg-gray-700 shadow-sm" : "hover:bg-white/50 dark:hover:bg-gray-700/50"
|
|
190
216
|
),
|
|
191
|
-
children: /* @__PURE__ */ e(
|
|
217
|
+
children: /* @__PURE__ */ e(j, { preset: r, isActive: c === r })
|
|
192
218
|
},
|
|
193
219
|
r
|
|
194
220
|
)) })
|
|
@@ -198,16 +224,17 @@ function P({
|
|
|
198
224
|
"Imagens (",
|
|
199
225
|
l.filter((r) => r?.src).length,
|
|
200
226
|
"/",
|
|
201
|
-
|
|
227
|
+
p,
|
|
202
228
|
")"
|
|
203
229
|
] }),
|
|
204
|
-
/* @__PURE__ */ e("div", { className: "flex flex-
|
|
205
|
-
|
|
230
|
+
/* @__PURE__ */ e("div", { className: "flex flex-col gap-2", children: Array.from({ length: p }).map((r, t) => /* @__PURE__ */ e(
|
|
231
|
+
R,
|
|
206
232
|
{
|
|
207
233
|
index: t,
|
|
208
234
|
image: l[t],
|
|
209
|
-
onChange: (
|
|
210
|
-
onRemove: () => w(t)
|
|
235
|
+
onChange: (s) => N(t, s),
|
|
236
|
+
onRemove: () => w(t),
|
|
237
|
+
onScaleChange: (s) => k(t, s)
|
|
211
238
|
},
|
|
212
239
|
t
|
|
213
240
|
)) })
|
|
@@ -216,7 +243,7 @@ function P({
|
|
|
216
243
|
/* @__PURE__ */ a("div", { className: "flex items-center justify-between", children: [
|
|
217
244
|
/* @__PURE__ */ e("span", { className: "text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide", children: "Espaçamento" }),
|
|
218
245
|
/* @__PURE__ */ a("span", { className: "text-xs text-gray-600 dark:text-gray-400", children: [
|
|
219
|
-
|
|
246
|
+
g,
|
|
220
247
|
"px"
|
|
221
248
|
] })
|
|
222
249
|
] }),
|
|
@@ -224,8 +251,8 @@ function P({
|
|
|
224
251
|
"input",
|
|
225
252
|
{
|
|
226
253
|
type: "range",
|
|
227
|
-
value:
|
|
228
|
-
onChange: (r) =>
|
|
254
|
+
value: g,
|
|
255
|
+
onChange: (r) => o(Number(r.target.value)),
|
|
229
256
|
min: 0,
|
|
230
257
|
max: 24,
|
|
231
258
|
step: 2,
|
|
@@ -236,6 +263,6 @@ function P({
|
|
|
236
263
|
] });
|
|
237
264
|
}
|
|
238
265
|
export {
|
|
239
|
-
|
|
266
|
+
q as ImageGridInput
|
|
240
267
|
};
|
|
241
268
|
//# sourceMappingURL=ImageGridInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageGridInput.js","sources":["../../../../src/editor/PropertyEditor/inputs/ImageGridInput.tsx"],"sourcesContent":["/**\n * ImageGridInput\n * Componente de edição para grid de imagens com seletor de preset visual\n */\n\nimport { useRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport {\n type ImageGridItem,\n type ImageGridPreset,\n gridPresetMap,\n imageGridPresetIds,\n} from \"../../../engine/shared/imageGrid\";\nimport type { UploadConfig } from \"../../LandingPageEditor\";\n\ninterface ImageGridInputProps {\n /** Preset atual */\n preset?: ImageGridPreset;\n /** Array de imagens */\n images?: ImageGridItem[];\n /** Gap em pixels */\n gap?: number;\n /** Callback para atualizar preset */\n onPresetChange: (preset: ImageGridPreset) => void;\n /** Callback para atualizar imagens */\n onImagesChange: (images: ImageGridItem[]) => void;\n /** Callback para atualizar gap */\n onGapChange: (gap: number) => void;\n /** Label do componente */\n label?: string;\n /** Descrição */\n description?: string;\n /** Configuração de upload (tenantId, authToken, etc) */\n uploadConfig?: UploadConfig;\n}\n\n/**\n * Ícones visuais dos presets usando divs estilizadas\n */\nfunction PresetIcon({ preset, isActive }: { preset: ImageGridPreset; isActive: boolean }) {\n const config = gridPresetMap[preset];\n\n // Usar uma mini-grid visual para representar cada preset\n const getPresetVisual = () => {\n switch (preset) {\n case \"single\":\n return (\n <div className=\"w-full h-full bg-current rounded-sm\" />\n );\n case \"two-horizontal\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"two-vertical\":\n return (\n <div className=\"w-full h-full grid grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-left\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm row-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-right\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm row-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-top\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm col-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"four-equal\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div\n className={cn(\n \"w-8 h-8 p-1\",\n isActive ? \"text-blue-500\" : \"text-gray-400 dark:text-gray-500\"\n )}\n title={config.name}\n >\n {getPresetVisual()}\n </div>\n );\n}\n\n/**\n * Slot de imagem individual com preview e upload\n */\nfunction ImageSlot({\n index,\n image,\n onChange,\n onRemove,\n}: {\n index: number;\n image?: ImageGridItem;\n onChange: (image: ImageGridItem) => void;\n onRemove: () => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n // Validação básica\n if (!file.type.startsWith(\"image/\")) {\n alert(\"Apenas imagens são permitidas\");\n return;\n }\n\n if (file.size > 10 * 1024 * 1024) {\n alert(\"Arquivo muito grande. Máximo: 10MB\");\n return;\n }\n\n // Usar Data URL para preview (deferUpload mode)\n const reader = new FileReader();\n reader.onload = (evt) => {\n const dataUrl = evt.target?.result as string;\n onChange({ src: dataUrl, alt: image?.alt || \"\" });\n };\n reader.readAsDataURL(file);\n };\n\n const handleClick = () => {\n if (inputRef.current) {\n inputRef.current.value = \"\"; // Reset para permitir selecionar o mesmo arquivo\n inputRef.current.click();\n }\n };\n\n return (\n <div className=\"relative group\">\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n className=\"hidden\"\n />\n\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n \"w-16 h-16 rounded-lg overflow-hidden border-2 transition-all\",\n \"flex items-center justify-center\",\n \"bg-gray-50 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700\",\n image?.src\n ? \"border-blue-400 dark:border-blue-500\"\n : \"border-dashed border-gray-300 dark:border-gray-600 hover:border-blue-400\"\n )}\n >\n {image?.src ? (\n <img\n src={image.src}\n alt={image.alt || `Imagem ${index + 1}`}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <svg\n className=\"w-6 h-6 text-gray-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v16m8-8H4\"\n />\n </svg>\n )}\n </button>\n\n {/* Botão de remover */}\n {image?.src && (\n <button\n type=\"button\"\n onClick={onRemove}\n className={cn(\n \"absolute -top-1 -right-1 w-5 h-5 rounded-full\",\n \"bg-red-500 text-white\",\n \"flex items-center justify-center\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\",\n \"text-xs font-bold\"\n )}\n >\n ×\n </button>\n )}\n\n {/* Número do slot */}\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/50 text-white text-[10px] text-center py-0.5\">\n {index + 1}\n </div>\n </div>\n );\n}\n\nexport function ImageGridInput({\n preset: presetProp,\n images: imagesProp,\n gap: gapProp,\n onPresetChange,\n onImagesChange,\n onGapChange,\n label,\n description,\n}: ImageGridInputProps) {\n const preset = presetProp || \"four-equal\";\n const images = imagesProp || [];\n const gap = gapProp ?? 8;\n\n const currentConfig = gridPresetMap[preset];\n const maxImages = currentConfig.maxImages;\n\n // Atualiza o preset\n const handlePresetChange = (newPreset: ImageGridPreset) => {\n const newConfig = gridPresetMap[newPreset];\n // Truncar imagens se o novo preset suporta menos\n if (images.length > newConfig.maxImages) {\n onImagesChange(images.slice(0, newConfig.maxImages));\n }\n onPresetChange(newPreset);\n };\n\n // Atualiza uma imagem específica\n const handleImageChange = (index: number, image: ImageGridItem) => {\n const newImages = [...images];\n // Preencher slots vazios até o índice\n while (newImages.length <= index) {\n newImages.push({ src: \"\", alt: \"\" });\n }\n newImages[index] = image;\n onImagesChange(newImages);\n };\n\n // Remove uma imagem\n const handleImageRemove = (index: number) => {\n const newImages = [...images];\n newImages[index] = { src: \"\", alt: \"\" };\n onImagesChange(newImages);\n };\n\n return (\n <div className=\"space-y-3\">\n {/* Label */}\n {label && (\n <label className=\"block text-xs font-medium text-gray-800 dark:text-gray-100\">\n {label}\n {description && (\n <span className=\"text-gray-500 dark:text-gray-400 text-xs font-normal ml-1\">\n {description}\n </span>\n )}\n </label>\n )}\n\n {/* Seletor de Preset */}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Layout\n </span>\n <div className=\"flex flex-wrap gap-1 p-1 bg-gray-100 dark:bg-gray-800 rounded-lg\">\n {imageGridPresetIds.map((presetId) => (\n <button\n key={presetId}\n type=\"button\"\n onClick={() => handlePresetChange(presetId)}\n className={cn(\n \"rounded-md transition-all\",\n preset === presetId\n ? \"bg-white dark:bg-gray-700 shadow-sm\"\n : \"hover:bg-white/50 dark:hover:bg-gray-700/50\"\n )}\n >\n <PresetIcon preset={presetId} isActive={preset === presetId} />\n </button>\n ))}\n </div>\n </div>\n\n {/* Slots de Imagens */}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Imagens ({images.filter(img => img?.src).length}/{maxImages})\n </span>\n <div className=\"flex flex-wrap gap-2\">\n {Array.from({ length: maxImages }).map((_, index) => (\n <ImageSlot\n key={index}\n index={index}\n image={images[index]}\n onChange={(img) => handleImageChange(index, img)}\n onRemove={() => handleImageRemove(index)}\n />\n ))}\n </div>\n </div>\n\n {/* Slider de Gap */}\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Espaçamento\n </span>\n <span className=\"text-xs text-gray-600 dark:text-gray-400\">\n {gap}px\n </span>\n </div>\n <input\n type=\"range\"\n value={gap}\n onChange={(e) => onGapChange(Number(e.target.value))}\n min={0}\n max={24}\n step={2}\n className=\"w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-lg appearance-none cursor-pointer\"\n />\n </div>\n </div>\n );\n}\n"],"names":["PresetIcon","preset","isActive","config","gridPresetMap","getPresetVisual","jsx","jsxs","cn","ImageSlot","index","image","onChange","onRemove","inputRef","useRef","e","file","reader","evt","dataUrl","ImageGridInput","presetProp","imagesProp","gapProp","onPresetChange","onImagesChange","onGapChange","label","description","images","gap","maxImages","handlePresetChange","newPreset","newConfig","handleImageChange","newImages","handleImageRemove","imageGridPresetIds","presetId","img","_"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ImageGridInput.js","sources":["../../../../src/editor/PropertyEditor/inputs/ImageGridInput.tsx"],"sourcesContent":["/**\n * ImageGridInput\n * Componente de edição para grid de imagens com seletor de preset visual\n */\n\nimport { useRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport {\n type ImageGridItem,\n type ImageGridPreset,\n gridPresetMap,\n imageGridPresetIds,\n} from \"../../../engine/shared/imageGrid\";\nimport type { UploadConfig } from \"../../LandingPageEditor\";\n\ninterface ImageGridInputProps {\n /** Preset atual */\n preset?: ImageGridPreset;\n /** Array de imagens */\n images?: ImageGridItem[];\n /** Gap em pixels */\n gap?: number;\n /** Callback para atualizar preset */\n onPresetChange: (preset: ImageGridPreset) => void;\n /** Callback para atualizar imagens */\n onImagesChange: (images: ImageGridItem[]) => void;\n /** Callback para atualizar gap */\n onGapChange: (gap: number) => void;\n /** Label do componente */\n label?: string;\n /** Descrição */\n description?: string;\n /** Configuração de upload (tenantId, authToken, etc) */\n uploadConfig?: UploadConfig;\n}\n\n/**\n * Ícones visuais dos presets usando divs estilizadas\n */\nfunction PresetIcon({ preset, isActive }: { preset: ImageGridPreset; isActive: boolean }) {\n const config = gridPresetMap[preset];\n\n // Usar uma mini-grid visual para representar cada preset\n const getPresetVisual = () => {\n switch (preset) {\n case \"single\":\n return (\n <div className=\"w-full h-full bg-current rounded-sm\" />\n );\n case \"two-horizontal\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"two-vertical\":\n return (\n <div className=\"w-full h-full grid grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-left\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm row-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-right\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm row-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"three-top\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm col-span-2\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n case \"four-equal\":\n return (\n <div className=\"w-full h-full grid grid-cols-2 grid-rows-2 gap-0.5\">\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n <div className=\"bg-current rounded-sm\" />\n </div>\n );\n default:\n return null;\n }\n };\n\n return (\n <div\n className={cn(\n \"w-8 h-8 p-1\",\n isActive ? \"text-blue-500\" : \"text-gray-400 dark:text-gray-500\"\n )}\n title={config.name}\n >\n {getPresetVisual()}\n </div>\n );\n}\n\n/**\n * Slot de imagem individual com preview, upload e slider de escala\n * Layout: row horizontal com preview à esquerda e slider à direita\n */\nfunction ImageSlot({\n index,\n image,\n onChange,\n onRemove,\n onScaleChange,\n}: {\n index: number;\n image?: ImageGridItem;\n onChange: (image: ImageGridItem) => void;\n onRemove: () => void;\n onScaleChange: (scale: number) => void;\n}) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleFileChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\n const file = e.target.files?.[0];\n if (!file) return;\n\n // Validação básica\n if (!file.type.startsWith(\"image/\")) {\n alert(\"Apenas imagens são permitidas\");\n return;\n }\n\n if (file.size > 10 * 1024 * 1024) {\n alert(\"Arquivo muito grande. Máximo: 10MB\");\n return;\n }\n\n // Usar Data URL para preview (deferUpload mode)\n // Preservar scale existente ao trocar imagem\n const reader = new FileReader();\n reader.onload = (evt) => {\n const dataUrl = evt.target?.result as string;\n onChange({ src: dataUrl, alt: image?.alt || \"\", scale: image?.scale });\n };\n reader.readAsDataURL(file);\n };\n\n const handleClick = () => {\n if (inputRef.current) {\n inputRef.current.value = \"\"; // Reset para permitir selecionar o mesmo arquivo\n inputRef.current.click();\n }\n };\n\n const hasImage = !!image?.src;\n const scale = image?.scale ?? 1;\n\n return (\n <div className=\"flex items-center gap-3 group\">\n <input\n ref={inputRef}\n type=\"file\"\n accept=\"image/*\"\n onChange={handleFileChange}\n className=\"hidden\"\n />\n\n {/* Preview da imagem */}\n <div className=\"relative flex-shrink-0\">\n <button\n type=\"button\"\n onClick={handleClick}\n className={cn(\n \"w-12 h-12 rounded-lg overflow-hidden border-2 transition-all\",\n \"flex items-center justify-center\",\n \"bg-gray-50 dark:bg-gray-800 hover:bg-gray-100 dark:hover:bg-gray-700\",\n hasImage\n ? \"border-blue-400 dark:border-blue-500\"\n : \"border-dashed border-gray-300 dark:border-gray-600 hover:border-blue-400\"\n )}\n >\n {hasImage ? (\n <img\n src={image.src}\n alt={image.alt || `Imagem ${index + 1}`}\n className=\"w-full h-full object-cover\"\n />\n ) : (\n <svg\n className=\"w-5 h-5 text-gray-400\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 4v16m8-8H4\"\n />\n </svg>\n )}\n </button>\n\n {/* Botão de remover */}\n {hasImage && (\n <button\n type=\"button\"\n onClick={onRemove}\n className={cn(\n \"absolute -top-1 -right-1 w-4 h-4 rounded-full\",\n \"bg-red-500 text-white\",\n \"flex items-center justify-center\",\n \"opacity-0 group-hover:opacity-100 transition-opacity\",\n \"text-[10px] font-bold leading-none\"\n )}\n >\n ×\n </button>\n )}\n\n {/* Número do slot */}\n <div className=\"absolute bottom-0 left-0 right-0 bg-black/50 text-white text-[8px] text-center\">\n {index + 1}\n </div>\n </div>\n\n {/* Slider de escala — só aparece quando a imagem tem src */}\n {hasImage && (\n <div className=\"flex-1 flex items-center gap-2 min-w-0\">\n <input\n type=\"range\"\n value={scale}\n onChange={(e) => onScaleChange(Number(e.target.value))}\n min={1}\n max={3}\n step={0.1}\n className=\"flex-1 h-1.5 bg-gray-200 dark:bg-gray-700 rounded-lg appearance-none cursor-pointer\"\n />\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 w-8 text-right tabular-nums flex-shrink-0\">\n {Math.round(scale * 100)}%\n </span>\n </div>\n )}\n </div>\n );\n}\n\nexport function ImageGridInput({\n preset: presetProp,\n images: imagesProp,\n gap: gapProp,\n onPresetChange,\n onImagesChange,\n onGapChange,\n label,\n description,\n}: ImageGridInputProps) {\n const preset = presetProp || \"four-equal\";\n const images = imagesProp || [];\n const gap = gapProp ?? 8;\n\n const currentConfig = gridPresetMap[preset];\n const maxImages = currentConfig.maxImages;\n\n // Atualiza o preset\n const handlePresetChange = (newPreset: ImageGridPreset) => {\n const newConfig = gridPresetMap[newPreset];\n // Truncar imagens se o novo preset suporta menos\n if (images.length > newConfig.maxImages) {\n onImagesChange(images.slice(0, newConfig.maxImages));\n }\n onPresetChange(newPreset);\n };\n\n // Atualiza uma imagem específica\n const handleImageChange = (index: number, image: ImageGridItem) => {\n const newImages = [...images];\n // Preencher slots vazios até o índice\n while (newImages.length <= index) {\n newImages.push({ src: \"\", alt: \"\" });\n }\n newImages[index] = image;\n onImagesChange(newImages);\n };\n\n // Remove uma imagem\n const handleImageRemove = (index: number) => {\n const newImages = [...images];\n newImages[index] = { src: \"\", alt: \"\" };\n onImagesChange(newImages);\n };\n\n // Atualiza a escala de uma imagem específica\n const handleScaleChange = (index: number, scale: number) => {\n const newImages = [...images];\n while (newImages.length <= index) {\n newImages.push({ src: \"\", alt: \"\" });\n }\n newImages[index] = { ...newImages[index], scale };\n onImagesChange(newImages);\n };\n\n return (\n <div className=\"space-y-3\">\n {/* Label */}\n {label && (\n <label className=\"block text-xs font-medium text-gray-800 dark:text-gray-100\">\n {label}\n {description && (\n <span className=\"text-gray-500 dark:text-gray-400 text-xs font-normal ml-1\">\n {description}\n </span>\n )}\n </label>\n )}\n\n {/* Seletor de Preset */}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Layout\n </span>\n <div className=\"flex flex-wrap gap-1 p-1 bg-gray-100 dark:bg-gray-800 rounded-lg\">\n {imageGridPresetIds.map((presetId) => (\n <button\n key={presetId}\n type=\"button\"\n onClick={() => handlePresetChange(presetId)}\n className={cn(\n \"rounded-md transition-all\",\n preset === presetId\n ? \"bg-white dark:bg-gray-700 shadow-sm\"\n : \"hover:bg-white/50 dark:hover:bg-gray-700/50\"\n )}\n >\n <PresetIcon preset={presetId} isActive={preset === presetId} />\n </button>\n ))}\n </div>\n </div>\n\n {/* Slots de Imagens — lista vertical */}\n <div className=\"space-y-1\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Imagens ({images.filter(img => img?.src).length}/{maxImages})\n </span>\n <div className=\"flex flex-col gap-2\">\n {Array.from({ length: maxImages }).map((_, index) => (\n <ImageSlot\n key={index}\n index={index}\n image={images[index]}\n onChange={(img) => handleImageChange(index, img)}\n onRemove={() => handleImageRemove(index)}\n onScaleChange={(scale) => handleScaleChange(index, scale)}\n />\n ))}\n </div>\n </div>\n\n {/* Slider de Gap */}\n <div className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-[10px] text-gray-500 dark:text-gray-400 uppercase tracking-wide\">\n Espaçamento\n </span>\n <span className=\"text-xs text-gray-600 dark:text-gray-400\">\n {gap}px\n </span>\n </div>\n <input\n type=\"range\"\n value={gap}\n onChange={(e) => onGapChange(Number(e.target.value))}\n min={0}\n max={24}\n step={2}\n className=\"w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-lg appearance-none cursor-pointer\"\n />\n </div>\n </div>\n );\n}\n"],"names":["PresetIcon","preset","isActive","config","gridPresetMap","getPresetVisual","jsx","jsxs","cn","ImageSlot","index","image","onChange","onRemove","onScaleChange","inputRef","useRef","handleFileChange","e","file","reader","evt","dataUrl","handleClick","hasImage","scale","ImageGridInput","presetProp","imagesProp","gapProp","onPresetChange","onImagesChange","onGapChange","label","description","images","gap","maxImages","handlePresetChange","newPreset","newConfig","handleImageChange","newImages","handleImageRemove","handleScaleChange","imageGridPresetIds","presetId","img","_"],"mappings":"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"}
|
|
@@ -11,4 +11,5 @@ export { IconGridInput } from './IconGridInput';
|
|
|
11
11
|
export { ImageGridInput } from './ImageGridInput';
|
|
12
12
|
export { TypographyInput } from './TypographyInput';
|
|
13
13
|
export { ImageInput } from './ImageInput';
|
|
14
|
+
export { CarouselImagesInput } from './CarouselImagesInput';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editor/PropertyEditor/inputs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editor/PropertyEditor/inputs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderPropertyInput.d.ts","sourceRoot":"","sources":["../../../src/editor/PropertyEditor/renderPropertyInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"renderPropertyInput.d.ts","sourceRoot":"","sources":["../../../src/editor/PropertyEditor/renderPropertyInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;CACxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,KAAK,CAAC,SAAS,CAqRjB"}
|