vobi_document 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -6
- package/dist/blocks.cjs +100 -0
- package/dist/blocks.cjs.map +1 -0
- package/dist/blocks.d.cts +201 -0
- package/dist/blocks.d.ts +201 -0
- package/dist/blocks.js +7 -0
- package/dist/blocks.js.map +1 -0
- package/dist/catalogContext-DenbX-OW.d.cts +15 -0
- package/dist/catalogContext-HGMU-w_4.d.ts +15 -0
- package/dist/chunk-2EBYURIX.js +90 -0
- package/dist/chunk-2EBYURIX.js.map +1 -0
- package/dist/chunk-6GRYRVU5.js +824 -0
- package/dist/chunk-6GRYRVU5.js.map +1 -0
- package/dist/chunk-ABIEQHS2.js +159 -0
- package/dist/chunk-ABIEQHS2.js.map +1 -0
- package/dist/chunk-AQ5FAAP6.cjs +168 -0
- package/dist/chunk-AQ5FAAP6.cjs.map +1 -0
- package/dist/chunk-ERKU5FDV.cjs +407 -0
- package/dist/chunk-ERKU5FDV.cjs.map +1 -0
- package/dist/chunk-FKX46GKE.cjs +36 -0
- package/dist/chunk-FKX46GKE.cjs.map +1 -0
- package/dist/chunk-GVBGVF6Y.js +3 -0
- package/dist/{chunk-SY4NYXKN.js.map → chunk-GVBGVF6Y.js.map} +1 -1
- package/dist/chunk-HMTCQOEV.js +1319 -0
- package/dist/chunk-HMTCQOEV.js.map +1 -0
- package/dist/chunk-IRFFN74K.cjs +89 -0
- package/dist/chunk-IRFFN74K.cjs.map +1 -0
- package/dist/chunk-IUDN2CGP.js +863 -0
- package/dist/chunk-IUDN2CGP.js.map +1 -0
- package/dist/chunk-JEVWEGSE.js +95 -0
- package/dist/chunk-JEVWEGSE.js.map +1 -0
- package/dist/chunk-KCZKC3OG.js +61 -0
- package/dist/chunk-KCZKC3OG.js.map +1 -0
- package/dist/chunk-KUB3TYG2.cjs +102 -0
- package/dist/chunk-KUB3TYG2.cjs.map +1 -0
- package/dist/chunk-L5FXGEKX.cjs +114 -0
- package/dist/chunk-L5FXGEKX.cjs.map +1 -0
- package/dist/chunk-LNBAFOVK.cjs +14 -0
- package/dist/chunk-LNBAFOVK.cjs.map +1 -0
- package/dist/chunk-M2TPAU2F.js +79 -0
- package/dist/chunk-M2TPAU2F.js.map +1 -0
- package/dist/chunk-MHTTFNK2.cjs +890 -0
- package/dist/chunk-MHTTFNK2.cjs.map +1 -0
- package/dist/chunk-NDHTMYPA.cjs +844 -0
- package/dist/chunk-NDHTMYPA.cjs.map +1 -0
- package/dist/chunk-PLQNNXS2.js +382 -0
- package/dist/chunk-PLQNNXS2.js.map +1 -0
- package/dist/chunk-QYBWIJXZ.js +98 -0
- package/dist/chunk-QYBWIJXZ.js.map +1 -0
- package/dist/chunk-U56KVTK5.cjs +68 -0
- package/dist/chunk-U56KVTK5.cjs.map +1 -0
- package/dist/chunk-X2BLERM5.cjs +1346 -0
- package/dist/chunk-X2BLERM5.cjs.map +1 -0
- package/dist/chunk-ZOJBDFKU.js +12 -0
- package/dist/chunk-ZOJBDFKU.js.map +1 -0
- package/dist/chunk-ZXWOZZXO.cjs +94 -0
- package/dist/chunk-ZXWOZZXO.cjs.map +1 -0
- package/dist/editor.cjs +60 -0
- package/dist/editor.cjs.map +1 -0
- package/dist/editor.d.cts +190 -0
- package/dist/editor.d.ts +190 -0
- package/dist/editor.js +7 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.cjs +418 -3746
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +73 -7893
- package/dist/index.d.ts +73 -7893
- package/dist/index.js +23 -3658
- package/dist/index.js.map +1 -1
- package/dist/messages-Bi0JxNIH.d.cts +23 -0
- package/dist/messages-Bi0JxNIH.d.ts +23 -0
- package/dist/print.cjs +354 -0
- package/dist/print.cjs.map +1 -0
- package/dist/print.d.cts +43 -0
- package/dist/print.d.ts +43 -0
- package/dist/print.js +336 -0
- package/dist/print.js.map +1 -0
- package/dist/puck.cjs +11 -7
- package/dist/puck.cjs.map +1 -1
- package/dist/puck.d.cts +1 -1
- package/dist/puck.d.ts +1 -1
- package/dist/puck.js +1 -1
- package/dist/render.cjs +72 -0
- package/dist/render.cjs.map +1 -0
- package/dist/render.d.cts +93 -0
- package/dist/render.d.ts +93 -0
- package/dist/render.js +7 -0
- package/dist/render.js.map +1 -0
- package/dist/theme-BuEFpQeZ.d.cts +112 -0
- package/dist/theme-BuEFpQeZ.d.ts +112 -0
- package/dist/types-BgIugNWW.d.cts +25 -0
- package/dist/types-BgIugNWW.d.ts +25 -0
- package/dist/types-CvKSS1Sy.d.cts +38 -0
- package/dist/types-CvKSS1Sy.d.ts +38 -0
- package/dist/variables.cjs +95 -0
- package/dist/variables.cjs.map +1 -0
- package/dist/variables.d.cts +74 -0
- package/dist/variables.d.ts +74 -0
- package/dist/variables.js +6 -0
- package/dist/variables.js.map +1 -0
- package/package.json +39 -8
- package/dist/chunk-SY4NYXKN.js +0 -3
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styled = require('styled-components');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
|
|
7
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
|
|
9
|
+
var styled__default = /*#__PURE__*/_interopDefault(styled);
|
|
10
|
+
|
|
11
|
+
// src/surface/surface.tsx
|
|
12
|
+
var DEFAULT_DOCUMENT_FONT = "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif";
|
|
13
|
+
var DEFAULT_DOCUMENT_COLORS = {
|
|
14
|
+
brand: "#005AC3",
|
|
15
|
+
text: "#3F4759",
|
|
16
|
+
background: "#FFFFFF"
|
|
17
|
+
};
|
|
18
|
+
var PAGE_WIDTH_PX = {
|
|
19
|
+
A4: 794,
|
|
20
|
+
A5: 559,
|
|
21
|
+
A3: 1123,
|
|
22
|
+
Letter: 816,
|
|
23
|
+
Legal: 816
|
|
24
|
+
};
|
|
25
|
+
var DEFAULT_PAGE_MARGINS = { top: 24, right: 24, bottom: 24, left: 24 };
|
|
26
|
+
function pageWidthPx(format = "A4") {
|
|
27
|
+
return PAGE_WIDTH_PX[format];
|
|
28
|
+
}
|
|
29
|
+
function marginsToPadding(margins) {
|
|
30
|
+
const m = { ...DEFAULT_PAGE_MARGINS, ...margins };
|
|
31
|
+
return `${m.top}px ${m.right}px ${m.bottom}px ${m.left}px`;
|
|
32
|
+
}
|
|
33
|
+
var PageFrame = styled__default.default.div`
|
|
34
|
+
--doc-brand: ${(props) => props.$brand};
|
|
35
|
+
--doc-text: ${(props) => props.$text};
|
|
36
|
+
--doc-bg: ${(props) => props.$bg};
|
|
37
|
+
font-family: ${(props) => props.$font};
|
|
38
|
+
width: ${(props) => props.$width}px;
|
|
39
|
+
max-width: 100%;
|
|
40
|
+
min-height: 100%;
|
|
41
|
+
margin: 0 auto;
|
|
42
|
+
padding: ${(props) => props.$padding};
|
|
43
|
+
background: var(--doc-bg);
|
|
44
|
+
color: var(--doc-text);
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
|
|
47
|
+
&,
|
|
48
|
+
& *,
|
|
49
|
+
& *::before,
|
|
50
|
+
& *::after {
|
|
51
|
+
box-sizing: border-box;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
& [data-docgen-block] {
|
|
55
|
+
margin-bottom: 16px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* A capa é full-bleed (no preview/PDF ela sai do PageFrame via hoist). No editor
|
|
59
|
+
ela renderiza em fluxo dentro do padding da folha — neutralizamos esse padding
|
|
60
|
+
só pra ela, pra bater com o preview. O bleed vai no wrapper do Puck
|
|
61
|
+
([data-puck-component]) e não no bloco interno, senão a borda de seleção do Puck
|
|
62
|
+
(desenhada no wrapper) fica inset. No PDF/viewer esse seletor nem existe (hoist). */
|
|
63
|
+
& [data-puck-component]:has([data-docgen-block='Cover']) {
|
|
64
|
+
margin-top: ${(props) => -(props.$padTop ?? 0)}px;
|
|
65
|
+
margin-left: ${(props) => -(props.$padLeft ?? 0)}px;
|
|
66
|
+
margin-right: ${(props) => -(props.$padRight ?? 0)}px;
|
|
67
|
+
width: calc(100% + ${(props) => (props.$padLeft ?? 0) + (props.$padRight ?? 0)}px);
|
|
68
|
+
}
|
|
69
|
+
`;
|
|
70
|
+
var EditorShell = styled__default.default.div`
|
|
71
|
+
height: 100%;
|
|
72
|
+
|
|
73
|
+
li[data-puck-layer-tree-id] button > div,
|
|
74
|
+
li[data-puck-layer-tree-id] button > div > div {
|
|
75
|
+
overflow: hidden;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#puck-canvas-root,
|
|
79
|
+
[class*='_PuckCanvas_'] {
|
|
80
|
+
background: #e8e9eb;
|
|
81
|
+
outline: none;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
[class*='_PuckCanvas_'][class*='_PuckCanvas_'][class*='_PuckCanvas_'] {
|
|
85
|
+
padding: 0;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
#preview-frame {
|
|
89
|
+
display: flex;
|
|
90
|
+
flex-direction: column;
|
|
91
|
+
align-items: center;
|
|
92
|
+
box-sizing: border-box;
|
|
93
|
+
min-height: 100%;
|
|
94
|
+
padding: 32px 16px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
#preview-frame > * {
|
|
98
|
+
flex: 1 0 auto;
|
|
99
|
+
min-height: 0;
|
|
100
|
+
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.14);
|
|
101
|
+
}
|
|
102
|
+
`;
|
|
103
|
+
var DrawerCard = styled__default.default.div`
|
|
104
|
+
display: flex;
|
|
105
|
+
align-items: center;
|
|
106
|
+
gap: 10px;
|
|
107
|
+
width: 100%;
|
|
108
|
+
padding: 11px 12px;
|
|
109
|
+
border: 1px solid #e5e7eb;
|
|
110
|
+
border-radius: 8px;
|
|
111
|
+
background: #fff;
|
|
112
|
+
cursor: grab;
|
|
113
|
+
font-size: 14px;
|
|
114
|
+
color: #1f2937;
|
|
115
|
+
|
|
116
|
+
&:hover {
|
|
117
|
+
background: #f3f6fb;
|
|
118
|
+
border-color: #c3c9d2;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
${(props) => props.$disabled && `
|
|
122
|
+
opacity: 0.45;
|
|
123
|
+
cursor: not-allowed;
|
|
124
|
+
|
|
125
|
+
&:hover {
|
|
126
|
+
background: #fff;
|
|
127
|
+
border-color: #e5e7eb;
|
|
128
|
+
}
|
|
129
|
+
`}
|
|
130
|
+
`;
|
|
131
|
+
var DrawerHint = styled__default.default.div`
|
|
132
|
+
position: relative;
|
|
133
|
+
|
|
134
|
+
&[data-hint]:not([data-hint=''])::after {
|
|
135
|
+
content: attr(data-hint);
|
|
136
|
+
position: absolute;
|
|
137
|
+
left: 50%;
|
|
138
|
+
top: calc(100% + 6px);
|
|
139
|
+
transform: translateX(-50%) translateY(-2px);
|
|
140
|
+
width: max-content;
|
|
141
|
+
max-width: 220px;
|
|
142
|
+
padding: 6px 10px;
|
|
143
|
+
background: #1f2937;
|
|
144
|
+
color: #fff;
|
|
145
|
+
font-size: 12px;
|
|
146
|
+
line-height: 1.35;
|
|
147
|
+
text-align: center;
|
|
148
|
+
border-radius: 6px;
|
|
149
|
+
opacity: 0;
|
|
150
|
+
pointer-events: none;
|
|
151
|
+
transition:
|
|
152
|
+
opacity 0.12s ease,
|
|
153
|
+
transform 0.12s ease;
|
|
154
|
+
z-index: 20;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
&[data-hint]:not([data-hint=''])::before {
|
|
158
|
+
content: '';
|
|
159
|
+
position: absolute;
|
|
160
|
+
left: 50%;
|
|
161
|
+
top: calc(100% + 1px);
|
|
162
|
+
transform: translateX(-50%);
|
|
163
|
+
border: 5px solid transparent;
|
|
164
|
+
border-bottom-color: #1f2937;
|
|
165
|
+
opacity: 0;
|
|
166
|
+
pointer-events: none;
|
|
167
|
+
transition: opacity 0.12s ease;
|
|
168
|
+
z-index: 20;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
&[data-hint]:not([data-hint='']):hover::after,
|
|
172
|
+
&[data-hint]:not([data-hint='']):hover::before {
|
|
173
|
+
opacity: 1;
|
|
174
|
+
transform: translateX(-50%) translateY(0);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
&[data-hint]:not([data-hint='']):hover::before {
|
|
178
|
+
transform: translateX(-50%);
|
|
179
|
+
}
|
|
180
|
+
`;
|
|
181
|
+
var PanelPlaceholder = styled__default.default.div`
|
|
182
|
+
padding: 24px 12px;
|
|
183
|
+
color: #6b7280;
|
|
184
|
+
font-size: 13px;
|
|
185
|
+
line-height: 1.5;
|
|
186
|
+
text-align: center;
|
|
187
|
+
`;
|
|
188
|
+
var DrawerItemIcon = styled__default.default.span`
|
|
189
|
+
display: flex;
|
|
190
|
+
flex-shrink: 0;
|
|
191
|
+
align-items: center;
|
|
192
|
+
color: #6b7280;
|
|
193
|
+
`;
|
|
194
|
+
|
|
195
|
+
// src/surface/fonts.ts
|
|
196
|
+
var DOCUMENT_FONTS = [
|
|
197
|
+
{ id: "inter", label: "Inter", stack: "'Inter', sans-serif", gfont: "Inter:wght@400;500;600;700" },
|
|
198
|
+
{ id: "arial", label: "Arial", stack: "Arial, Helvetica, sans-serif" },
|
|
199
|
+
{ id: "calibri", label: "Calibri", stack: "Calibri, Carlito, 'Segoe UI', sans-serif" },
|
|
200
|
+
{ id: "times-new-roman", label: "Times New Roman", stack: "'Times New Roman', Times, serif" },
|
|
201
|
+
{ id: "roboto", label: "Roboto", stack: "'Roboto', sans-serif", gfont: "Roboto:wght@400;500;700" },
|
|
202
|
+
{ id: "open-sans", label: "Open Sans", stack: "'Open Sans', sans-serif", gfont: "Open+Sans:wght@400;500;600;700" },
|
|
203
|
+
{
|
|
204
|
+
id: "montserrat",
|
|
205
|
+
label: "Montserrat",
|
|
206
|
+
stack: "'Montserrat', sans-serif",
|
|
207
|
+
gfont: "Montserrat:wght@400;500;600;700"
|
|
208
|
+
},
|
|
209
|
+
{ id: "lato", label: "Lato", stack: "'Lato', sans-serif", gfont: "Lato:wght@400;700" },
|
|
210
|
+
{ id: "georgia", label: "Georgia", stack: "Georgia, 'Times New Roman', serif" },
|
|
211
|
+
{ id: "helvetica", label: "Helvetica", stack: "'Helvetica Neue', Helvetica, Arial, sans-serif" }
|
|
212
|
+
];
|
|
213
|
+
var byId = new Map(DOCUMENT_FONTS.map((f) => [f.id, f]));
|
|
214
|
+
var primaryFamily = (stack) => stack.split(",")[0].trim().replace(/^['"]|['"]$/g, "");
|
|
215
|
+
function docFontFamilies(id) {
|
|
216
|
+
const font = id ? byId.get(id) : void 0;
|
|
217
|
+
if (!font?.gfont) return null;
|
|
218
|
+
const primary = primaryFamily(font.stack);
|
|
219
|
+
return { primary, alias: `${primary} Doc` };
|
|
220
|
+
}
|
|
221
|
+
function fontStack(id) {
|
|
222
|
+
const font = id ? byId.get(id) : void 0;
|
|
223
|
+
if (!font) return DEFAULT_DOCUMENT_FONT;
|
|
224
|
+
const families = docFontFamilies(id);
|
|
225
|
+
return families ? `'${families.alias}', ${font.stack}` : font.stack;
|
|
226
|
+
}
|
|
227
|
+
function gfontHref(id) {
|
|
228
|
+
const font = id ? byId.get(id) : void 0;
|
|
229
|
+
if (!font?.gfont) return null;
|
|
230
|
+
return `https://fonts.googleapis.com/css2?family=${font.gfont}&display=swap`;
|
|
231
|
+
}
|
|
232
|
+
var EMPTY_THEME = {};
|
|
233
|
+
var DocumentThemeContext = react.createContext(null);
|
|
234
|
+
function DocumentThemeProvider({ theme, children }) {
|
|
235
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DocumentThemeContext.Provider, { value: theme ?? EMPTY_THEME, children });
|
|
236
|
+
}
|
|
237
|
+
function useDocumentTheme() {
|
|
238
|
+
return react.useContext(DocumentThemeContext) ?? EMPTY_THEME;
|
|
239
|
+
}
|
|
240
|
+
function useOptionalDocumentTheme() {
|
|
241
|
+
return react.useContext(DocumentThemeContext);
|
|
242
|
+
}
|
|
243
|
+
function DocumentPage({ children, fallbackTheme }) {
|
|
244
|
+
const theme = useOptionalDocumentTheme() ?? fallbackTheme ?? {};
|
|
245
|
+
const margins = { ...DEFAULT_PAGE_MARGINS, ...theme.page?.margins ?? {} };
|
|
246
|
+
const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors };
|
|
247
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
248
|
+
PageFrame,
|
|
249
|
+
{
|
|
250
|
+
"data-docgen-root": "",
|
|
251
|
+
$width: pageWidthPx(theme.page?.format),
|
|
252
|
+
$padding: marginsToPadding(theme.page?.margins),
|
|
253
|
+
$padTop: margins.top,
|
|
254
|
+
$padRight: margins.right,
|
|
255
|
+
$padLeft: margins.left,
|
|
256
|
+
$font: fontStack(theme.documentFont),
|
|
257
|
+
$brand: colors.brand,
|
|
258
|
+
$text: colors.text,
|
|
259
|
+
$bg: colors.background,
|
|
260
|
+
children
|
|
261
|
+
}
|
|
262
|
+
);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// src/surface/appearance.ts
|
|
266
|
+
var FONT_WEIGHT = { normal: 400, medium: 500, bold: 700 };
|
|
267
|
+
function appearanceToStyle(a) {
|
|
268
|
+
const style = {};
|
|
269
|
+
if (!a) return style;
|
|
270
|
+
if (a.brand !== void 0) style["--doc-brand"] = a.brand;
|
|
271
|
+
if (a.text !== void 0) {
|
|
272
|
+
style["--doc-text"] = a.text;
|
|
273
|
+
style.color = a.text;
|
|
274
|
+
}
|
|
275
|
+
if (a.background !== void 0) style.background = a.background;
|
|
276
|
+
if (a.fontSize !== void 0) style.fontSize = a.fontSize;
|
|
277
|
+
if (a.fontFamily !== void 0) style.fontFamily = fontStack(a.fontFamily);
|
|
278
|
+
if (a.fontWeight !== void 0) style.fontWeight = FONT_WEIGHT[a.fontWeight];
|
|
279
|
+
if (a.textAlign !== void 0) style.textAlign = a.textAlign;
|
|
280
|
+
return style;
|
|
281
|
+
}
|
|
282
|
+
function useDocumentFont(id) {
|
|
283
|
+
react.useEffect(() => {
|
|
284
|
+
const href = gfontHref(id);
|
|
285
|
+
if (!href || typeof document === "undefined") return void 0;
|
|
286
|
+
const selector = `[data-docgen-font="${id}"]`;
|
|
287
|
+
if (document.head.querySelector(selector)) return void 0;
|
|
288
|
+
if (typeof fetch === "undefined") {
|
|
289
|
+
const link = document.createElement("link");
|
|
290
|
+
link.rel = "stylesheet";
|
|
291
|
+
link.href = href;
|
|
292
|
+
link.setAttribute("data-docgen-font", id);
|
|
293
|
+
document.head.appendChild(link);
|
|
294
|
+
return void 0;
|
|
295
|
+
}
|
|
296
|
+
const families = docFontFamilies(id);
|
|
297
|
+
const style = document.createElement("style");
|
|
298
|
+
style.setAttribute("data-docgen-font", id);
|
|
299
|
+
document.head.appendChild(style);
|
|
300
|
+
fetch(href).then((res) => {
|
|
301
|
+
if (!res.ok) throw new Error(`gfont css ${res.status}`);
|
|
302
|
+
return res.text();
|
|
303
|
+
}).then((css) => {
|
|
304
|
+
style.textContent = families ? css.split(`font-family: '${families.primary}'`).join(`font-family: '${families.alias}'`) : css;
|
|
305
|
+
}).catch(() => {
|
|
306
|
+
const link = document.createElement("link");
|
|
307
|
+
link.rel = "stylesheet";
|
|
308
|
+
link.href = href;
|
|
309
|
+
link.setAttribute("data-docgen-font", id);
|
|
310
|
+
style.replaceWith(link);
|
|
311
|
+
});
|
|
312
|
+
return void 0;
|
|
313
|
+
}, [id]);
|
|
314
|
+
}
|
|
315
|
+
function BlockShell({ blockKey, appearance, children }) {
|
|
316
|
+
useDocumentFont(appearance?.fontFamily);
|
|
317
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-docgen-block": blockKey, style: appearanceToStyle(appearance), children });
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// src/core/buildConfig.ts
|
|
321
|
+
var blockRenderCache = /* @__PURE__ */ new WeakMap();
|
|
322
|
+
function blockRender(key, Component) {
|
|
323
|
+
let byKey = blockRenderCache.get(Component);
|
|
324
|
+
if (!byKey) {
|
|
325
|
+
byKey = /* @__PURE__ */ new Map();
|
|
326
|
+
blockRenderCache.set(Component, byKey);
|
|
327
|
+
}
|
|
328
|
+
const cached = byKey.get(key);
|
|
329
|
+
if (cached) return cached;
|
|
330
|
+
function Block(props) {
|
|
331
|
+
return react.createElement(BlockShell, { blockKey: key, appearance: props.appearance }, react.createElement(Component, props));
|
|
332
|
+
}
|
|
333
|
+
Block.displayName = `DocumentBlock(${key})`;
|
|
334
|
+
byKey.set(key, Block);
|
|
335
|
+
return Block;
|
|
336
|
+
}
|
|
337
|
+
var fallbackPageCache = /* @__PURE__ */ new WeakMap();
|
|
338
|
+
function fallbackPage(theme) {
|
|
339
|
+
const cached = fallbackPageCache.get(theme);
|
|
340
|
+
if (cached) return cached;
|
|
341
|
+
function Page(props) {
|
|
342
|
+
return react.createElement(DocumentPage, { ...props, fallbackTheme: theme });
|
|
343
|
+
}
|
|
344
|
+
Page.displayName = "DocumentPage(fallback)";
|
|
345
|
+
fallbackPageCache.set(theme, Page);
|
|
346
|
+
return Page;
|
|
347
|
+
}
|
|
348
|
+
function buildConfig(registry, options = {}) {
|
|
349
|
+
const { theme } = options;
|
|
350
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
351
|
+
registry.forEach((entry) => {
|
|
352
|
+
byKey.set(entry.key, entry);
|
|
353
|
+
});
|
|
354
|
+
const components = {};
|
|
355
|
+
const categoryMap = {};
|
|
356
|
+
byKey.forEach((entry, key) => {
|
|
357
|
+
const { fields, defaultProps, component: Component } = entry;
|
|
358
|
+
components[key] = {
|
|
359
|
+
label: entry.label ?? key,
|
|
360
|
+
fields,
|
|
361
|
+
defaultProps,
|
|
362
|
+
...entry.permissions && { permissions: entry.permissions },
|
|
363
|
+
render: blockRender(key, Component)
|
|
364
|
+
};
|
|
365
|
+
const category = entry.category ?? "other";
|
|
366
|
+
if (!categoryMap[category]) categoryMap[category] = [];
|
|
367
|
+
categoryMap[category].push(key);
|
|
368
|
+
});
|
|
369
|
+
const categories = {};
|
|
370
|
+
Object.keys(categoryMap).forEach((name) => {
|
|
371
|
+
categories[name] = { components: categoryMap[name] };
|
|
372
|
+
});
|
|
373
|
+
const root = {
|
|
374
|
+
label: "P\xE1gina",
|
|
375
|
+
fields: {
|
|
376
|
+
placeholder: {
|
|
377
|
+
type: "custom",
|
|
378
|
+
render: () => react.createElement(PanelPlaceholder, null, "Selecione um bloco para editar suas propriedades.")
|
|
379
|
+
}
|
|
380
|
+
},
|
|
381
|
+
render: theme ? fallbackPage(theme) : DocumentPage
|
|
382
|
+
};
|
|
383
|
+
return { root, components, categories };
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
exports.DEFAULT_DOCUMENT_COLORS = DEFAULT_DOCUMENT_COLORS;
|
|
387
|
+
exports.DEFAULT_DOCUMENT_FONT = DEFAULT_DOCUMENT_FONT;
|
|
388
|
+
exports.DEFAULT_PAGE_MARGINS = DEFAULT_PAGE_MARGINS;
|
|
389
|
+
exports.DOCUMENT_FONTS = DOCUMENT_FONTS;
|
|
390
|
+
exports.DocumentPage = DocumentPage;
|
|
391
|
+
exports.DocumentThemeProvider = DocumentThemeProvider;
|
|
392
|
+
exports.DrawerCard = DrawerCard;
|
|
393
|
+
exports.DrawerHint = DrawerHint;
|
|
394
|
+
exports.DrawerItemIcon = DrawerItemIcon;
|
|
395
|
+
exports.EditorShell = EditorShell;
|
|
396
|
+
exports.FONT_WEIGHT = FONT_WEIGHT;
|
|
397
|
+
exports.PageFrame = PageFrame;
|
|
398
|
+
exports.appearanceToStyle = appearanceToStyle;
|
|
399
|
+
exports.buildConfig = buildConfig;
|
|
400
|
+
exports.fontStack = fontStack;
|
|
401
|
+
exports.gfontHref = gfontHref;
|
|
402
|
+
exports.marginsToPadding = marginsToPadding;
|
|
403
|
+
exports.pageWidthPx = pageWidthPx;
|
|
404
|
+
exports.useDocumentFont = useDocumentFont;
|
|
405
|
+
exports.useDocumentTheme = useDocumentTheme;
|
|
406
|
+
//# sourceMappingURL=chunk-ERKU5FDV.cjs.map
|
|
407
|
+
//# sourceMappingURL=chunk-ERKU5FDV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/surface/surface.tsx","../src/surface/fonts.ts","../src/surface/themeContext.tsx","../src/surface/DocumentPage.tsx","../src/surface/appearance.ts","../src/surface/useDocumentFont.ts","../src/surface/BlockShell.tsx","../src/core/buildConfig.ts"],"names":["styled","createContext","useContext","jsx","useEffect","createElement"],"mappings":"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","file":"chunk-ERKU5FDV.cjs","sourcesContent":["import styled from 'styled-components';\n\nexport const DEFAULT_DOCUMENT_FONT =\n \"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif\";\n\nexport const DEFAULT_DOCUMENT_COLORS = {\n brand: '#005AC3',\n text: '#3F4759',\n background: '#FFFFFF'\n} as const;\n\nexport type PageFormat = 'A4' | 'A5' | 'A3' | 'Letter' | 'Legal';\nexport type PageMargins = { top?: number; right?: number; bottom?: number; left?: number };\nexport type PageOptions = { format?: PageFormat; margins?: PageMargins };\n\nconst PAGE_WIDTH_PX: Record<PageFormat, number> = {\n A4: 794,\n A5: 559,\n A3: 1123,\n Letter: 816,\n Legal: 816\n};\n\nexport const DEFAULT_PAGE_MARGINS: Required<PageMargins> = { top: 24, right: 24, bottom: 24, left: 24 };\n\nexport function pageWidthPx(format: PageFormat = 'A4'): number {\n return PAGE_WIDTH_PX[format];\n}\n\nexport function marginsToPadding(margins?: PageMargins): string {\n const m = { ...DEFAULT_PAGE_MARGINS, ...margins };\n return `${m.top}px ${m.right}px ${m.bottom}px ${m.left}px`;\n}\n\n/** A página do documento — compartilhada pelo editor, viewer e PDF via `root` do Puck. */\nexport const PageFrame = styled.div<{\n $width: number;\n $padding: string;\n $font: string;\n $brand: string;\n $text: string;\n $bg: string;\n $padTop?: number;\n $padRight?: number;\n $padLeft?: number;\n 'data-docgen-root'?: string;\n}>`\n --doc-brand: ${props => props.$brand};\n --doc-text: ${props => props.$text};\n --doc-bg: ${props => props.$bg};\n font-family: ${props => props.$font};\n width: ${props => props.$width}px;\n max-width: 100%;\n min-height: 100%;\n margin: 0 auto;\n padding: ${props => props.$padding};\n background: var(--doc-bg);\n color: var(--doc-text);\n box-sizing: border-box;\n\n &,\n & *,\n & *::before,\n & *::after {\n box-sizing: border-box;\n }\n\n & [data-docgen-block] {\n margin-bottom: 16px;\n }\n\n /* A capa é full-bleed (no preview/PDF ela sai do PageFrame via hoist). No editor\n ela renderiza em fluxo dentro do padding da folha — neutralizamos esse padding\n só pra ela, pra bater com o preview. O bleed vai no wrapper do Puck\n ([data-puck-component]) e não no bloco interno, senão a borda de seleção do Puck\n (desenhada no wrapper) fica inset. No PDF/viewer esse seletor nem existe (hoist). */\n & [data-puck-component]:has([data-docgen-block='Cover']) {\n margin-top: ${props => -(props.$padTop ?? 0)}px;\n margin-left: ${props => -(props.$padLeft ?? 0)}px;\n margin-right: ${props => -(props.$padRight ?? 0)}px;\n width: calc(100% + ${props => (props.$padLeft ?? 0) + (props.$padRight ?? 0)}px);\n }\n`;\n\n/** Chrome do editor: mesa cinza + folha com sombra (só editor). Porquês: docs/architecture.md. */\nexport const EditorShell = styled.div`\n height: 100%;\n\n li[data-puck-layer-tree-id] button > div,\n li[data-puck-layer-tree-id] button > div > div {\n overflow: hidden;\n }\n\n #puck-canvas-root,\n [class*='_PuckCanvas_'] {\n background: #e8e9eb;\n outline: none;\n }\n\n [class*='_PuckCanvas_'][class*='_PuckCanvas_'][class*='_PuckCanvas_'] {\n padding: 0;\n }\n\n #preview-frame {\n display: flex;\n flex-direction: column;\n align-items: center;\n box-sizing: border-box;\n min-height: 100%;\n padding: 32px 16px;\n }\n\n #preview-frame > * {\n flex: 1 0 auto;\n min-height: 0;\n box-shadow: 0 1px 4px rgba(15, 23, 42, 0.14);\n }\n`;\n\n/** Card custom do item no palette (substitui o item padrão do Puck): ícone + nome. */\nexport const DrawerCard = styled.div<{ $disabled?: boolean }>`\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 11px 12px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n background: #fff;\n cursor: grab;\n font-size: 14px;\n color: #1f2937;\n\n &:hover {\n background: #f3f6fb;\n border-color: #c3c9d2;\n }\n\n ${props =>\n props.$disabled &&\n `\n opacity: 0.45;\n cursor: not-allowed;\n\n &:hover {\n background: #fff;\n border-color: #e5e7eb;\n }\n `}\n`;\n\n/**\n * Tooltip imediato para o card desabilitado do palette (o title nativo demora ~1s).\n * Os seletores de hover repetem `[data-hint]:not([data-hint=''])` para empatar a\n * especificidade da regra base — `&:hover::after` sozinho perde e o tooltip nunca aparece.\n */\nexport const DrawerHint = styled.div`\n position: relative;\n\n &[data-hint]:not([data-hint=''])::after {\n content: attr(data-hint);\n position: absolute;\n left: 50%;\n top: calc(100% + 6px);\n transform: translateX(-50%) translateY(-2px);\n width: max-content;\n max-width: 220px;\n padding: 6px 10px;\n background: #1f2937;\n color: #fff;\n font-size: 12px;\n line-height: 1.35;\n text-align: center;\n border-radius: 6px;\n opacity: 0;\n pointer-events: none;\n transition:\n opacity 0.12s ease,\n transform 0.12s ease;\n z-index: 20;\n }\n\n &[data-hint]:not([data-hint=''])::before {\n content: '';\n position: absolute;\n left: 50%;\n top: calc(100% + 1px);\n transform: translateX(-50%);\n border: 5px solid transparent;\n border-bottom-color: #1f2937;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.12s ease;\n z-index: 20;\n }\n\n &[data-hint]:not([data-hint='']):hover::after,\n &[data-hint]:not([data-hint='']):hover::before {\n opacity: 1;\n transform: translateX(-50%) translateY(0);\n }\n\n &[data-hint]:not([data-hint='']):hover::before {\n transform: translateX(-50%);\n }\n`;\n\n/** Mensagem do painel de propriedades quando nenhum bloco está selecionado. */\nexport const PanelPlaceholder = styled.div`\n padding: 24px 12px;\n color: #6b7280;\n font-size: 13px;\n line-height: 1.5;\n text-align: center;\n`;\n\nexport const DrawerItemIcon = styled.span`\n display: flex;\n flex-shrink: 0;\n align-items: center;\n color: #6b7280;\n`;\n","import { DEFAULT_DOCUMENT_FONT } from './surface';\n\nexport type DocumentFont = {\n id: string;\n label: string;\n stack: string;\n /** Família no Google Fonts; ausente = fonte de sistema (nada a carregar). */\n gfont?: string;\n};\n\nexport const DOCUMENT_FONTS: readonly DocumentFont[] = [\n { id: 'inter', label: 'Inter', stack: \"'Inter', sans-serif\", gfont: 'Inter:wght@400;500;600;700' },\n { id: 'arial', label: 'Arial', stack: 'Arial, Helvetica, sans-serif' },\n { id: 'calibri', label: 'Calibri', stack: \"Calibri, Carlito, 'Segoe UI', sans-serif\" },\n { id: 'times-new-roman', label: 'Times New Roman', stack: \"'Times New Roman', Times, serif\" },\n { id: 'roboto', label: 'Roboto', stack: \"'Roboto', sans-serif\", gfont: 'Roboto:wght@400;500;700' },\n { id: 'open-sans', label: 'Open Sans', stack: \"'Open Sans', sans-serif\", gfont: 'Open+Sans:wght@400;500;600;700' },\n {\n id: 'montserrat',\n label: 'Montserrat',\n stack: \"'Montserrat', sans-serif\",\n gfont: 'Montserrat:wght@400;500;600;700'\n },\n { id: 'lato', label: 'Lato', stack: \"'Lato', sans-serif\", gfont: 'Lato:wght@400;700' },\n { id: 'georgia', label: 'Georgia', stack: \"Georgia, 'Times New Roman', serif\" },\n { id: 'helvetica', label: 'Helvetica', stack: \"'Helvetica Neue', Helvetica, Arial, sans-serif\" }\n] as const;\n\nconst byId = new Map(DOCUMENT_FONTS.map(f => [f.id, f]));\n\nconst primaryFamily = (stack: string): string =>\n stack\n .split(',')[0]\n .trim()\n .replace(/^['\"]|['\"]$/g, '');\n\n/**\n * Fontes do Google ganham um alias próprio (`<Família> Doc`) no topo do stack: o app\n * hospedeiro pode ter um @font-face com o mesmo nome apontando pra outros arquivos\n * (ex.: Inter estática do FBO), e o alias garante que o documento use os arquivos do\n * Google nos dois lados — no editor via useDocumentFont (CSS reescrito) e no artifact\n * o alias não resolve e cai na família original do <link> (mesmos arquivos).\n */\nexport function docFontFamilies(id?: string): { primary: string; alias: string } | null {\n const font = id ? byId.get(id) : undefined;\n if (!font?.gfont) return null;\n const primary = primaryFamily(font.stack);\n return { primary, alias: `${primary} Doc` };\n}\n\nexport function fontStack(id?: string): string {\n const font = id ? byId.get(id) : undefined;\n if (!font) return DEFAULT_DOCUMENT_FONT;\n const families = docFontFamilies(id);\n return families ? `'${families.alias}', ${font.stack}` : font.stack;\n}\n\nexport function gfontHref(id?: string): string | null {\n const font = id ? byId.get(id) : undefined;\n if (!font?.gfont) return null;\n return `https://fonts.googleapis.com/css2?family=${font.gfont}&display=swap`;\n}\n","import { createContext, useContext, type ReactNode } from 'react';\nimport type { Theme } from '../schema/theme';\n\nconst EMPTY_THEME: Theme = {};\n\n/** `null` distingue \"sem provider\" de \"provider com tema vazio\" — ver DocumentPage. */\nconst DocumentThemeContext = createContext<Theme | null>(null);\n\nexport type DocumentThemeProviderProps = {\n theme?: Theme;\n children?: ReactNode;\n};\n\n/**\n * Publica o tema do documento na árvore. Montado por `DocumentEditor` e\n * `DocumentRenderer` — é o canal que mantém o `Config` do Puck estável quando o\n * tema muda (ver docs/theme.md).\n */\nexport function DocumentThemeProvider({ theme, children }: DocumentThemeProviderProps) {\n return <DocumentThemeContext.Provider value={theme ?? EMPTY_THEME}>{children}</DocumentThemeContext.Provider>;\n}\n\n/** Tema do documento; `{}` quando não há provider acima. */\nexport function useDocumentTheme(): Theme {\n return useContext(DocumentThemeContext) ?? EMPTY_THEME;\n}\n\n/** Igual ao `useDocumentTheme`, mas devolve `null` sem provider (uso interno). */\nexport function useOptionalDocumentTheme(): Theme | null {\n return useContext(DocumentThemeContext);\n}\n","import type { ReactNode } from 'react';\nimport type { Theme } from '../schema/theme';\nimport { DEFAULT_DOCUMENT_COLORS, DEFAULT_PAGE_MARGINS, PageFrame, marginsToPadding, pageWidthPx } from './surface';\nimport { fontStack } from './fonts';\nimport { useOptionalDocumentTheme } from './themeContext';\n\nexport type DocumentPageProps = {\n children?: ReactNode;\n /** Usado só quando não há `DocumentThemeProvider` acima (ver `BuildConfigOptions.theme`). */\n fallbackTheme?: Theme;\n};\n\n/**\n * `root.render` do Puck: a folha do documento (largura, margens, fonte e CSS vars\n * de cor). Lê o tema do contexto em vez de recebê-lo por closure — assim o\n * componente tem identidade estável e trocar de tema não remonta os blocos.\n */\nexport function DocumentPage({ children, fallbackTheme }: DocumentPageProps) {\n const theme = useOptionalDocumentTheme() ?? fallbackTheme ?? {};\n const margins = { ...DEFAULT_PAGE_MARGINS, ...(theme.page?.margins ?? {}) };\n const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors };\n\n return (\n <PageFrame\n data-docgen-root=\"\"\n $width={pageWidthPx(theme.page?.format)}\n $padding={marginsToPadding(theme.page?.margins)}\n $padTop={margins.top}\n $padRight={margins.right}\n $padLeft={margins.left}\n $font={fontStack(theme.documentFont)}\n $brand={colors.brand}\n $text={colors.text}\n $bg={colors.background}\n >\n {children}\n </PageFrame>\n );\n}\n","import type { CSSProperties } from 'react';\nimport type { Appearance } from '../schema/appearance';\nimport { fontStack } from './fonts';\n\nexport const FONT_WEIGHT: Record<string, number> = { normal: 400, medium: 500, bold: 700 };\n\n/** Sobrescrita por bloco → estilo do wrapper (cores viram CSS vars locais; não-set herda o tema). */\nexport function appearanceToStyle(a?: Appearance): CSSProperties {\n const style: Record<string, string | number> = {};\n if (!a) return style;\n if (a.brand !== undefined) style['--doc-brand'] = a.brand;\n if (a.text !== undefined) {\n style['--doc-text'] = a.text;\n style.color = a.text;\n }\n if (a.background !== undefined) style.background = a.background;\n if (a.fontSize !== undefined) style.fontSize = a.fontSize;\n if (a.fontFamily !== undefined) style.fontFamily = fontStack(a.fontFamily);\n if (a.fontWeight !== undefined) style.fontWeight = FONT_WEIGHT[a.fontWeight];\n if (a.textAlign !== undefined) style.textAlign = a.textAlign;\n return style as CSSProperties;\n}\n","import { useEffect } from 'react';\nimport { docFontFamilies, gfontHref } from './fonts';\n\n/**\n * Carrega a fonte do documento no app hospedeiro. O CSS do Google é baixado e\n * reescrito pra família alias (`<Família> Doc`, ver docFontFamilies) — assim o\n * canvas do editor usa os MESMOS arquivos do preview mesmo quando o app já tem\n * um @font-face com o nome original. Se o fetch falhar, cai pro <link> direto\n * (família original — comportamento antigo).\n */\nexport function useDocumentFont(id?: string): void {\n useEffect(() => {\n const href = gfontHref(id);\n if (!href || typeof document === 'undefined') return undefined;\n\n const selector = `[data-docgen-font=\"${id}\"]`;\n if (document.head.querySelector(selector)) return undefined;\n\n if (typeof fetch === 'undefined') {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-docgen-font', id as string);\n document.head.appendChild(link);\n return undefined;\n }\n\n const families = docFontFamilies(id);\n const style = document.createElement('style');\n style.setAttribute('data-docgen-font', id as string);\n document.head.appendChild(style);\n\n fetch(href)\n .then(res => {\n if (!res.ok) throw new Error(`gfont css ${res.status}`);\n return res.text();\n })\n .then(css => {\n style.textContent = families\n ? css.split(`font-family: '${families.primary}'`).join(`font-family: '${families.alias}'`)\n : css;\n })\n .catch(() => {\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = href;\n link.setAttribute('data-docgen-font', id as string);\n style.replaceWith(link);\n });\n return undefined;\n }, [id]);\n}\n","import type { ReactNode } from 'react';\nimport type { Appearance } from '../schema/appearance';\nimport { appearanceToStyle } from './appearance';\nimport { useDocumentFont } from './useDocumentFont';\n\nexport type BlockShellProps = {\n blockKey: string;\n appearance?: Appearance;\n children?: ReactNode;\n};\n\n/** Wrapper de todo bloco: aplica a aparência local e carrega a Google Font do bloco. */\nexport function BlockShell({ blockKey, appearance, children }: BlockShellProps) {\n useDocumentFont(appearance?.fontFamily);\n\n return (\n <div data-docgen-block={blockKey} style={appearanceToStyle(appearance)}>\n {children}\n </div>\n );\n}\n","import { createElement, type ComponentType } from 'react';\nimport type { ComponentConfig, Config } from '@puckeditor/core';\nimport type { BlockEntry, Registry } from '../blocks/types';\nimport { PanelPlaceholder } from '../surface/surface';\nimport { DocumentPage, type DocumentPageProps } from '../surface/DocumentPage';\nimport type { Theme } from '../schema/theme';\nimport { BlockShell } from '../surface/BlockShell';\n\nexport type BuildConfigOptions = {\n /**\n * Tema aplicado apenas quando NÃO há `DocumentThemeProvider` acima (uso avulso\n * de `buildConfig` + `<Render>`). No editor e no renderer o tema vem do provider:\n * passá-lo aqui troca a identidade de `root.render` a cada mudança e o Puck\n * remonta a árvore inteira. Ver docs/theme.md.\n */\n theme?: Theme;\n};\n\n/**\n * O Puck monta `componentConfig.render` como TIPO de elemento\n * (`<Component {...props}/>`), então uma closure nova por build desmonta e remonta\n * o bloco inteiro — perdendo foco, seleção e estado de editores embutidos. O cache\n * abaixo dá identidade estável por (componente, key). Ver docs/architecture.md.\n */\nconst blockRenderCache = new WeakMap<ComponentType<any>, Map<string, ComponentType<any>>>();\n\nfunction blockRender(key: string, Component: ComponentType<any>): ComponentType<any> {\n let byKey = blockRenderCache.get(Component);\n if (!byKey) {\n byKey = new Map();\n blockRenderCache.set(Component, byKey);\n }\n\n const cached = byKey.get(key);\n if (cached) return cached;\n\n function Block(props: any) {\n return createElement(BlockShell, { blockKey: key, appearance: props.appearance }, createElement(Component, props));\n }\n Block.displayName = `DocumentBlock(${key})`;\n byKey.set(key, Block);\n return Block;\n}\n\nconst fallbackPageCache = new WeakMap<Theme, ComponentType<any>>();\n\nfunction fallbackPage(theme: Theme): ComponentType<any> {\n const cached = fallbackPageCache.get(theme);\n if (cached) return cached;\n\n function Page(props: DocumentPageProps) {\n return createElement(DocumentPage, { ...props, fallbackTheme: theme });\n }\n Page.displayName = 'DocumentPage(fallback)';\n fallbackPageCache.set(theme, Page);\n return Page;\n}\n\n/**\n * Registry → Puck `Config` (mesmo config no editor, viewer e PDF). Replace-by-key;\n * `root.render` embrulha tudo no PageFrame do documento, que lê o tema do contexto.\n */\nexport function buildConfig(registry: Registry, options: BuildConfigOptions = {}): Config {\n const { theme } = options;\n\n const byKey = new Map<string, BlockEntry>();\n registry.forEach(entry => {\n byKey.set(entry.key, entry);\n });\n\n const components: Record<string, ComponentConfig<any>> = {};\n const categoryMap: Record<string, string[]> = {};\n\n byKey.forEach((entry, key) => {\n const { fields, defaultProps, component: Component } = entry;\n\n components[key] = {\n label: entry.label ?? key,\n fields,\n defaultProps,\n ...(entry.permissions && { permissions: entry.permissions }),\n render: blockRender(key, Component as ComponentType<any>)\n } as ComponentConfig<any>;\n\n const category = entry.category ?? 'other';\n if (!categoryMap[category]) categoryMap[category] = [];\n categoryMap[category].push(key);\n });\n\n const categories: NonNullable<Config['categories']> = {};\n Object.keys(categoryMap).forEach(name => {\n categories[name] = { components: categoryMap[name] };\n });\n\n const root: Config['root'] = {\n label: 'Página',\n fields: {\n placeholder: {\n type: 'custom',\n render: () => createElement(PanelPlaceholder, null, 'Selecione um bloco para editar suas propriedades.')\n }\n },\n render: (theme ? fallbackPage(theme) : DocumentPage) as NonNullable<Config['root']>['render']\n };\n\n return { root, components, categories } as Config;\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@puckeditor/core');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "ActionBar", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return core.ActionBar; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, "Puck", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return core.Puck; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "Render", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return core.Render; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "createUsePuck", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return core.createUsePuck; }
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, "registerOverlayPortal", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return core.registerOverlayPortal; }
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, "useGetPuck", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () { return core.useGetPuck; }
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "usePuck", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return core.usePuck; }
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=chunk-FKX46GKE.cjs.map
|
|
36
|
+
//# sourceMappingURL=chunk-FKX46GKE.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-FKX46GKE.cjs","sourcesContent":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-GVBGVF6Y.js","sourcesContent":[]}
|