@brunoalz/smartgesti-site-editor 1.2.0 → 1.4.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.
Files changed (108) hide show
  1. package/dist/editor/BlockSelector.js +5 -2
  2. package/dist/editor/BlockSelector.js.map +1 -1
  3. package/dist/editor/LandingPageEditor.d.ts.map +1 -1
  4. package/dist/editor/LandingPageEditor.js +199 -173
  5. package/dist/editor/LandingPageEditor.js.map +1 -1
  6. package/dist/editor/PaletteSelector.d.ts +3 -0
  7. package/dist/editor/PaletteSelector.d.ts.map +1 -1
  8. package/dist/editor/PaletteSelector.js +114 -25
  9. package/dist/editor/PaletteSelector.js.map +1 -1
  10. package/dist/editor/PropertyEditor/BlockPropertyEditor.d.ts.map +1 -1
  11. package/dist/editor/PropertyEditor/BlockPropertyEditor.js +86 -48
  12. package/dist/editor/PropertyEditor/BlockPropertyEditor.js.map +1 -1
  13. package/dist/editor/components/RightPanel.d.ts +2 -0
  14. package/dist/editor/components/RightPanel.d.ts.map +1 -1
  15. package/dist/editor/components/RightPanel.js +23 -22
  16. package/dist/editor/components/RightPanel.js.map +1 -1
  17. package/dist/engine/export/exporters/content/AvatarExporter.js +2 -2
  18. package/dist/engine/export/exporters/content/AvatarExporter.js.map +1 -1
  19. package/dist/engine/export/exporters/content/BadgeExporter.js +11 -11
  20. package/dist/engine/export/exporters/content/BadgeExporter.js.map +1 -1
  21. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts +6 -0
  22. package/dist/engine/export/exporters/sections/AdminSectionExporters.d.ts.map +1 -0
  23. package/dist/engine/export/exporters/sections/AdminSectionExporters.js +157 -0
  24. package/dist/engine/export/exporters/sections/AdminSectionExporters.js.map +1 -0
  25. package/dist/engine/export/exporters/sections/BlogPostExporters.js +34 -34
  26. package/dist/engine/export/exporters/sections/BlogPostExporters.js.map +1 -1
  27. package/dist/engine/export/exporters/sections/ContentGridExporters.js +16 -16
  28. package/dist/engine/export/exporters/sections/ContentGridExporters.js.map +1 -1
  29. package/dist/engine/export/exporters/sections/MarketingExporters.js +4 -4
  30. package/dist/engine/export/exporters/sections/MarketingExporters.js.map +1 -1
  31. package/dist/engine/export/exporters/sections/index.d.ts.map +1 -1
  32. package/dist/engine/export/exporters/sections/index.js +37 -33
  33. package/dist/engine/export/exporters/sections/index.js.map +1 -1
  34. package/dist/engine/index.js +98 -95
  35. package/dist/engine/index.js.map +1 -1
  36. package/dist/engine/preview/Preview.d.ts.map +1 -1
  37. package/dist/engine/preview/Preview.js +165 -160
  38. package/dist/engine/preview/Preview.js.map +1 -1
  39. package/dist/engine/registry/blocks/sections/aboutSection.d.ts +3 -0
  40. package/dist/engine/registry/blocks/sections/aboutSection.d.ts.map +1 -0
  41. package/dist/engine/registry/blocks/sections/aboutSection.js +117 -0
  42. package/dist/engine/registry/blocks/sections/aboutSection.js.map +1 -0
  43. package/dist/engine/registry/blocks/sections/contactSection.d.ts +3 -0
  44. package/dist/engine/registry/blocks/sections/contactSection.d.ts.map +1 -0
  45. package/dist/engine/registry/blocks/sections/contactSection.js +118 -0
  46. package/dist/engine/registry/blocks/sections/contactSection.js.map +1 -0
  47. package/dist/engine/registry/blocks/sections/index.d.ts +3 -0
  48. package/dist/engine/registry/blocks/sections/index.d.ts.map +1 -1
  49. package/dist/engine/registry/blocks/sections/productShowcase.d.ts +3 -0
  50. package/dist/engine/registry/blocks/sections/productShowcase.d.ts.map +1 -0
  51. package/dist/engine/registry/blocks/sections/productShowcase.js +108 -0
  52. package/dist/engine/registry/blocks/sections/productShowcase.js.map +1 -0
  53. package/dist/engine/render/renderers/content/BadgeRenderer.js +12 -12
  54. package/dist/engine/render/renderers/content/BadgeRenderer.js.map +1 -1
  55. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts +3 -0
  56. package/dist/engine/render/renderers/sections/AboutSectionRenderer.d.ts.map +1 -0
  57. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js +246 -0
  58. package/dist/engine/render/renderers/sections/AboutSectionRenderer.js.map +1 -0
  59. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts +3 -0
  60. package/dist/engine/render/renderers/sections/ContactSectionRenderer.d.ts.map +1 -0
  61. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js +287 -0
  62. package/dist/engine/render/renderers/sections/ContactSectionRenderer.js.map +1 -0
  63. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js +5 -5
  64. package/dist/engine/render/renderers/sections/FeatureGridRenderer.js.map +1 -1
  65. package/dist/engine/render/renderers/sections/FeatureRenderer.js +9 -9
  66. package/dist/engine/render/renderers/sections/FeatureRenderer.js.map +1 -1
  67. package/dist/engine/render/renderers/sections/PricingCardRenderer.js +5 -5
  68. package/dist/engine/render/renderers/sections/PricingCardRenderer.js.map +1 -1
  69. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts +3 -0
  70. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.d.ts.map +1 -0
  71. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js +287 -0
  72. package/dist/engine/render/renderers/sections/ProductShowcaseRenderer.js.map +1 -0
  73. package/dist/engine/render/renderers/sections/index.js +26 -20
  74. package/dist/engine/render/renderers/sections/index.js.map +1 -1
  75. package/dist/engine/schema/siteDocument.d.ts +96 -2
  76. package/dist/engine/schema/siteDocument.d.ts.map +1 -1
  77. package/dist/engine/schema/siteDocument.js.map +1 -1
  78. package/dist/hooks/useEditorState.d.ts +2 -0
  79. package/dist/hooks/useEditorState.d.ts.map +1 -1
  80. package/dist/hooks/useEditorState.js +82 -77
  81. package/dist/hooks/useEditorState.js.map +1 -1
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +109 -106
  85. package/dist/index.js.map +1 -1
  86. package/dist/shared/schema.d.ts +1 -1
  87. package/dist/shared/schema.d.ts.map +1 -1
  88. package/dist/shared/schema.js +7 -4
  89. package/dist/shared/schema.js.map +1 -1
  90. package/dist/shared/templates/index.d.ts +6 -0
  91. package/dist/shared/templates/index.d.ts.map +1 -1
  92. package/dist/shared/templates/index.js +49 -23
  93. package/dist/shared/templates/index.js.map +1 -1
  94. package/dist/shared/templates/smartgesti-admin.d.ts +3 -0
  95. package/dist/shared/templates/smartgesti-admin.d.ts.map +1 -0
  96. package/dist/shared/templates/smartgesti-admin.js +423 -0
  97. package/dist/shared/templates/smartgesti-admin.js.map +1 -0
  98. package/dist/utils/blockIcons.d.ts.map +1 -1
  99. package/dist/utils/blockIcons.js +3 -0
  100. package/dist/utils/blockIcons.js.map +1 -1
  101. package/dist/utils/colorUtils.d.ts +73 -16
  102. package/dist/utils/colorUtils.d.ts.map +1 -1
  103. package/dist/utils/colorUtils.js +95 -9
  104. package/dist/utils/colorUtils.js.map +1 -1
  105. package/dist/viewer/LandingPageViewer.d.ts.map +1 -1
  106. package/dist/viewer/LandingPageViewer.js +66 -65
  107. package/dist/viewer/LandingPageViewer.js.map +1 -1
  108. package/package.json +1 -1
@@ -1,45 +1,45 @@
1
- import { useMemo as P, useState as k, useCallback as o } from "react";
2
- import { cleanDocumentStructure as O, findBlockInStructure as Q } from "../utils/blockUtils.js";
1
+ import { useMemo as k, useState as p, useCallback as o } from "react";
2
+ import { cleanDocumentStructure as V, findBlockInStructure as W } from "../utils/blockUtils.js";
3
3
  import { logger as f } from "../utils/logger.js";
4
- import { generateUniqueSlug as T, createDefaultPageStructure as V } from "../utils/pageTemplateFactory.js";
5
- import { useNavbarAutoSync as W } from "./useNavbarAutoSync.js";
6
- import { createHistoryManager as X } from "../engine/patch/history.js";
7
- import { applyPatch as Y } from "../engine/patch/applyPatch.js";
8
- import { PatchBuilder as p } from "../engine/patch/PatchBuilder.js";
9
- import { componentRegistry as Z } from "../engine/registry/registry.js";
4
+ import { generateUniqueSlug as X, createDefaultPageStructure as Y } from "../utils/pageTemplateFactory.js";
5
+ import { useNavbarAutoSync as Z } from "./useNavbarAutoSync.js";
6
+ import { createHistoryManager as _ } from "../engine/patch/history.js";
7
+ import { applyPatch as I } from "../engine/patch/applyPatch.js";
8
+ import { PatchBuilder as h } from "../engine/patch/PatchBuilder.js";
9
+ import { componentRegistry as ee } from "../engine/registry/registry.js";
10
10
  import { pluginRegistry as v } from "../engine/plugins/pluginRegistry.js";
11
- function le(S = {}) {
12
- const { initialData: B } = S, D = P(() => B || null, [B]), [t, d] = k(
13
- D
14
- ), [g, m] = k("home"), [c] = k(() => X(50)), [n, i] = k(null), s = o(
11
+ function de(D = {}) {
12
+ const { initialData: B } = D, A = k(() => B || null, [B]), [t, d] = p(
13
+ A
14
+ ), [g, m] = p("home"), [c] = p(() => _(50)), [n, i] = p(null), [C, S] = p(null), s = o(
15
15
  (e, r) => {
16
16
  if (!t || !e?.length) return;
17
17
  c.push(t, e, r || "User edit");
18
- const l = Y(t, e);
19
- if (f.debug("[applyChange] Patch result:", l), l.success && l.document) {
20
- const a = O(l.document);
18
+ const u = I(t, e);
19
+ if (f.debug("[applyChange] Patch result:", u), u.success && u.document) {
20
+ const a = V(u.document);
21
21
  d(a);
22
22
  } else
23
23
  c.canUndo() && (c.undo(t).success || f.error("[applyChange] Failed to undo after patch error"));
24
24
  },
25
25
  [t, c]
26
26
  );
27
- W(t, s);
28
- const u = P(() => {
27
+ Z(t, s);
28
+ const l = k(() => {
29
29
  if (!t?.pages?.length) return null;
30
30
  const e = t.pages.find((r) => r?.id === g) ?? t.pages[0];
31
31
  return e && !Array.isArray(e.structure) && (e.structure = []), e;
32
- }, [t, g]), A = P(() => !n || !u || n === "palette-selector" || n === "template-selector" ? null : Q(u.structure, n), [n, u]), C = n === "palette-selector", R = n === "template-selector", U = o(() => {
32
+ }, [t, g]), R = k(() => !n || !l || n === "palette-selector" || n === "template-selector" ? null : W(l.structure, n), [n, l]), U = n === "palette-selector", $ = n === "template-selector", b = o(() => {
33
33
  if (!t) return;
34
34
  const e = c.undo(t);
35
35
  e.success && e.document && d(e.document);
36
- }, [t, c]), $ = o(() => {
36
+ }, [t, c]), E = o(() => {
37
37
  if (!t) return;
38
38
  const e = c.redo(t);
39
39
  e.success && e.document && d(e.document);
40
40
  }, [t, c]), y = o(
41
41
  (e) => {
42
- const r = Z.get(e);
42
+ const r = ee.get(e);
43
43
  return r ? {
44
44
  id: `${e}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
45
45
  type: e,
@@ -54,36 +54,36 @@ function le(S = {}) {
54
54
  ), null);
55
55
  },
56
56
  []
57
- ), b = o(
58
- (e, r, l) => {
59
- if (!(!t || !u))
57
+ ), F = o(
58
+ (e, r, u) => {
59
+ if (!(!t || !l))
60
60
  try {
61
61
  const a = y(e);
62
62
  if (!a) {
63
63
  f.error("[handleAddBlock] Failed to create block:", e);
64
64
  return;
65
65
  }
66
- const h = p.addBlock(
66
+ const P = h.addBlock(
67
67
  t,
68
- u.id,
68
+ l.id,
69
69
  a,
70
70
  r,
71
- l
71
+ u
72
72
  );
73
- s(h, `Add ${e} block`), i(a.id);
73
+ s(P, `Add ${e} block`), i(a.id);
74
74
  } catch (a) {
75
75
  f.error("[handleAddBlock] Error adding block:", a);
76
76
  }
77
77
  },
78
- [u, t, y, s]
79
- ), E = o(
78
+ [l, t, y, s]
79
+ ), w = o(
80
80
  (e) => {
81
- if (!(!t || !u))
81
+ if (!(!t || !l))
82
82
  try {
83
83
  n === e && i(null);
84
- const r = p.removeBlock(
84
+ const r = h.removeBlock(
85
85
  t,
86
- u.id,
86
+ l.id,
87
87
  e
88
88
  );
89
89
  s(r, "Delete block");
@@ -91,14 +91,14 @@ function le(S = {}) {
91
91
  f.error("Error deleting block:", r), n === e && i(null);
92
92
  }
93
93
  },
94
- [t, u, n, s]
95
- ), F = o(
94
+ [t, l, n, s]
95
+ ), x = o(
96
96
  (e) => {
97
- if (!(!t || !n || !u) && !(n === "palette-selector" || n === "template-selector"))
97
+ if (!(!t || !n || !l) && !(n === "palette-selector" || n === "template-selector"))
98
98
  try {
99
- const r = p.updateBlockProps(
99
+ const r = h.updateBlockProps(
100
100
  t,
101
- u.id,
101
+ l.id,
102
102
  n,
103
103
  e
104
104
  );
@@ -107,53 +107,55 @@ function le(S = {}) {
107
107
  f.error("Error updating block:", r);
108
108
  }
109
109
  },
110
- [t, n, u, s]
111
- ), w = o(() => {
112
- d(null), m("home"), c.clear(), i(null);
113
- }, [c]), x = o(
110
+ [t, n, l, s]
111
+ ), M = o((e) => {
112
+ S(e);
113
+ }, []), q = o(() => {
114
+ d(null), m("home"), c.clear(), i(null), S(null);
115
+ }, [c]), H = o(
114
116
  (e) => {
115
117
  d(e), m(e.pages?.[0]?.id ?? "home"), c.clear(), i(null), e.pages?.[0]?.structure?.length > 0 && i(e.pages[0].structure[0].id);
116
118
  },
117
119
  [c]
118
- ), M = o((e) => {
120
+ ), N = o((e) => {
119
121
  m(e), i(null);
120
- }, []), q = o(
121
- (e, r, l) => {
122
- if (!t || t.pages.find((L) => L.id === e)) return;
123
- const h = T(l, t.pages), J = V(
122
+ }, []), j = o(
123
+ (e, r, u) => {
124
+ if (!t || t.pages.find((T) => T.id === e)) return;
125
+ const P = X(u, t.pages), O = Y(
124
126
  e,
125
127
  r,
126
- h,
127
- [...t.pages, { id: e, name: r, slug: h, structure: [] }]
128
- ), K = p.addPage(t, J);
129
- s(K, `Adicionar página ${r}`), m(e), i(null);
128
+ P,
129
+ [...t.pages, { id: e, name: r, slug: P, structure: [] }]
130
+ ), Q = h.addPage(t, O);
131
+ s(Q, `Adicionar página ${r}`), m(e), i(null);
130
132
  },
131
133
  [t, s]
132
- ), H = o(
134
+ ), z = o(
133
135
  (e) => {
134
136
  if (!t || e === "home" || t.pages.length <= 1) return;
135
- const r = p.removePage(t, e);
137
+ const r = h.removePage(t, e);
136
138
  if (s(r, "Remover página"), g === e) {
137
- const l = t.pages.filter((a) => a.id !== e);
138
- m(l[0]?.id ?? "home");
139
+ const u = t.pages.filter((a) => a.id !== e);
140
+ m(u[0]?.id ?? "home");
139
141
  }
140
142
  i(null);
141
143
  },
142
144
  [t, g, s]
143
- ), N = o(
145
+ ), G = o(
144
146
  (e) => t ? e !== "home" && t.pages.length > 1 : !1,
145
147
  [t]
146
- ), j = P(
148
+ ), J = k(
147
149
  () => t?.plugins?.active ?? [],
148
150
  [t]
149
- ), z = o(
151
+ ), K = o(
150
152
  (e) => {
151
153
  if (!t) return;
152
154
  const r = v.activate(t, e);
153
155
  r !== t && d(r);
154
156
  },
155
157
  [t]
156
- ), G = o(
158
+ ), L = o(
157
159
  (e) => {
158
160
  if (!t) return;
159
161
  const r = v.deactivate(t, e);
@@ -165,35 +167,38 @@ function le(S = {}) {
165
167
  // Estado
166
168
  document: t,
167
169
  currentPageId: g,
168
- currentPage: u,
170
+ currentPage: l,
169
171
  selectedBlockId: n,
170
- selectedBlock: A,
172
+ selectedBlock: R,
171
173
  history: c,
172
174
  // Ações
173
175
  setDocument: d,
174
- loadDocument: x,
175
- setCurrentPageId: M,
176
- addPage: q,
177
- removePage: H,
176
+ loadDocument: H,
177
+ setCurrentPageId: N,
178
+ addPage: j,
179
+ removePage: z,
178
180
  setSelectedBlockId: i,
179
- handleUndo: U,
180
- handleRedo: $,
181
- handleAddBlock: b,
182
- handleDeleteBlock: E,
183
- handleUpdateBlock: F,
181
+ handleUndo: b,
182
+ handleRedo: E,
183
+ handleAddBlock: F,
184
+ handleDeleteBlock: w,
185
+ handleUpdateBlock: x,
184
186
  applyChange: s,
185
- resetToTemplate: w,
187
+ resetToTemplate: q,
186
188
  // Estado derivado
187
- isPaletteSelected: C,
188
- isTemplateSelected: R,
189
- canRemovePage: N,
189
+ isPaletteSelected: U,
190
+ isTemplateSelected: $,
191
+ canRemovePage: G,
192
+ // Paleta
193
+ selectedPalette: C,
194
+ setSelectedPalette: M,
190
195
  // Plugins
191
- activePlugins: j,
192
- activatePlugin: z,
193
- deactivatePlugin: G
196
+ activePlugins: J,
197
+ activatePlugin: K,
198
+ deactivatePlugin: L
194
199
  };
195
200
  }
196
201
  export {
197
- le as useEditorState
202
+ de as useEditorState
198
203
  };
199
204
  //# sourceMappingURL=useEditorState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEditorState.js","sources":["../../src/hooks/useEditorState.ts"],"sourcesContent":["/**\n * useEditorState Hook\n * Gerencia todo o estado do editor de landing pages\n */\n\nimport { useState, useMemo, useCallback } from \"react\";\nimport {\n SiteDocument,\n SitePage,\n Block,\n BlockType,\n HistoryManager,\n createHistoryManager,\n applyPatch,\n PatchBuilder,\n componentRegistry,\n pluginRegistry,\n} from \"../engine\";\nimport {\n findBlockInStructure,\n cleanDocumentStructure,\n} from \"../utils/blockUtils\";\nimport { logger } from \"../utils/logger\";\nimport {\n createDefaultPageStructure,\n generateUniqueSlug,\n} from \"../utils/pageTemplateFactory\";\nimport { useNavbarAutoSync } from \"./useNavbarAutoSync\";\n\ninterface UseEditorStateOptions {\n initialData?: SiteDocument | null;\n}\n\ninterface UseEditorStateReturn {\n // Estado\n document: SiteDocument | null;\n currentPageId: string;\n currentPage: ReturnType<typeof useMemo>;\n selectedBlockId: string | null;\n selectedBlock: Block | null;\n history: HistoryManager;\n\n // Ações\n setDocument: (doc: SiteDocument) => void;\n loadDocument: (doc: SiteDocument) => void;\n setCurrentPageId: (id: string) => void;\n addPage: (pageId: string, name: string, slug: string) => void;\n removePage: (pageId: string) => void;\n setSelectedBlockId: (id: string | null) => void;\n handleUndo: () => void;\n handleRedo: () => void;\n handleAddBlock: (\n blockType: BlockType,\n parentBlockId?: string,\n position?: number,\n ) => void;\n handleDeleteBlock: (blockId: string) => void;\n handleUpdateBlock: (updates: Record<string, any>) => void;\n applyChange: (patch: any[], description?: string) => void;\n resetToTemplate: () => void;\n\n // Estado derivado\n isPaletteSelected: boolean;\n isTemplateSelected: boolean;\n canRemovePage: (pageId: string) => boolean;\n\n // Plugins\n activePlugins: string[];\n activatePlugin: (pluginId: string) => void;\n deactivatePlugin: (pluginId: string) => void;\n}\n\n/**\n * Hook para gerenciar estado do editor\n */\nexport function useEditorState(\n options: UseEditorStateOptions = {},\n): UseEditorStateReturn {\n const { initialData } = options;\n\n // Sem initialData: documento null até o usuário escolher um template\n const initialDocument = useMemo(() => {\n if (initialData) {\n return initialData;\n }\n return null;\n }, [initialData]);\n\n // Estados\n const [document, setDocument] = useState<SiteDocument | null>(\n initialDocument,\n );\n const [currentPageId, setCurrentPageIdState] = useState<string>(\"home\");\n const [history] = useState<HistoryManager>(() => createHistoryManager(50));\n const [selectedBlockId, setSelectedBlockId] = useState<string | null>(null);\n\n // Aplicar mudanças via patches (precisa ser declarado antes de useNavbarAutoSync)\n const applyChange = useCallback(\n (patch: any[], description?: string) => {\n if (!document) return;\n if (!patch?.length) return;\n\n // IMPORTANTE: Capturar histórico ANTES de aplicar patch\n history.push(document, patch, description || \"User edit\");\n\n const result = applyPatch(document, patch);\n logger.debug(\"[applyChange] Patch result:\", result);\n\n if (result.success && result.document) {\n const cleanedDocument = cleanDocumentStructure(result.document);\n setDocument(cleanedDocument);\n } else {\n // Se falhar, reverter histórico\n if (history.canUndo()) {\n const undoResult = history.undo(document);\n if (!undoResult.success) {\n logger.error(\"[applyChange] Failed to undo after patch error\");\n }\n }\n }\n },\n [document, history],\n );\n\n // Hook de sincronização automática do navbar\n useNavbarAutoSync(document, applyChange);\n\n // Página atual (derivada de currentPageId; sem navegação, só edição)\n const currentPage = useMemo(() => {\n if (!document?.pages?.length) return null;\n const page =\n document.pages.find((p) => p?.id === currentPageId) ?? document.pages[0];\n if (page && !Array.isArray(page.structure)) {\n page.structure = [];\n }\n return page;\n }, [document, currentPageId]);\n\n // Bloco selecionado\n const selectedBlock = useMemo(() => {\n if (!selectedBlockId || !currentPage) return null;\n if (\n selectedBlockId === \"palette-selector\" ||\n selectedBlockId === \"template-selector\"\n ) {\n return null;\n }\n return findBlockInStructure(currentPage.structure, selectedBlockId);\n }, [selectedBlockId, currentPage]);\n\n // Estados derivados\n const isPaletteSelected = selectedBlockId === \"palette-selector\";\n const isTemplateSelected = selectedBlockId === \"template-selector\";\n\n // Undo/Redo\n const handleUndo = useCallback(() => {\n if (!document) return;\n const result = history.undo(document);\n if (result.success && result.document) {\n setDocument(result.document);\n }\n }, [document, history]);\n\n const handleRedo = useCallback(() => {\n if (!document) return;\n const result = history.redo(document);\n if (result.success && result.document) {\n setDocument(result.document);\n }\n }, [document, history]);\n\n // Criar bloco\n const createBlockFromType = useCallback(\n (blockType: BlockType): Block | null => {\n const definition = componentRegistry.get(blockType);\n if (!definition) {\n logger.error(\n `[createBlockFromType] Block type \"${blockType}\" not found in registry`,\n );\n return null;\n }\n\n const id = `${blockType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n return {\n id,\n type: blockType,\n props: {\n ...definition.defaultProps,\n ...(definition.defaultChildren && {\n children: definition.defaultChildren,\n }),\n },\n } as Block;\n },\n [],\n );\n\n // Adicionar bloco (mantido para API; editor template-based não exibe paleta de blocos)\n const handleAddBlock = useCallback(\n (blockType: BlockType, parentBlockId?: string, position?: number) => {\n if (!document || !currentPage) return;\n\n try {\n const newBlock = createBlockFromType(blockType);\n if (!newBlock) {\n logger.error(\"[handleAddBlock] Failed to create block:\", blockType);\n return;\n }\n\n const patch = PatchBuilder.addBlock(\n document,\n currentPage.id,\n newBlock,\n parentBlockId,\n position,\n );\n\n applyChange(patch, `Add ${blockType} block`);\n setSelectedBlockId(newBlock.id);\n } catch (error) {\n logger.error(\"[handleAddBlock] Error adding block:\", error);\n }\n },\n [currentPage, document, createBlockFromType, applyChange],\n );\n\n // Deletar bloco\n const handleDeleteBlock = useCallback(\n (blockId: string) => {\n if (!document || !currentPage) return;\n\n try {\n if (selectedBlockId === blockId) {\n setSelectedBlockId(null);\n }\n const patch = PatchBuilder.removeBlock(\n document,\n currentPage.id,\n blockId,\n );\n applyChange(patch, \"Delete block\");\n } catch (error) {\n logger.error(\"Error deleting block:\", error);\n if (selectedBlockId === blockId) {\n setSelectedBlockId(null);\n }\n }\n },\n [document, currentPage, selectedBlockId, applyChange],\n );\n\n // Atualizar propriedades do bloco\n const handleUpdateBlock = useCallback(\n (updates: Record<string, any>) => {\n if (!document || !selectedBlockId || !currentPage) return;\n if (\n selectedBlockId === \"palette-selector\" ||\n selectedBlockId === \"template-selector\"\n )\n return;\n\n try {\n const patch = PatchBuilder.updateBlockProps(\n document,\n currentPage.id,\n selectedBlockId,\n updates,\n );\n if (patch?.length) {\n applyChange(patch, \"Update block properties\");\n }\n } catch (error) {\n logger.error(\"Error updating block:\", error);\n }\n },\n [document, selectedBlockId, currentPage, applyChange],\n );\n\n // Voltar ao seletor de templates (document = null)\n const resetToTemplate = useCallback(() => {\n setDocument(null);\n setCurrentPageIdState(\"home\");\n history.clear();\n setSelectedBlockId(null);\n }, [history]);\n\n // Carregar um documento completo (ex: gerado por IA)\n const loadDocument = useCallback(\n (doc: SiteDocument) => {\n setDocument(doc);\n setCurrentPageIdState(doc.pages?.[0]?.id ?? \"home\");\n history.clear();\n setSelectedBlockId(null);\n if (doc.pages?.[0]?.structure?.length > 0) {\n setSelectedBlockId(doc.pages[0].structure[0].id);\n }\n },\n [history],\n );\n\n const setCurrentPageId = useCallback((id: string) => {\n setCurrentPageIdState(id);\n setSelectedBlockId(null);\n }, []);\n\n // Adicionar página (ex.: Avisos) com estrutura mínima\n const addPage = useCallback(\n (pageId: string, name: string, slug: string) => {\n if (!document) return;\n const existing = document.pages.find((p) => p.id === pageId);\n if (existing) return;\n\n // Gera slug único se necessário\n const uniqueSlug = generateUniqueSlug(slug, document.pages);\n\n // Cria página com estrutura padrão (navbar + conteúdo + footer)\n const newPage: SitePage = createDefaultPageStructure(\n pageId,\n name,\n uniqueSlug,\n [...document.pages, { id: pageId, name, slug: uniqueSlug, structure: [] }]\n );\n\n // Patch para adicionar página\n const addPagePatch = PatchBuilder.addPage(document, newPage);\n\n // Aplicar mudança - o hook useNavbarAutoSync irá detectar e sincronizar automaticamente\n applyChange(addPagePatch, `Adicionar página ${name}`);\n setCurrentPageIdState(pageId);\n setSelectedBlockId(null);\n },\n [document, applyChange],\n );\n\n // Remover página (não permite remover home; exige pelo menos uma página)\n const removePage = useCallback(\n (pageId: string) => {\n if (!document) return;\n if (pageId === \"home\") return;\n if (document.pages.length <= 1) return;\n\n const removePagePatch = PatchBuilder.removePage(document, pageId);\n\n // Aplicar mudança - o hook useNavbarAutoSync irá detectar e sincronizar automaticamente\n applyChange(removePagePatch, \"Remover página\");\n\n if (currentPageId === pageId) {\n const updatedPages = document.pages.filter(p => p.id !== pageId);\n setCurrentPageIdState(updatedPages[0]?.id ?? \"home\");\n }\n setSelectedBlockId(null);\n },\n [document, currentPageId, applyChange],\n );\n\n const canRemovePage = useCallback(\n (pageId: string) => {\n if (!document) return false;\n return pageId !== \"home\" && document.pages.length > 1;\n },\n [document],\n );\n\n // Plugins: estado derivado\n const activePlugins = useMemo(\n () => document?.plugins?.active ?? [],\n [document],\n );\n\n // Ativar plugin\n const activatePlugin = useCallback(\n (pluginId: string) => {\n if (!document) return;\n const updatedDocument = pluginRegistry.activate(document, pluginId);\n if (updatedDocument !== document) {\n setDocument(updatedDocument);\n }\n },\n [document],\n );\n\n // Desativar plugin\n const deactivatePlugin = useCallback(\n (pluginId: string) => {\n if (!document) return;\n const updatedDocument = pluginRegistry.deactivate(document, pluginId);\n if (updatedDocument !== document) {\n setDocument(updatedDocument);\n }\n },\n [document],\n );\n\n return {\n // Estado\n document,\n currentPageId,\n currentPage,\n selectedBlockId,\n selectedBlock,\n history,\n\n // Ações\n setDocument,\n loadDocument,\n setCurrentPageId,\n addPage,\n removePage,\n setSelectedBlockId,\n handleUndo,\n handleRedo,\n handleAddBlock,\n handleDeleteBlock,\n handleUpdateBlock,\n applyChange,\n resetToTemplate,\n\n // Estado derivado\n isPaletteSelected,\n isTemplateSelected,\n canRemovePage,\n\n // Plugins\n activePlugins,\n activatePlugin,\n deactivatePlugin,\n };\n}\n"],"names":["useEditorState","options","initialData","initialDocument","useMemo","document","setDocument","useState","currentPageId","setCurrentPageIdState","history","createHistoryManager","selectedBlockId","setSelectedBlockId","applyChange","useCallback","patch","description","result","applyPatch","logger","cleanedDocument","cleanDocumentStructure","useNavbarAutoSync","currentPage","page","p","selectedBlock","findBlockInStructure","isPaletteSelected","isTemplateSelected","handleUndo","handleRedo","createBlockFromType","blockType","definition","componentRegistry","handleAddBlock","parentBlockId","position","newBlock","PatchBuilder","error","handleDeleteBlock","blockId","handleUpdateBlock","updates","resetToTemplate","loadDocument","doc","setCurrentPageId","id","addPage","pageId","name","slug","uniqueSlug","generateUniqueSlug","newPage","createDefaultPageStructure","addPagePatch","removePage","removePagePatch","updatedPages","canRemovePage","activePlugins","activatePlugin","pluginId","updatedDocument","pluginRegistry","deactivatePlugin"],"mappings":"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"}
1
+ {"version":3,"file":"useEditorState.js","sources":["../../src/hooks/useEditorState.ts"],"sourcesContent":["/**\n * useEditorState Hook\n * Gerencia todo o estado do editor de landing pages\n */\n\nimport { useState, useMemo, useCallback } from \"react\";\nimport {\n SiteDocument,\n SitePage,\n Block,\n BlockType,\n HistoryManager,\n createHistoryManager,\n applyPatch,\n PatchBuilder,\n componentRegistry,\n pluginRegistry,\n} from \"../engine\";\nimport {\n findBlockInStructure,\n cleanDocumentStructure,\n} from \"../utils/blockUtils\";\nimport { logger } from \"../utils/logger\";\nimport {\n createDefaultPageStructure,\n generateUniqueSlug,\n} from \"../utils/pageTemplateFactory\";\nimport { useNavbarAutoSync } from \"./useNavbarAutoSync\";\n\ninterface UseEditorStateOptions {\n initialData?: SiteDocument | null;\n}\n\ninterface UseEditorStateReturn {\n // Estado\n document: SiteDocument | null;\n currentPageId: string;\n currentPage: ReturnType<typeof useMemo>;\n selectedBlockId: string | null;\n selectedBlock: Block | null;\n history: HistoryManager;\n\n // Ações\n setDocument: (doc: SiteDocument) => void;\n loadDocument: (doc: SiteDocument) => void;\n setCurrentPageId: (id: string) => void;\n addPage: (pageId: string, name: string, slug: string) => void;\n removePage: (pageId: string) => void;\n setSelectedBlockId: (id: string | null) => void;\n handleUndo: () => void;\n handleRedo: () => void;\n handleAddBlock: (\n blockType: BlockType,\n parentBlockId?: string,\n position?: number,\n ) => void;\n handleDeleteBlock: (blockId: string) => void;\n handleUpdateBlock: (updates: Record<string, any>) => void;\n applyChange: (patch: any[], description?: string) => void;\n resetToTemplate: () => void;\n\n // Estado derivado\n isPaletteSelected: boolean;\n isTemplateSelected: boolean;\n canRemovePage: (pageId: string) => boolean;\n\n // Paleta\n selectedPalette: string | null;\n setSelectedPalette: (name: string | null) => void;\n\n // Plugins\n activePlugins: string[];\n activatePlugin: (pluginId: string) => void;\n deactivatePlugin: (pluginId: string) => void;\n}\n\n/**\n * Hook para gerenciar estado do editor\n */\nexport function useEditorState(\n options: UseEditorStateOptions = {},\n): UseEditorStateReturn {\n const { initialData } = options;\n\n // Sem initialData: documento null até o usuário escolher um template\n const initialDocument = useMemo(() => {\n if (initialData) {\n return initialData;\n }\n return null;\n }, [initialData]);\n\n // Estados\n const [document, setDocument] = useState<SiteDocument | null>(\n initialDocument,\n );\n const [currentPageId, setCurrentPageIdState] = useState<string>(\"home\");\n const [history] = useState<HistoryManager>(() => createHistoryManager(50));\n const [selectedBlockId, setSelectedBlockId] = useState<string | null>(null);\n const [selectedPalette, setSelectedPaletteState] = useState<string | null>(null);\n\n // Aplicar mudanças via patches (precisa ser declarado antes de useNavbarAutoSync)\n const applyChange = useCallback(\n (patch: any[], description?: string) => {\n if (!document) return;\n if (!patch?.length) return;\n\n // IMPORTANTE: Capturar histórico ANTES de aplicar patch\n history.push(document, patch, description || \"User edit\");\n\n const result = applyPatch(document, patch);\n logger.debug(\"[applyChange] Patch result:\", result);\n\n if (result.success && result.document) {\n const cleanedDocument = cleanDocumentStructure(result.document);\n setDocument(cleanedDocument);\n } else {\n // Se falhar, reverter histórico\n if (history.canUndo()) {\n const undoResult = history.undo(document);\n if (!undoResult.success) {\n logger.error(\"[applyChange] Failed to undo after patch error\");\n }\n }\n }\n },\n [document, history],\n );\n\n // Hook de sincronização automática do navbar\n useNavbarAutoSync(document, applyChange);\n\n // Página atual (derivada de currentPageId; sem navegação, só edição)\n const currentPage = useMemo(() => {\n if (!document?.pages?.length) return null;\n const page =\n document.pages.find((p) => p?.id === currentPageId) ?? document.pages[0];\n if (page && !Array.isArray(page.structure)) {\n page.structure = [];\n }\n return page;\n }, [document, currentPageId]);\n\n // Bloco selecionado\n const selectedBlock = useMemo(() => {\n if (!selectedBlockId || !currentPage) return null;\n if (\n selectedBlockId === \"palette-selector\" ||\n selectedBlockId === \"template-selector\"\n ) {\n return null;\n }\n return findBlockInStructure(currentPage.structure, selectedBlockId);\n }, [selectedBlockId, currentPage]);\n\n // Estados derivados\n const isPaletteSelected = selectedBlockId === \"palette-selector\";\n const isTemplateSelected = selectedBlockId === \"template-selector\";\n\n // Undo/Redo\n const handleUndo = useCallback(() => {\n if (!document) return;\n const result = history.undo(document);\n if (result.success && result.document) {\n setDocument(result.document);\n }\n }, [document, history]);\n\n const handleRedo = useCallback(() => {\n if (!document) return;\n const result = history.redo(document);\n if (result.success && result.document) {\n setDocument(result.document);\n }\n }, [document, history]);\n\n // Criar bloco\n const createBlockFromType = useCallback(\n (blockType: BlockType): Block | null => {\n const definition = componentRegistry.get(blockType);\n if (!definition) {\n logger.error(\n `[createBlockFromType] Block type \"${blockType}\" not found in registry`,\n );\n return null;\n }\n\n const id = `${blockType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n\n return {\n id,\n type: blockType,\n props: {\n ...definition.defaultProps,\n ...(definition.defaultChildren && {\n children: definition.defaultChildren,\n }),\n },\n } as Block;\n },\n [],\n );\n\n // Adicionar bloco (mantido para API; editor template-based não exibe paleta de blocos)\n const handleAddBlock = useCallback(\n (blockType: BlockType, parentBlockId?: string, position?: number) => {\n if (!document || !currentPage) return;\n\n try {\n const newBlock = createBlockFromType(blockType);\n if (!newBlock) {\n logger.error(\"[handleAddBlock] Failed to create block:\", blockType);\n return;\n }\n\n const patch = PatchBuilder.addBlock(\n document,\n currentPage.id,\n newBlock,\n parentBlockId,\n position,\n );\n\n applyChange(patch, `Add ${blockType} block`);\n setSelectedBlockId(newBlock.id);\n } catch (error) {\n logger.error(\"[handleAddBlock] Error adding block:\", error);\n }\n },\n [currentPage, document, createBlockFromType, applyChange],\n );\n\n // Deletar bloco\n const handleDeleteBlock = useCallback(\n (blockId: string) => {\n if (!document || !currentPage) return;\n\n try {\n if (selectedBlockId === blockId) {\n setSelectedBlockId(null);\n }\n const patch = PatchBuilder.removeBlock(\n document,\n currentPage.id,\n blockId,\n );\n applyChange(patch, \"Delete block\");\n } catch (error) {\n logger.error(\"Error deleting block:\", error);\n if (selectedBlockId === blockId) {\n setSelectedBlockId(null);\n }\n }\n },\n [document, currentPage, selectedBlockId, applyChange],\n );\n\n // Atualizar propriedades do bloco\n const handleUpdateBlock = useCallback(\n (updates: Record<string, any>) => {\n if (!document || !selectedBlockId || !currentPage) return;\n if (\n selectedBlockId === \"palette-selector\" ||\n selectedBlockId === \"template-selector\"\n )\n return;\n\n try {\n const patch = PatchBuilder.updateBlockProps(\n document,\n currentPage.id,\n selectedBlockId,\n updates,\n );\n if (patch?.length) {\n applyChange(patch, \"Update block properties\");\n }\n } catch (error) {\n logger.error(\"Error updating block:\", error);\n }\n },\n [document, selectedBlockId, currentPage, applyChange],\n );\n\n const setSelectedPalette = useCallback((name: string | null) => {\n setSelectedPaletteState(name);\n }, []);\n\n // Voltar ao seletor de templates (document = null)\n const resetToTemplate = useCallback(() => {\n setDocument(null);\n setCurrentPageIdState(\"home\");\n history.clear();\n setSelectedBlockId(null);\n setSelectedPaletteState(null);\n }, [history]);\n\n // Carregar um documento completo (ex: gerado por IA)\n const loadDocument = useCallback(\n (doc: SiteDocument) => {\n setDocument(doc);\n setCurrentPageIdState(doc.pages?.[0]?.id ?? \"home\");\n history.clear();\n setSelectedBlockId(null);\n if (doc.pages?.[0]?.structure?.length > 0) {\n setSelectedBlockId(doc.pages[0].structure[0].id);\n }\n },\n [history],\n );\n\n const setCurrentPageId = useCallback((id: string) => {\n setCurrentPageIdState(id);\n setSelectedBlockId(null);\n }, []);\n\n // Adicionar página (ex.: Avisos) com estrutura mínima\n const addPage = useCallback(\n (pageId: string, name: string, slug: string) => {\n if (!document) return;\n const existing = document.pages.find((p) => p.id === pageId);\n if (existing) return;\n\n // Gera slug único se necessário\n const uniqueSlug = generateUniqueSlug(slug, document.pages);\n\n // Cria página com estrutura padrão (navbar + conteúdo + footer)\n const newPage: SitePage = createDefaultPageStructure(\n pageId,\n name,\n uniqueSlug,\n [...document.pages, { id: pageId, name, slug: uniqueSlug, structure: [] }]\n );\n\n // Patch para adicionar página\n const addPagePatch = PatchBuilder.addPage(document, newPage);\n\n // Aplicar mudança - o hook useNavbarAutoSync irá detectar e sincronizar automaticamente\n applyChange(addPagePatch, `Adicionar página ${name}`);\n setCurrentPageIdState(pageId);\n setSelectedBlockId(null);\n },\n [document, applyChange],\n );\n\n // Remover página (não permite remover home; exige pelo menos uma página)\n const removePage = useCallback(\n (pageId: string) => {\n if (!document) return;\n if (pageId === \"home\") return;\n if (document.pages.length <= 1) return;\n\n const removePagePatch = PatchBuilder.removePage(document, pageId);\n\n // Aplicar mudança - o hook useNavbarAutoSync irá detectar e sincronizar automaticamente\n applyChange(removePagePatch, \"Remover página\");\n\n if (currentPageId === pageId) {\n const updatedPages = document.pages.filter(p => p.id !== pageId);\n setCurrentPageIdState(updatedPages[0]?.id ?? \"home\");\n }\n setSelectedBlockId(null);\n },\n [document, currentPageId, applyChange],\n );\n\n const canRemovePage = useCallback(\n (pageId: string) => {\n if (!document) return false;\n return pageId !== \"home\" && document.pages.length > 1;\n },\n [document],\n );\n\n // Plugins: estado derivado\n const activePlugins = useMemo(\n () => document?.plugins?.active ?? [],\n [document],\n );\n\n // Ativar plugin\n const activatePlugin = useCallback(\n (pluginId: string) => {\n if (!document) return;\n const updatedDocument = pluginRegistry.activate(document, pluginId);\n if (updatedDocument !== document) {\n setDocument(updatedDocument);\n }\n },\n [document],\n );\n\n // Desativar plugin\n const deactivatePlugin = useCallback(\n (pluginId: string) => {\n if (!document) return;\n const updatedDocument = pluginRegistry.deactivate(document, pluginId);\n if (updatedDocument !== document) {\n setDocument(updatedDocument);\n }\n },\n [document],\n );\n\n return {\n // Estado\n document,\n currentPageId,\n currentPage,\n selectedBlockId,\n selectedBlock,\n history,\n\n // Ações\n setDocument,\n loadDocument,\n setCurrentPageId,\n addPage,\n removePage,\n setSelectedBlockId,\n handleUndo,\n handleRedo,\n handleAddBlock,\n handleDeleteBlock,\n handleUpdateBlock,\n applyChange,\n resetToTemplate,\n\n // Estado derivado\n isPaletteSelected,\n isTemplateSelected,\n canRemovePage,\n\n // Paleta\n selectedPalette,\n setSelectedPalette,\n\n // Plugins\n activePlugins,\n activatePlugin,\n deactivatePlugin,\n };\n}\n"],"names":["useEditorState","options","initialData","initialDocument","useMemo","document","setDocument","useState","currentPageId","setCurrentPageIdState","history","createHistoryManager","selectedBlockId","setSelectedBlockId","selectedPalette","setSelectedPaletteState","applyChange","useCallback","patch","description","result","applyPatch","logger","cleanedDocument","cleanDocumentStructure","useNavbarAutoSync","currentPage","page","p","selectedBlock","findBlockInStructure","isPaletteSelected","isTemplateSelected","handleUndo","handleRedo","createBlockFromType","blockType","definition","componentRegistry","handleAddBlock","parentBlockId","position","newBlock","PatchBuilder","error","handleDeleteBlock","blockId","handleUpdateBlock","updates","setSelectedPalette","name","resetToTemplate","loadDocument","doc","setCurrentPageId","id","addPage","pageId","slug","uniqueSlug","generateUniqueSlug","newPage","createDefaultPageStructure","addPagePatch","removePage","removePagePatch","updatedPages","canRemovePage","activePlugins","activatePlugin","pluginId","updatedDocument","pluginRegistry","deactivatePlugin"],"mappings":";;;;;;;;;;AA+EO,SAASA,GACdC,IAAiC,IACX;AACtB,QAAM,EAAE,aAAAC,MAAgBD,GAGlBE,IAAkBC,EAAQ,MAC1BF,KAGG,MACN,CAACA,CAAW,CAAC,GAGV,CAACG,GAAUC,CAAW,IAAIC;AAAA,IAC9BJ;AAAA,EAAA,GAEI,CAACK,GAAeC,CAAqB,IAAIF,EAAiB,MAAM,GAChE,CAACG,CAAO,IAAIH,EAAyB,MAAMI,EAAqB,EAAE,CAAC,GACnE,CAACC,GAAiBC,CAAkB,IAAIN,EAAwB,IAAI,GACpE,CAACO,GAAiBC,CAAuB,IAAIR,EAAwB,IAAI,GAGzES,IAAcC;AAAA,IAClB,CAACC,GAAcC,MAAyB;AAEtC,UADI,CAACd,KACD,CAACa,GAAO,OAAQ;AAGpB,MAAAR,EAAQ,KAAKL,GAAUa,GAAOC,KAAe,WAAW;AAExD,YAAMC,IAASC,EAAWhB,GAAUa,CAAK;AAGzC,UAFAI,EAAO,MAAM,+BAA+BF,CAAM,GAE9CA,EAAO,WAAWA,EAAO,UAAU;AACrC,cAAMG,IAAkBC,EAAuBJ,EAAO,QAAQ;AAC9D,QAAAd,EAAYiB,CAAe;AAAA,MAC7B;AAEE,QAAIb,EAAQ,cACSA,EAAQ,KAAKL,CAAQ,EACxB,WACdiB,EAAO,MAAM,gDAAgD;AAAA,IAIrE;AAAA,IACA,CAACjB,GAAUK,CAAO;AAAA,EAAA;AAIpB,EAAAe,EAAkBpB,GAAUW,CAAW;AAGvC,QAAMU,IAActB,EAAQ,MAAM;AAChC,QAAI,CAACC,GAAU,OAAO,OAAQ,QAAO;AACrC,UAAMsB,IACJtB,EAAS,MAAM,KAAK,CAACuB,MAAMA,GAAG,OAAOpB,CAAa,KAAKH,EAAS,MAAM,CAAC;AACzE,WAAIsB,KAAQ,CAAC,MAAM,QAAQA,EAAK,SAAS,MACvCA,EAAK,YAAY,CAAA,IAEZA;AAAA,EACT,GAAG,CAACtB,GAAUG,CAAa,CAAC,GAGtBqB,IAAgBzB,EAAQ,MACxB,CAACQ,KAAmB,CAACc,KAEvBd,MAAoB,sBACpBA,MAAoB,sBAEb,OAEFkB,EAAqBJ,EAAY,WAAWd,CAAe,GACjE,CAACA,GAAiBc,CAAW,CAAC,GAG3BK,IAAoBnB,MAAoB,oBACxCoB,IAAqBpB,MAAoB,qBAGzCqB,IAAahB,EAAY,MAAM;AACnC,QAAI,CAACZ,EAAU;AACf,UAAMe,IAASV,EAAQ,KAAKL,CAAQ;AACpC,IAAIe,EAAO,WAAWA,EAAO,YAC3Bd,EAAYc,EAAO,QAAQ;AAAA,EAE/B,GAAG,CAACf,GAAUK,CAAO,CAAC,GAEhBwB,IAAajB,EAAY,MAAM;AACnC,QAAI,CAACZ,EAAU;AACf,UAAMe,IAASV,EAAQ,KAAKL,CAAQ;AACpC,IAAIe,EAAO,WAAWA,EAAO,YAC3Bd,EAAYc,EAAO,QAAQ;AAAA,EAE/B,GAAG,CAACf,GAAUK,CAAO,CAAC,GAGhByB,IAAsBlB;AAAA,IAC1B,CAACmB,MAAuC;AACtC,YAAMC,IAAaC,GAAkB,IAAIF,CAAS;AAClD,aAAKC,IASE;AAAA,QACL,IAHS,GAAGD,CAAS,IAAI,KAAK,KAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,QAI9E,MAAMA;AAAA,QACN,OAAO;AAAA,UACL,GAAGC,EAAW;AAAA,UACd,GAAIA,EAAW,mBAAmB;AAAA,YAChC,UAAUA,EAAW;AAAA,UAAA;AAAA,QACvB;AAAA,MACF,KAhBAf,EAAO;AAAA,QACL,qCAAqCc,CAAS;AAAA,MAAA,GAEzC;AAAA,IAeX;AAAA,IACA,CAAA;AAAA,EAAC,GAIGG,IAAiBtB;AAAA,IACrB,CAACmB,GAAsBI,GAAwBC,MAAsB;AACnE,UAAI,GAACpC,KAAY,CAACqB;AAElB,YAAI;AACF,gBAAMgB,IAAWP,EAAoBC,CAAS;AAC9C,cAAI,CAACM,GAAU;AACb,YAAApB,EAAO,MAAM,4CAA4Cc,CAAS;AAClE;AAAA,UACF;AAEA,gBAAMlB,IAAQyB,EAAa;AAAA,YACzBtC;AAAA,YACAqB,EAAY;AAAA,YACZgB;AAAA,YACAF;AAAA,YACAC;AAAA,UAAA;AAGF,UAAAzB,EAAYE,GAAO,OAAOkB,CAAS,QAAQ,GAC3CvB,EAAmB6B,EAAS,EAAE;AAAA,QAChC,SAASE,GAAO;AACd,UAAAtB,EAAO,MAAM,wCAAwCsB,CAAK;AAAA,QAC5D;AAAA,IACF;AAAA,IACA,CAAClB,GAAarB,GAAU8B,GAAqBnB,CAAW;AAAA,EAAA,GAIpD6B,IAAoB5B;AAAA,IACxB,CAAC6B,MAAoB;AACnB,UAAI,GAACzC,KAAY,CAACqB;AAElB,YAAI;AACF,UAAId,MAAoBkC,KACtBjC,EAAmB,IAAI;AAEzB,gBAAMK,IAAQyB,EAAa;AAAA,YACzBtC;AAAA,YACAqB,EAAY;AAAA,YACZoB;AAAA,UAAA;AAEF,UAAA9B,EAAYE,GAAO,cAAc;AAAA,QACnC,SAAS0B,GAAO;AACd,UAAAtB,EAAO,MAAM,yBAAyBsB,CAAK,GACvChC,MAAoBkC,KACtBjC,EAAmB,IAAI;AAAA,QAE3B;AAAA,IACF;AAAA,IACA,CAACR,GAAUqB,GAAad,GAAiBI,CAAW;AAAA,EAAA,GAIhD+B,IAAoB9B;AAAA,IACxB,CAAC+B,MAAiC;AAChC,UAAI,GAAC3C,KAAY,CAACO,KAAmB,CAACc,MAEpC,EAAAd,MAAoB,sBACpBA,MAAoB;AAItB,YAAI;AACF,gBAAMM,IAAQyB,EAAa;AAAA,YACzBtC;AAAA,YACAqB,EAAY;AAAA,YACZd;AAAA,YACAoC;AAAA,UAAA;AAEF,UAAI9B,GAAO,UACTF,EAAYE,GAAO,yBAAyB;AAAA,QAEhD,SAAS0B,GAAO;AACd,UAAAtB,EAAO,MAAM,yBAAyBsB,CAAK;AAAA,QAC7C;AAAA,IACF;AAAA,IACA,CAACvC,GAAUO,GAAiBc,GAAaV,CAAW;AAAA,EAAA,GAGhDiC,IAAqBhC,EAAY,CAACiC,MAAwB;AAC9D,IAAAnC,EAAwBmC,CAAI;AAAA,EAC9B,GAAG,CAAA,CAAE,GAGCC,IAAkBlC,EAAY,MAAM;AACxC,IAAAX,EAAY,IAAI,GAChBG,EAAsB,MAAM,GAC5BC,EAAQ,MAAA,GACRG,EAAmB,IAAI,GACvBE,EAAwB,IAAI;AAAA,EAC9B,GAAG,CAACL,CAAO,CAAC,GAGN0C,IAAenC;AAAA,IACnB,CAACoC,MAAsB;AACrB,MAAA/C,EAAY+C,CAAG,GACf5C,EAAsB4C,EAAI,QAAQ,CAAC,GAAG,MAAM,MAAM,GAClD3C,EAAQ,MAAA,GACRG,EAAmB,IAAI,GACnBwC,EAAI,QAAQ,CAAC,GAAG,WAAW,SAAS,KACtCxC,EAAmBwC,EAAI,MAAM,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE;AAAA,IAEnD;AAAA,IACA,CAAC3C,CAAO;AAAA,EAAA,GAGJ4C,IAAmBrC,EAAY,CAACsC,MAAe;AACnD,IAAA9C,EAAsB8C,CAAE,GACxB1C,EAAmB,IAAI;AAAA,EACzB,GAAG,CAAA,CAAE,GAGC2C,IAAUvC;AAAA,IACd,CAACwC,GAAgBP,GAAcQ,MAAiB;AAG9C,UAFI,CAACrD,KACYA,EAAS,MAAM,KAAK,CAACuB,MAAMA,EAAE,OAAO6B,CAAM,EAC7C;AAGd,YAAME,IAAaC,EAAmBF,GAAMrD,EAAS,KAAK,GAGpDwD,IAAoBC;AAAA,QACxBL;AAAA,QACAP;AAAA,QACAS;AAAA,QACA,CAAC,GAAGtD,EAAS,OAAO,EAAE,IAAIoD,GAAQ,MAAAP,GAAM,MAAMS,GAAY,WAAW,IAAI;AAAA,MAAA,GAIrEI,IAAepB,EAAa,QAAQtC,GAAUwD,CAAO;AAG3D,MAAA7C,EAAY+C,GAAc,oBAAoBb,CAAI,EAAE,GACpDzC,EAAsBgD,CAAM,GAC5B5C,EAAmB,IAAI;AAAA,IACzB;AAAA,IACA,CAACR,GAAUW,CAAW;AAAA,EAAA,GAIlBgD,IAAa/C;AAAA,IACjB,CAACwC,MAAmB;AAGlB,UAFI,CAACpD,KACDoD,MAAW,UACXpD,EAAS,MAAM,UAAU,EAAG;AAEhC,YAAM4D,IAAkBtB,EAAa,WAAWtC,GAAUoD,CAAM;AAKhE,UAFAzC,EAAYiD,GAAiB,gBAAgB,GAEzCzD,MAAkBiD,GAAQ;AAC5B,cAAMS,IAAe7D,EAAS,MAAM,OAAO,CAAAuB,MAAKA,EAAE,OAAO6B,CAAM;AAC/D,QAAAhD,EAAsByD,EAAa,CAAC,GAAG,MAAM,MAAM;AAAA,MACrD;AACA,MAAArD,EAAmB,IAAI;AAAA,IACzB;AAAA,IACA,CAACR,GAAUG,GAAeQ,CAAW;AAAA,EAAA,GAGjCmD,IAAgBlD;AAAA,IACpB,CAACwC,MACMpD,IACEoD,MAAW,UAAUpD,EAAS,MAAM,SAAS,IAD9B;AAAA,IAGxB,CAACA,CAAQ;AAAA,EAAA,GAIL+D,IAAgBhE;AAAA,IACpB,MAAMC,GAAU,SAAS,UAAU,CAAA;AAAA,IACnC,CAACA,CAAQ;AAAA,EAAA,GAILgE,IAAiBpD;AAAA,IACrB,CAACqD,MAAqB;AACpB,UAAI,CAACjE,EAAU;AACf,YAAMkE,IAAkBC,EAAe,SAASnE,GAAUiE,CAAQ;AAClE,MAAIC,MAAoBlE,KACtBC,EAAYiE,CAAe;AAAA,IAE/B;AAAA,IACA,CAAClE,CAAQ;AAAA,EAAA,GAILoE,IAAmBxD;AAAA,IACvB,CAACqD,MAAqB;AACpB,UAAI,CAACjE,EAAU;AACf,YAAMkE,IAAkBC,EAAe,WAAWnE,GAAUiE,CAAQ;AACpE,MAAIC,MAAoBlE,KACtBC,EAAYiE,CAAe;AAAA,IAE/B;AAAA,IACA,CAAClE,CAAQ;AAAA,EAAA;AAGX,SAAO;AAAA;AAAA,IAEL,UAAAA;AAAA,IACA,eAAAG;AAAA,IACA,aAAAkB;AAAA,IACA,iBAAAd;AAAA,IACA,eAAAiB;AAAA,IACA,SAAAnB;AAAA;AAAA,IAGA,aAAAJ;AAAA,IACA,cAAA8C;AAAA,IACA,kBAAAE;AAAA,IACA,SAAAE;AAAA,IACA,YAAAQ;AAAA,IACA,oBAAAnD;AAAA,IACA,YAAAoB;AAAA,IACA,YAAAC;AAAA,IACA,gBAAAK;AAAA,IACA,mBAAAM;AAAA,IACA,mBAAAE;AAAA,IACA,aAAA/B;AAAA,IACA,iBAAAmC;AAAA;AAAA,IAGA,mBAAApB;AAAA,IACA,oBAAAC;AAAA,IACA,eAAAmC;AAAA;AAAA,IAGA,iBAAArD;AAAA,IACA,oBAAAmC;AAAA;AAAA,IAGA,eAAAmB;AAAA,IACA,gBAAAC;AAAA,IACA,kBAAAI;AAAA,EAAA;AAEJ;"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  export { LandingPageEditor } from './editor/LandingPageEditor';
6
6
  export type { UploadConfig, LandingPageEditorProps } from './editor/LandingPageEditor';
7
7
  export { LandingPageViewer } from './viewer/LandingPageViewer';
8
- export type { BlockType, Block, BlockBase, ContainerBlock, StackBlock, GridBlock, BoxBlock, SpacerBlock, HeadingBlock, TextBlock, ImageBlock, ButtonBlock, LinkBlock, DividerBlock, BadgeBlock, IconBlock, AvatarBlock, VideoBlock, CardBlock, SectionBlock, HeroBlock, HeroVariationId, NavbarBlock, NavbarLink, NavbarVariationId, FooterBlock, FeatureBlock, FeatureGridBlock, PricingCardBlock, PricingBlock, TestimonialBlock, TestimonialGridBlock, FaqItemBlock, FaqBlock, CtaBlock, StatItemBlock, StatsBlock, LogoCloudBlock, CountdownBlock, CarouselBlock, BlogCardBlock, BlogCardGridBlock, TeamCardBlock, TeamGridBlock, CourseCardGridBlock, CategoryCardGridBlock, SocialLinksBlock, BlogPostCardBlock, BlogPostGridBlock, BlogPostDetailBlock, FormBlock, InputBlock, SiteDocument, SitePage, ImageGridItem, ImageGridPreset, TypographyConfig, } from './engine/schema/siteDocument';
8
+ export type { BlockType, Block, BlockBase, ContainerBlock, StackBlock, GridBlock, BoxBlock, SpacerBlock, HeadingBlock, TextBlock, ImageBlock, ButtonBlock, LinkBlock, DividerBlock, BadgeBlock, IconBlock, AvatarBlock, VideoBlock, CardBlock, SectionBlock, HeroBlock, HeroVariationId, NavbarBlock, NavbarLink, NavbarVariationId, FooterBlock, FeatureBlock, FeatureGridBlock, PricingCardBlock, PricingBlock, TestimonialBlock, TestimonialGridBlock, FaqItemBlock, FaqBlock, CtaBlock, StatItemBlock, StatsBlock, LogoCloudBlock, CountdownBlock, CarouselBlock, BlogCardBlock, BlogCardGridBlock, TeamCardBlock, TeamGridBlock, CourseCardGridBlock, CategoryCardGridBlock, SocialLinksBlock, BlogPostCardBlock, BlogPostGridBlock, BlogPostDetailBlock, ProductShowcaseBlock, AboutSectionBlock, ContactSectionBlock, FormBlock, InputBlock, SiteDocument, SitePage, ImageGridItem, ImageGridPreset, TypographyConfig, } from './engine/schema/siteDocument';
9
9
  export { createEmptySiteDocument, } from './engine/schema/siteDocument';
10
10
  export type { RadiusScale, ShadowScale, SpacingScale, MotionLevel, BackgroundStyle, GradientDirection, ColorTokens, TypographyTokens, EffectTokens, LayoutTokens, ComponentTokens, ThemeTokens, } from './engine/schema/themeTokens';
11
11
  export { radiusScaleMap, shadowScaleMap, spacingScaleMap, gradientDirectionMap, defaultEffectTokens, defaultLayoutTokens, defaultComponentTokens, defaultThemeTokens, darkThemeTokens, gradientThemeTokens, corporateThemeTokens, playfulThemeTokens, generateThemeCSSVariables, } from './engine/schema/themeTokens';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}