vobi_document 1.1.0 → 1.1.1
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/blocks.cjs +33 -25
- package/dist/blocks.d.cts +14 -1
- package/dist/blocks.d.ts +14 -1
- package/dist/blocks.js +3 -3
- package/dist/{chunk-U56KVTK5.cjs → chunk-26DSIOEY.cjs} +8 -8
- package/dist/{chunk-U56KVTK5.cjs.map → chunk-26DSIOEY.cjs.map} +1 -1
- package/dist/{chunk-X2BLERM5.cjs → chunk-3FTKM37U.cjs} +24 -16
- package/dist/chunk-3FTKM37U.cjs.map +1 -0
- package/dist/{chunk-2EBYURIX.js → chunk-CZB7F2LA.js} +3 -3
- package/dist/{chunk-2EBYURIX.js.map → chunk-CZB7F2LA.js.map} +1 -1
- package/dist/{chunk-AQ5FAAP6.cjs → chunk-GR76U6FP.cjs} +37 -11
- package/dist/chunk-GR76U6FP.cjs.map +1 -0
- package/dist/{chunk-KUB3TYG2.cjs → chunk-I22MGPXO.cjs} +22 -7
- package/dist/chunk-I22MGPXO.cjs.map +1 -0
- package/dist/{chunk-HMTCQOEV.js → chunk-JYSA6IM5.js} +22 -14
- package/dist/chunk-JYSA6IM5.js.map +1 -0
- package/dist/{chunk-6GRYRVU5.js → chunk-M6FQVH76.js} +4 -4
- package/dist/{chunk-6GRYRVU5.js.map → chunk-M6FQVH76.js.map} +1 -1
- package/dist/{chunk-JEVWEGSE.js → chunk-MUSSJOOA.js} +21 -7
- package/dist/chunk-MUSSJOOA.js.map +1 -0
- package/dist/{chunk-ABIEQHS2.js → chunk-N3IDPT3B.js} +31 -8
- package/dist/chunk-N3IDPT3B.js.map +1 -0
- package/dist/{chunk-IUDN2CGP.js → chunk-OJZJJEJX.js} +73 -32
- package/dist/chunk-OJZJJEJX.js.map +1 -0
- package/dist/{chunk-ZXWOZZXO.cjs → chunk-QJ5W5EED.cjs} +4 -4
- package/dist/{chunk-ZXWOZZXO.cjs.map → chunk-QJ5W5EED.cjs.map} +1 -1
- package/dist/{chunk-NDHTMYPA.cjs → chunk-RO3Y2MSU.cjs} +7 -7
- package/dist/{chunk-NDHTMYPA.cjs.map → chunk-RO3Y2MSU.cjs.map} +1 -1
- package/dist/{chunk-MHTTFNK2.cjs → chunk-RZOR3HOA.cjs} +80 -37
- package/dist/chunk-RZOR3HOA.cjs.map +1 -0
- package/dist/{chunk-M2TPAU2F.js → chunk-SOIYSSU3.js} +32 -3
- package/dist/chunk-SOIYSSU3.js.map +1 -0
- package/dist/{chunk-IRFFN74K.cjs → chunk-SP5LCPDG.cjs} +32 -2
- package/dist/chunk-SP5LCPDG.cjs.map +1 -0
- package/dist/{chunk-KCZKC3OG.js → chunk-W52ULJCW.js} +3 -3
- package/dist/{chunk-KCZKC3OG.js.map → chunk-W52ULJCW.js.map} +1 -1
- package/dist/editor.cjs +15 -15
- package/dist/editor.js +3 -3
- package/dist/index.cjs +114 -90
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -11
- package/dist/print.cjs +13 -13
- package/dist/print.js +4 -4
- package/dist/render.cjs +19 -19
- package/dist/render.js +4 -4
- package/dist/variables.cjs +41 -25
- package/dist/variables.d.cts +34 -2
- package/dist/variables.d.ts +34 -2
- package/dist/variables.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-ABIEQHS2.js.map +0 -1
- package/dist/chunk-AQ5FAAP6.cjs.map +0 -1
- package/dist/chunk-HMTCQOEV.js.map +0 -1
- package/dist/chunk-IRFFN74K.cjs.map +0 -1
- package/dist/chunk-IUDN2CGP.js.map +0 -1
- package/dist/chunk-JEVWEGSE.js.map +0 -1
- package/dist/chunk-KUB3TYG2.cjs.map +0 -1
- package/dist/chunk-M2TPAU2F.js.map +0 -1
- package/dist/chunk-MHTTFNK2.cjs.map +0 -1
- package/dist/chunk-X2BLERM5.cjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TextIcon, HeadingIcon, ListIcon, QuoteIcon, ButtonIcon, DividerIcon, SpacerIcon, ImageIcon, ImageGridIcon, TwoColumnsIcon, ImageTextIcon, IconTextIcon, TableIcon, PageBreakIcon } from './chunk-QYBWIJXZ.js';
|
|
2
2
|
import { devWarn } from './chunk-ZOJBDFKU.js';
|
|
3
|
-
import { CHIP_CLASS, INVALID_CHIP_CLASS, resolveVariableHtml } from './chunk-
|
|
4
|
-
import { useResolvedVariables, useCatalog, useUnresolvedDisplay } from './chunk-
|
|
3
|
+
import { CHIP_CLASS, INVALID_CHIP_CLASS, EMPTY_CHIP_CLASS, resolveVariableHtml } from './chunk-MUSSJOOA.js';
|
|
4
|
+
import { useResolvedVariables, useCatalog, useUnresolvedDisplay } from './chunk-SOIYSSU3.js';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import styled4 from 'styled-components';
|
|
7
7
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -10,49 +10,90 @@ import { jsx, jsxs } from 'react/jsx-runtime';
|
|
|
10
10
|
function defineBlock(entry) {
|
|
11
11
|
return entry;
|
|
12
12
|
}
|
|
13
|
-
var Prose = styled4.div`
|
|
14
|
-
> :first-child {
|
|
15
|
-
margin-top: 0;
|
|
16
|
-
}
|
|
17
|
-
> :last-child {
|
|
18
|
-
margin-bottom: 0;
|
|
19
|
-
}
|
|
20
13
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
// src/blocks/primitives/proseCss.ts
|
|
15
|
+
var DOCUMENT_TEXT_CSS = `font-size: 16px;
|
|
16
|
+
line-height: 1.5;
|
|
17
|
+
overflow-wrap: break-word;
|
|
18
|
+
word-break: break-word;`;
|
|
19
|
+
var DOCUMENT_PROSE_CSS = `p {
|
|
20
|
+
margin: 0 0 8px;
|
|
21
|
+
}
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
line-height: 1.25;
|
|
33
|
-
}
|
|
23
|
+
h1, h2, h3, h4, h5, h6 {
|
|
24
|
+
margin: 0 0 8px;
|
|
25
|
+
line-height: 1.25;
|
|
26
|
+
font-weight: 600;
|
|
27
|
+
}
|
|
34
28
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
h1 { font-size: 2em; }
|
|
30
|
+
h2 { font-size: 1.5em; }
|
|
31
|
+
h3 { font-size: 1.25em; }
|
|
32
|
+
h4 { font-size: 1.125em; }
|
|
33
|
+
h5 { font-size: 1em; }
|
|
34
|
+
h6 { font-size: 0.875em; }
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
ul, ol {
|
|
37
|
+
margin: 0 0 8px;
|
|
38
|
+
padding-left: 24px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
ul { list-style: disc; }
|
|
42
|
+
ol { list-style: decimal; }
|
|
43
|
+
|
|
44
|
+
li { margin: 0 0 4px; }
|
|
45
|
+
|
|
46
|
+
strong, b { font-weight: 600; }
|
|
47
|
+
em, i { font-style: italic; }
|
|
48
|
+
|
|
49
|
+
a { color: var(--doc-brand, #005ac3); }
|
|
50
|
+
|
|
51
|
+
img { max-width: 100%; }
|
|
52
|
+
|
|
53
|
+
/* O chip herda peso, estilo e sublinhado do texto ao redor: pinar qualquer um deles faz
|
|
54
|
+
negrito/italico/sublinhado nao pegarem na variavel. Inline (e nao inline-block) porque
|
|
55
|
+
text-decoration nao atravessa um inline-block. */
|
|
56
|
+
.dg-var {
|
|
57
|
+
display: inline;
|
|
58
|
+
font-size: 0.92em;
|
|
59
|
+
font-weight: inherit;
|
|
60
|
+
font-style: inherit;
|
|
61
|
+
white-space: nowrap;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Sem margem sobrando no fim do bloco. Seletores de elemento, e nao um combinador filho,
|
|
65
|
+
porque a mesma string tambem e usada no topo de uma folha, onde nao ha pai. */
|
|
66
|
+
p:last-child,
|
|
67
|
+
ul:last-child,
|
|
68
|
+
ol:last-child,
|
|
69
|
+
h1:last-child,
|
|
70
|
+
h2:last-child,
|
|
71
|
+
h3:last-child,
|
|
72
|
+
h4:last-child,
|
|
73
|
+
h5:last-child,
|
|
74
|
+
h6:last-child {
|
|
75
|
+
margin-bottom: 0;
|
|
76
|
+
}`;
|
|
77
|
+
var Prose = styled4.div`
|
|
78
|
+
${DOCUMENT_TEXT_CSS}
|
|
79
|
+
${DOCUMENT_PROSE_CSS}
|
|
42
80
|
|
|
43
81
|
.${CHIP_CLASS} {
|
|
44
82
|
padding: 1px 6px;
|
|
45
83
|
border-radius: 4px;
|
|
46
84
|
background: color-mix(in srgb, var(--doc-brand, #005ac3) 12%, transparent);
|
|
47
85
|
color: var(--doc-brand, #005ac3);
|
|
48
|
-
font-size: 0.94em;
|
|
49
|
-
white-space: nowrap;
|
|
50
86
|
}
|
|
51
87
|
|
|
52
88
|
.${INVALID_CHIP_CLASS} {
|
|
53
89
|
background: #fdecea;
|
|
54
90
|
color: #b4341b;
|
|
55
91
|
}
|
|
92
|
+
|
|
93
|
+
.${EMPTY_CHIP_CLASS} {
|
|
94
|
+
background: #f5e4b8;
|
|
95
|
+
color: #84620d;
|
|
96
|
+
}
|
|
56
97
|
`;
|
|
57
98
|
function RichText({ html = "", editing = false, as, className }) {
|
|
58
99
|
const resolved = useResolvedVariables();
|
|
@@ -858,6 +899,6 @@ function overrideBlock(key, patch = {}) {
|
|
|
858
899
|
return { ...base, key, ...patch };
|
|
859
900
|
}
|
|
860
901
|
|
|
861
|
-
export { ButtonBlock, CONTENT_ICON_CATALOG, CONTENT_ICON_NAMES, ContentIcon, DividerBlock, HeadingBlock, IconTextBlock, ImageBlock, ImageGridBlock, ImageTextBlock, ListBlock, PageBreakBlock, QuoteBlock, RichText, SpacerBlock, TableBlock, TextBlock, TwoColumnsBlock, blocksByKey, defaultBlocks, defineBlock, overrideBlock };
|
|
862
|
-
//# sourceMappingURL=chunk-
|
|
863
|
-
//# sourceMappingURL=chunk-
|
|
902
|
+
export { ButtonBlock, CONTENT_ICON_CATALOG, CONTENT_ICON_NAMES, ContentIcon, DOCUMENT_PROSE_CSS, DOCUMENT_TEXT_CSS, DividerBlock, HeadingBlock, IconTextBlock, ImageBlock, ImageGridBlock, ImageTextBlock, ListBlock, PageBreakBlock, QuoteBlock, RichText, SpacerBlock, TableBlock, TextBlock, TwoColumnsBlock, blocksByKey, defaultBlocks, defineBlock, overrideBlock };
|
|
903
|
+
//# sourceMappingURL=chunk-OJZJJEJX.js.map
|
|
904
|
+
//# sourceMappingURL=chunk-OJZJJEJX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/blocks/defineBlock.ts","../src/blocks/primitives/proseCss.ts","../src/blocks/primitives/RichText.tsx","../src/blocks/components/TextBlock.tsx","../src/blocks/components/HeadingBlock.tsx","../src/blocks/components/ListBlock.tsx","../src/blocks/components/QuoteBlock.tsx","../src/blocks/components/shared.tsx","../src/blocks/components/ButtonBlock.tsx","../src/blocks/components/DividerBlock.tsx","../src/blocks/components/SpacerBlock.tsx","../src/blocks/components/ImageBlock.tsx","../src/blocks/components/ImageGridBlock.tsx","../src/blocks/components/TwoColumnsBlock.tsx","../src/blocks/components/ImageTextBlock.tsx","../src/blocks/contentIcons.tsx","../src/blocks/components/IconTextBlock.tsx","../src/blocks/components/TableBlock.tsx","../src/blocks/components/PageBreakBlock.tsx","../src/blocks/defaults.tsx","../src/blocks/overrideBlock.ts"],"names":["styled","jsx","z","jsxs","slotSchema","Grid"],"mappings":"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","file":"chunk-OJZJJEJX.js","sourcesContent":["import type { BlockEntry } from './types';\n\n/** Helper tipado para declarar um bloco (`fields`/`defaultProps` alinhados às props). */\nexport function defineBlock<Props extends Record<string, unknown>>(entry: BlockEntry<Props>): BlockEntry<Props> {\n return entry;\n}\n","/**\n * Tipografia do texto rico do documento, em CSS cru para servir às três superfícies que\n * mostram o MESMO conteúdo: o editor inline (iframe do TinyMCE, documento à parte que não\n * recebe o CSS do app), o canvas do Puck e o HTML publicado. Antes cada uma caía num default\n * diferente (h1 de 48px no canvas, 28px no editor, 32px no publicado) — ver docs/blocks.md.\n *\n * Sem `&` e sem seletor de escopo: dentro de `styled` os seletores de elemento já viram\n * descendentes; no `content_style` do TinyMCE eles valem a partir do body.\n */\n\n/** Declarações da base do texto — vão no container (ou no `body`, no iframe). */\nexport const DOCUMENT_TEXT_CSS = `font-size: 16px;\nline-height: 1.5;\noverflow-wrap: break-word;\nword-break: break-word;`;\n\nexport const DOCUMENT_PROSE_CSS = `p {\n margin: 0 0 8px;\n}\n\nh1, h2, h3, h4, h5, h6 {\n margin: 0 0 8px;\n line-height: 1.25;\n font-weight: 600;\n}\n\nh1 { font-size: 2em; }\nh2 { font-size: 1.5em; }\nh3 { font-size: 1.25em; }\nh4 { font-size: 1.125em; }\nh5 { font-size: 1em; }\nh6 { font-size: 0.875em; }\n\nul, ol {\n margin: 0 0 8px;\n padding-left: 24px;\n}\n\nul { list-style: disc; }\nol { list-style: decimal; }\n\nli { margin: 0 0 4px; }\n\nstrong, b { font-weight: 600; }\nem, i { font-style: italic; }\n\na { color: var(--doc-brand, #005ac3); }\n\nimg { max-width: 100%; }\n\n/* O chip herda peso, estilo e sublinhado do texto ao redor: pinar qualquer um deles faz\n negrito/italico/sublinhado nao pegarem na variavel. Inline (e nao inline-block) porque\n text-decoration nao atravessa um inline-block. */\n.dg-var {\n display: inline;\n font-size: 0.92em;\n font-weight: inherit;\n font-style: inherit;\n white-space: nowrap;\n}\n\n/* Sem margem sobrando no fim do bloco. Seletores de elemento, e nao um combinador filho,\n porque a mesma string tambem e usada no topo de uma folha, onde nao ha pai. */\np:last-child,\nul:last-child,\nol:last-child,\nh1:last-child,\nh2:last-child,\nh3:last-child,\nh4:last-child,\nh5:last-child,\nh6:last-child {\n margin-bottom: 0;\n}`;\n","import type { ElementType } from 'react';\nimport styled from 'styled-components';\nimport { useCatalog } from '../../variables/catalogContext';\nimport { useResolvedVariables, useUnresolvedDisplay } from '../../variables/resolvedContext';\nimport { CHIP_CLASS, EMPTY_CHIP_CLASS, INVALID_CHIP_CLASS, resolveVariableHtml } from '../../variables/variableHtml';\nimport { DOCUMENT_PROSE_CSS, DOCUMENT_TEXT_CSS } from './proseCss';\n\nexport type RichTextProps = {\n html?: string;\n editing?: boolean;\n as?: ElementType;\n className?: string;\n};\n\nconst Prose = styled.div`\n ${DOCUMENT_TEXT_CSS}\n ${DOCUMENT_PROSE_CSS}\n\n .${CHIP_CLASS} {\n padding: 1px 6px;\n border-radius: 4px;\n background: color-mix(in srgb, var(--doc-brand, #005ac3) 12%, transparent);\n color: var(--doc-brand, #005ac3);\n }\n\n .${INVALID_CHIP_CLASS} {\n background: #fdecea;\n color: #b4341b;\n }\n\n .${EMPTY_CHIP_CLASS} {\n background: #f5e4b8;\n color: #84620d;\n }\n`;\n\nexport function RichText({ html = '', editing = false, as, className }: RichTextProps) {\n const resolved = useResolvedVariables();\n const catalog = useCatalog();\n const unresolved = useUnresolvedDisplay();\n\n return (\n <Prose\n as={as}\n className={className}\n dangerouslySetInnerHTML={{\n __html: resolveVariableHtml(html, resolved, { keepChip: editing, catalog, unresolved })\n }}\n />\n );\n}\n","import { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { TextIcon } from '../../editor/blockIcons';\nimport { RichText } from '../primitives/RichText';\n\nexport type TextBlockProps = {\n content: string;\n puck?: { isEditing?: boolean };\n};\n\nexport const TextBlock = defineBlock<TextBlockProps>({\n key: 'Text',\n label: 'Texto',\n category: 'Conteúdo',\n icon: <TextIcon />,\n fields: {\n content: { type: 'textarea', label: 'Conteúdo (HTML)' }\n },\n propsSchema: z.object({ content: z.string() }),\n defaultProps: { content: '<p>Escreva o texto do documento aqui.</p>' },\n component: ({ content, puck }) => <RichText html={content} editing={puck?.isEditing} />\n});\n","import { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { HeadingIcon } from '../../editor/blockIcons';\nimport { RichText } from '../primitives/RichText';\n\nexport type HeadingBlockProps = {\n text: string;\n level: 1 | 2 | 3 | 4;\n puck?: { isEditing?: boolean };\n};\n\nexport const HeadingBlock = defineBlock<HeadingBlockProps>({\n key: 'Heading',\n label: 'Título',\n category: 'Conteúdo',\n icon: <HeadingIcon />,\n fields: {\n text: { type: 'text', label: 'Título' },\n level: {\n type: 'select',\n label: 'Nível',\n options: [\n { label: 'Título 1', value: 1 },\n { label: 'Título 2', value: 2 },\n { label: 'Título 3', value: 3 },\n { label: 'Título 4', value: 4 }\n ]\n }\n },\n propsSchema: z.object({ text: z.string(), level: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]) }),\n defaultProps: { text: 'Título da seção', level: 2 },\n component: ({ text, level, puck }) => <RichText as={`h${level ?? 2}`} html={text} editing={puck?.isEditing} />\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { ListIcon } from '../../editor/blockIcons';\nimport { RichText } from '../primitives/RichText';\n\nexport type ListItem = { text: string };\n\nexport type ListBlockProps = {\n items: ListItem[];\n ordered: boolean;\n puck?: { isEditing?: boolean };\n};\n\nconst List = styled.ul`\n margin: 0;\n padding-left: 22px;\n\n li {\n margin-bottom: 4px;\n }\n li::marker {\n color: var(--doc-brand, #005ac3);\n }\n`;\n\nexport const ListBlock = defineBlock<ListBlockProps>({\n key: 'List',\n label: 'Lista',\n category: 'Conteúdo',\n icon: <ListIcon />,\n fields: {\n ordered: {\n type: 'radio',\n label: 'Marcador',\n options: [\n { label: 'Bolinha', value: false },\n { label: 'Numerada', value: true }\n ]\n },\n items: {\n type: 'array',\n label: 'Itens',\n getItemSummary: (item: ListItem, index) => item?.text || `Item ${(index ?? 0) + 1}`,\n arrayFields: { text: { type: 'text', label: 'Texto' } },\n defaultItemProps: { text: 'Novo item' }\n }\n },\n propsSchema: z.object({ items: z.array(z.object({ text: z.string() })), ordered: z.boolean() }),\n defaultProps: {\n ordered: false,\n items: [{ text: 'Primeiro item' }, { text: 'Segundo item' }]\n },\n component: ({ items = [], ordered, puck }) => (\n <List as={ordered ? 'ol' : 'ul'}>\n {items.map((item, index) => (\n // eslint-disable-next-line react/no-array-index-key -- o item não tem id próprio; a ordem é a identidade\n <li key={index}>\n <RichText as=\"span\" html={item?.text} editing={puck?.isEditing} />\n </li>\n ))}\n </List>\n )\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { QuoteIcon } from '../../editor/blockIcons';\nimport { RichText } from '../primitives/RichText';\n\nexport type QuoteBlockProps = {\n content: string;\n author?: string;\n puck?: { isEditing?: boolean };\n};\n\nconst Callout = styled.blockquote`\n margin: 0;\n padding: 12px 0 12px 16px;\n border-left: 3px solid var(--doc-brand, #005ac3);\n`;\n\nconst Author = styled.footer`\n margin-top: 6px;\n font-size: 0.9em;\n opacity: 0.75;\n`;\n\nexport const QuoteBlock = defineBlock<QuoteBlockProps>({\n key: 'Quote',\n label: 'Destaque',\n category: 'Conteúdo',\n icon: <QuoteIcon />,\n fields: {\n content: { type: 'textarea', label: 'Texto (HTML)' },\n author: { type: 'text', label: 'Autor (opcional)' }\n },\n propsSchema: z.object({ content: z.string(), author: z.string().optional() }),\n defaultProps: { content: '<p>Texto em destaque.</p>', author: '' },\n component: ({ content, author, puck }) => (\n <Callout>\n <RichText html={content} editing={puck?.isEditing} />\n {author ? <Author>{author}</Author> : null}\n </Callout>\n )\n});\n","import type { ReactNode } from 'react';\nimport styled from 'styled-components';\n\nexport const SIZE_WIDTH: Record<string, string> = { small: '33%', medium: '66%', large: '100%' };\n\nexport const GAP_PX: Record<string, number> = { none: 0, small: 8, medium: 16, large: 24 };\n\nexport const Placeholder = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 64px;\n padding: 16px;\n border: 1px dashed #c3c9d2;\n border-radius: 8px;\n color: #9aa3af;\n font-size: 13px;\n text-align: center;\n`;\n\nexport const LinkButton = styled.a`\n display: inline-block;\n padding: 8px 16px;\n border-radius: 6px;\n background: var(--doc-brand, #1a56db);\n color: #fff;\n text-decoration: none;\n font-weight: 500;\n`;\n\nexport const PageBreakMark = styled.div`\n break-after: page;\n margin: 8px 0;\n border-top: 1px dashed #c3c9d2;\n text-align: center;\n color: #9aa3af;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n`;\n\n/**\n * Coluna de slot. `min-width: 0` é obrigatório: sem isso um filho largo (tabela,\n * imagem, palavra sem quebra) força a coluna a crescer e estoura a folha.\n */\nexport const SlotColumn = styled.div<{ $basis: number }>`\n flex: ${props => props.$basis} 1 0;\n min-width: 0;\n`;\n\nexport const Row = styled.div<{ $gap: number; $align?: string }>`\n display: flex;\n gap: ${props => props.$gap}px;\n align-items: ${props => props.$align ?? 'flex-start'};\n`;\n\n/**\n * Campo `slot` tem duas caras: no documento ele é um ARRAY de blocos (é isso que\n * `defaultProps` e `propsSchema` descrevem), mas o Puck entrega ao componente uma\n * FUNÇÃO que renderiza a zona. O helper faz a ponte sem espalhar cast por bloco.\n */\nexport const renderSlot = (slot: unknown): ReactNode =>\n typeof slot === 'function' ? (slot as () => ReactNode)() : null;\n","import { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { ButtonIcon } from '../../editor/blockIcons';\nimport { LinkButton } from './shared';\n\nexport type ButtonBlockProps = {\n text: string;\n href: string;\n};\n\nexport const ButtonBlock = defineBlock<ButtonBlockProps>({\n key: 'Button',\n label: 'Botão',\n category: 'Conteúdo',\n icon: <ButtonIcon />,\n fields: {\n text: { type: 'text', label: 'Texto do botão', contentEditable: true },\n href: { type: 'text', label: 'Link ao clicar' }\n },\n propsSchema: z.object({ text: z.string(), href: z.string() }),\n defaultProps: { text: 'Clique aqui', href: '#' },\n component: ({ text, href }) => (\n <LinkButton href={href || '#'} target=\"_blank\" rel=\"noopener noreferrer\">\n {text}\n </LinkButton>\n )\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { DividerIcon } from '../../editor/blockIcons';\nimport { GAP_PX } from './shared';\n\nexport type DividerBlockProps = {\n variant: 'solid' | 'dashed' | 'dotted';\n spacing: 'none' | 'small' | 'medium' | 'large';\n};\n\nconst Rule = styled.hr<{ $variant: string; $spacing: number }>`\n border: none;\n border-top: 1px ${props => props.$variant} currentColor;\n opacity: 0.25;\n margin: ${props => props.$spacing}px 0;\n`;\n\nexport const DividerBlock = defineBlock<DividerBlockProps>({\n key: 'Divider',\n label: 'Divisor',\n category: 'Conteúdo',\n icon: <DividerIcon />,\n fields: {\n variant: {\n type: 'select',\n label: 'Traço',\n options: [\n { label: 'Contínuo', value: 'solid' },\n { label: 'Tracejado', value: 'dashed' },\n { label: 'Pontilhado', value: 'dotted' }\n ]\n },\n spacing: {\n type: 'select',\n label: 'Espaçamento',\n options: [\n { label: 'Nenhum', value: 'none' },\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n }\n },\n propsSchema: z.object({\n variant: z.enum(['solid', 'dashed', 'dotted']),\n spacing: z.enum(['none', 'small', 'medium', 'large'])\n }),\n defaultProps: { variant: 'solid', spacing: 'medium' },\n component: ({ variant, spacing }) => <Rule $variant={variant ?? 'solid'} $spacing={GAP_PX[spacing] ?? 16} />\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { SpacerIcon } from '../../editor/blockIcons';\n\nexport type SpacerBlockProps = {\n height: number;\n puck?: { isEditing?: boolean };\n};\n\nconst Gap = styled.div<{ $height: number; $editing: boolean }>`\n height: ${props => props.$height}px;\n ${props => (props.$editing ? 'border: 1px dashed #dbe0e6; border-radius: 4px;' : '')}\n`;\n\nexport const SpacerBlock = defineBlock<SpacerBlockProps>({\n key: 'Spacer',\n label: 'Espaço',\n category: 'Conteúdo',\n icon: <SpacerIcon />,\n fields: {\n height: { type: 'number', label: 'Altura (px)', min: 4, max: 400 }\n },\n propsSchema: z.object({ height: z.number().int().min(1).max(600) }),\n defaultProps: { height: 24 },\n component: ({ height, puck }) => <Gap $height={height ?? 24} $editing={Boolean(puck?.isEditing)} />\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { ImageIcon } from '../../editor/blockIcons';\nimport { Placeholder, SIZE_WIDTH } from './shared';\n\nexport type ImageBlockProps = {\n src: string;\n alt: string;\n caption?: string;\n size: 'small' | 'medium' | 'large';\n opacity: number;\n puck?: { isEditing?: boolean };\n};\n\nconst Figure = styled.figure`\n margin: 0;\n`;\n\nconst Caption = styled.figcaption`\n margin-top: 6px;\n font-size: 0.85em;\n opacity: 0.7;\n`;\n\nexport const ImageBlock = defineBlock<ImageBlockProps>({\n key: 'Image',\n label: 'Imagem',\n category: 'Mídia',\n icon: <ImageIcon />,\n fields: {\n src: { type: 'text', label: 'Imagem (URL)' },\n alt: { type: 'text', label: 'Texto alternativo' },\n caption: { type: 'text', label: 'Legenda (opcional)' },\n size: {\n type: 'select',\n label: 'Tamanho',\n options: [\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n },\n opacity: { type: 'number', label: 'Opacidade (%)', min: 0, max: 100 }\n },\n propsSchema: z.object({\n src: z.string(),\n alt: z.string(),\n caption: z.string().optional(),\n size: z.enum(['small', 'medium', 'large']),\n opacity: z.number().min(0).max(100)\n }),\n defaultProps: { src: '', alt: '', caption: '', size: 'medium', opacity: 100 },\n component: ({ src, alt, caption, size, opacity, puck }) => {\n if (!src) return puck?.isEditing ? <Placeholder>Informe a URL da imagem</Placeholder> : null;\n\n return (\n <Figure>\n <img\n src={src}\n alt={alt ?? ''}\n style={{ width: SIZE_WIDTH[size] ?? '66%', maxWidth: '100%', opacity: (opacity ?? 100) / 100 }}\n />\n {caption ? <Caption>{caption}</Caption> : null}\n </Figure>\n );\n }\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { ImageGridIcon } from '../../editor/blockIcons';\nimport { GAP_PX, Placeholder } from './shared';\n\nexport type GridImage = { src: string; alt?: string };\n\nexport type ImageGridBlockProps = {\n images: GridImage[];\n columns: number;\n gap: 'none' | 'small' | 'medium' | 'large';\n ratio: 'square' | 'landscape' | 'portrait' | 'auto';\n puck?: { isEditing?: boolean };\n};\n\nconst RATIO: Record<string, string | undefined> = {\n square: '1 / 1',\n landscape: '4 / 3',\n portrait: '3 / 4',\n auto: undefined\n};\n\nconst Grid = styled.div<{ $columns: number; $gap: number }>`\n display: grid;\n grid-template-columns: repeat(${props => props.$columns}, 1fr);\n gap: ${props => props.$gap}px;\n`;\n\nconst Cell = styled.img<{ $ratio?: string }>`\n width: 100%;\n height: ${props => (props.$ratio ? '100%' : 'auto')};\n aspect-ratio: ${props => props.$ratio ?? 'auto'};\n object-fit: ${props => (props.$ratio ? 'cover' : 'contain')};\n display: block;\n`;\n\nexport const ImageGridBlock = defineBlock<ImageGridBlockProps>({\n key: 'ImageGrid',\n label: 'Grade de imagens',\n category: 'Mídia',\n icon: <ImageGridIcon />,\n fields: {\n images: {\n type: 'array',\n label: 'Imagens',\n getItemSummary: (item: GridImage, index) => item?.alt || item?.src || `Imagem ${(index ?? 0) + 1}`,\n arrayFields: {\n src: { type: 'text', label: 'URL' },\n alt: { type: 'text', label: 'Texto alternativo' }\n },\n defaultItemProps: { src: '', alt: '' }\n },\n columns: { type: 'number', label: 'Colunas', min: 1, max: 4 },\n gap: {\n type: 'select',\n label: 'Espaçamento',\n options: [\n { label: 'Nenhum', value: 'none' },\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n },\n ratio: {\n type: 'select',\n label: 'Proporção',\n options: [\n { label: 'Quadrada', value: 'square' },\n { label: 'Paisagem', value: 'landscape' },\n { label: 'Retrato', value: 'portrait' },\n { label: 'Original', value: 'auto' }\n ]\n }\n },\n propsSchema: z.object({\n images: z.array(z.object({ src: z.string(), alt: z.string().optional() })),\n columns: z.number().int().min(1).max(4),\n gap: z.enum(['none', 'small', 'medium', 'large']),\n ratio: z.enum(['square', 'landscape', 'portrait', 'auto'])\n }),\n defaultProps: { images: [], columns: 2, gap: 'small', ratio: 'square' },\n component: ({ images = [], columns, gap, ratio, puck }) => {\n const filled = images.filter(image => image?.src);\n if (!filled.length) return puck?.isEditing ? <Placeholder>Adicione imagens à grade</Placeholder> : null;\n\n return (\n <Grid $columns={columns ?? 2} $gap={GAP_PX[gap] ?? 8}>\n {filled.map((image, index) => (\n // eslint-disable-next-line react/no-array-index-key -- a imagem não tem id próprio; a ordem é a identidade\n <Cell key={index} src={image.src} alt={image.alt ?? ''} $ratio={RATIO[ratio ?? 'square']} />\n ))}\n </Grid>\n );\n }\n});\n","import type { Slot } from '@puckeditor/core';\nimport { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { TwoColumnsIcon } from '../../editor/blockIcons';\nimport { GAP_PX, Row, SlotColumn, renderSlot } from './shared';\n\nexport type TwoColumnsBlockProps = {\n left: Slot;\n right: Slot;\n ratio: number;\n gap: 'none' | 'small' | 'medium' | 'large';\n align: 'start' | 'center';\n};\n\nconst slotSchema = z.array(z.unknown()).optional();\n\nexport const TwoColumnsBlock = defineBlock<TwoColumnsBlockProps>({\n key: 'TwoColumns',\n label: 'Duas colunas',\n category: 'Layout',\n icon: <TwoColumnsIcon />,\n fields: {\n left: { type: 'slot', label: 'Coluna esquerda' },\n right: { type: 'slot', label: 'Coluna direita' },\n ratio: { type: 'number', label: 'Largura da esquerda (%)', min: 20, max: 80 },\n gap: {\n type: 'select',\n label: 'Espaçamento',\n options: [\n { label: 'Nenhum', value: 'none' },\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n },\n align: {\n type: 'radio',\n label: 'Alinhamento vertical',\n options: [\n { label: 'Topo', value: 'start' },\n { label: 'Centro', value: 'center' }\n ]\n }\n },\n propsSchema: z.object({\n left: slotSchema,\n right: slotSchema,\n ratio: z.number().min(0).max(100),\n gap: z.enum(['none', 'small', 'medium', 'large']),\n align: z.enum(['start', 'center'])\n }),\n defaultProps: { ratio: 50, gap: 'medium', align: 'start' },\n component: ({ left, right, ratio = 50, gap, align }) => (\n <Row $gap={GAP_PX[gap] ?? 16} $align={align === 'center' ? 'center' : 'flex-start'}>\n <SlotColumn $basis={ratio}>{renderSlot(left)}</SlotColumn>\n <SlotColumn $basis={100 - ratio}>{renderSlot(right)}</SlotColumn>\n </Row>\n )\n});\n","import type { Slot } from '@puckeditor/core';\nimport { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { ImageTextIcon } from '../../editor/blockIcons';\nimport { GAP_PX, Row, SlotColumn, renderSlot } from './shared';\n\nexport type ImageTextBlockProps = {\n image: Slot;\n text: Slot;\n ratio: number;\n imageRight: boolean;\n gap: 'none' | 'small' | 'medium' | 'large';\n};\n\nconst slotSchema = z.array(z.unknown()).optional();\n\nexport const ImageTextBlock = defineBlock<ImageTextBlockProps>({\n key: 'ImageText',\n label: 'Imagem e texto',\n category: 'Layout',\n icon: <ImageTextIcon />,\n fields: {\n image: { type: 'slot', label: 'Imagem', allow: ['Image', 'ImageGrid'] },\n text: { type: 'slot', label: 'Texto', allow: ['Text', 'Heading', 'List', 'Quote', 'Button'] },\n ratio: { type: 'number', label: 'Largura da imagem (%)', min: 20, max: 80 },\n imageRight: {\n type: 'radio',\n label: 'Posição da imagem',\n options: [\n { label: 'Esquerda', value: false },\n { label: 'Direita', value: true }\n ]\n },\n gap: {\n type: 'select',\n label: 'Espaçamento',\n options: [\n { label: 'Nenhum', value: 'none' },\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n }\n },\n propsSchema: z.object({\n image: slotSchema,\n text: slotSchema,\n ratio: z.number().min(0).max(100),\n imageRight: z.boolean(),\n gap: z.enum(['none', 'small', 'medium', 'large'])\n }),\n defaultProps: {\n ratio: 40,\n imageRight: false,\n gap: 'medium',\n image: [{ type: 'Image', props: {} }],\n text: [{ type: 'Text', props: {} }]\n },\n component: ({ image, text, ratio = 40, imageRight, gap }) => {\n const imageColumn = <SlotColumn $basis={ratio}>{renderSlot(image)}</SlotColumn>;\n const textColumn = <SlotColumn $basis={100 - ratio}>{renderSlot(text)}</SlotColumn>;\n\n return (\n <Row $gap={GAP_PX[gap] ?? 16}>\n {imageRight ? textColumn : imageColumn}\n {imageRight ? imageColumn : textColumn}\n </Row>\n );\n }\n});\n","import type { CSSProperties } from 'react';\n\nconst SOCIAL = 'Social e contato';\nconst ACTIONS = 'Ações';\nconst NAV = 'Navegação';\nconst TIME_PLACE = 'Tempo e local';\nconst GENERAL = 'Gerais';\n\nexport type ContentIconDef = {\n label: string;\n group: string;\n viewBox: string;\n inner: string;\n variant?: 'fill' | 'stroke';\n};\n\n/**\n * SVG inline com width/height explícitos: o HTML do documento (iframe, link público, PDF)\n * não carrega CSS global nenhum, e sem dimensão o svg cai no default 300x150.\n *\n * As `key`s são contrato de dado — ficam gravadas em `appearance.icon` no documento.\n * Renomear uma exige migração; trocar o desenho, não.\n */\nexport const CONTENT_ICON_CATALOG: Record<string, ContentIconDef> = {\n whatsapp: {\n label: 'WhatsApp',\n group: SOCIAL,\n variant: 'fill',\n viewBox: '0 0 448 512',\n inner:\n '<path d=\"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"/>'\n },\n instagram: {\n label: 'Instagram',\n group: SOCIAL,\n variant: 'fill',\n viewBox: '0 0 448 512',\n inner:\n '<path d=\"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"/>'\n },\n facebook: {\n label: 'Facebook',\n group: SOCIAL,\n variant: 'fill',\n viewBox: '0 0 320 512',\n inner:\n '<path d=\"M80 299.3V512H196V299.3h86.5l18-97.8H196V166.9c0-51.7 20.3-71.5 72.7-71.5c16.3 0 29.4 .4 37 1.2V7.9C291.4 4 256.4 0 236.2 0C129.3 0 80 50.5 80 159.4v42.1H14v97.8H80z\"/>'\n },\n email: {\n label: 'E-mail',\n group: SOCIAL,\n viewBox: '0 0 24 24',\n inner: '<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\" /><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\" />'\n },\n telefone: {\n label: 'Telefone',\n group: SOCIAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\" />'\n },\n link: {\n label: 'Link',\n group: SOCIAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" /><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />'\n },\n download: {\n label: 'Download',\n group: ACTIONS,\n viewBox: '0 0 24 24',\n inner: '<path d=\"M12 15V3\" /><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" /><path d=\"m7 10 5 5 5-5\" />'\n },\n check: {\n label: 'Check',\n group: ACTIONS,\n viewBox: '0 0 24 24',\n inner: '<path d=\"M20 6 9 17l-5-5\" />'\n },\n enviar: {\n label: 'Enviar',\n group: ACTIONS,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\" /><path d=\"m21.854 2.147-10.94 10.939\" />'\n },\n cifrao: {\n label: 'Cifrão',\n group: ACTIONS,\n viewBox: '0 0 24 24',\n inner: '<line x1=\"12\" x2=\"12\" y1=\"2\" y2=\"22\" /><path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\" />'\n },\n 'seta-esquerda': {\n label: 'Seta esquerda',\n group: NAV,\n viewBox: '0 0 24 24',\n inner: '<path d=\"m12 19-7-7 7-7\" /><path d=\"M19 12H5\" />'\n },\n 'seta-direita': {\n label: 'Seta direita',\n group: NAV,\n viewBox: '0 0 24 24',\n inner: '<path d=\"M5 12h14\" /><path d=\"m12 5 7 7-7 7\" />'\n },\n 'link-externo': {\n label: 'Link externo',\n group: NAV,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M15 3h6v6\" /><path d=\"M10 14 21 3\" /><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />'\n },\n calendario: {\n label: 'Calendário',\n group: TIME_PLACE,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M8 2v3\" /><path d=\"M16 2v3\" /><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M3 9h18\" />'\n },\n relogio: {\n label: 'Relógio',\n group: TIME_PLACE,\n viewBox: '0 0 24 24',\n inner: '<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 6v6l4 2\" />'\n },\n localizacao: {\n label: 'Localização',\n group: TIME_PLACE,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\" /><circle cx=\"12\" cy=\"10\" r=\"3\" />'\n },\n predio: {\n label: 'Prédio',\n group: TIME_PLACE,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M12 10h.01\" /><path d=\"M12 14h.01\" /><path d=\"M12 6h.01\" /><path d=\"M16 10h.01\" /><path d=\"M16 14h.01\" /><path d=\"M16 6h.01\" /><path d=\"M8 10h.01\" /><path d=\"M8 14h.01\" /><path d=\"M8 6h.01\" /><path d=\"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\" /><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\" />'\n },\n estrela: {\n label: 'Estrela',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\" />'\n },\n coracao: {\n label: 'Coração',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\" />'\n },\n globo: {\n label: 'Globo',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<circle cx=\"12\" cy=\"12\" r=\"10\" /><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" /><path d=\"M2 12h20\" />'\n },\n usuario: {\n label: 'Usuário',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner: '<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" /><circle cx=\"12\" cy=\"7\" r=\"4\" />'\n },\n arquivo: {\n label: 'Arquivo',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\" /><path d=\"M14 2v5a1 1 0 0 0 1 1h5\" />'\n },\n imagem: {\n label: 'Imagem',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" /><circle cx=\"9\" cy=\"9\" r=\"2\" /><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\" />'\n },\n camera: {\n label: 'Câmera',\n group: GENERAL,\n viewBox: '0 0 24 24',\n inner:\n '<path d=\"M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z\" /><circle cx=\"12\" cy=\"13\" r=\"3\" />'\n }\n};\n\nexport const CONTENT_ICON_NAMES = Object.keys(CONTENT_ICON_CATALOG);\n\nexport type ContentIconProps = {\n name?: string;\n /** Aceita número (px) ou qualquer unidade CSS. Default `1em` — acompanha o font-size do contexto. */\n size?: number | string;\n color?: string;\n /** Espessura do traço, em unidades do viewBox (24). Ignorado por ícone preenchido. */\n strokeWidth?: number;\n style?: CSSProperties;\n className?: string;\n};\n\nexport function ContentIcon({\n name,\n size = '1em',\n color = 'currentColor',\n strokeWidth = 2,\n style,\n className\n}: ContentIconProps) {\n const def = name ? CONTENT_ICON_CATALOG[name] : undefined;\n if (!def) return null;\n\n const stroked = def.variant !== 'fill';\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={def.viewBox}\n fill={stroked ? 'none' : color}\n {...(stroked\n ? { stroke: color, strokeWidth, strokeLinecap: 'round' as const, strokeLinejoin: 'round' as const }\n : {})}\n aria-hidden=\"true\"\n focusable=\"false\"\n className={className}\n style={{ display: 'inline-block', verticalAlign: '-0.125em', flexShrink: 0, ...style }}\n // eslint-disable-next-line react/no-danger -- markup estático deste arquivo, nunca entrada do host\n dangerouslySetInnerHTML={{ __html: def.inner }}\n />\n );\n}\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { IconTextIcon } from '../../editor/blockIcons';\nimport { CONTENT_ICON_CATALOG, CONTENT_ICON_NAMES, ContentIcon } from '../contentIcons';\nimport { GAP_PX, Row } from './shared';\nimport { RichText } from '../primitives/RichText';\n\nexport type IconTextBlockProps = {\n icon: string;\n content: string;\n iconSize: number;\n iconRight: boolean;\n gap: 'none' | 'small' | 'medium' | 'large';\n puck?: { isEditing?: boolean };\n};\n\nconst IconSlot = styled.span`\n flex: none;\n color: var(--doc-brand, #005ac3);\n line-height: 1;\n`;\n\nconst Body = styled.div`\n flex: 1;\n min-width: 0;\n`;\n\nexport const IconTextBlock = defineBlock<IconTextBlockProps>({\n key: 'IconText',\n label: 'Ícone e texto',\n category: 'Layout',\n icon: <IconTextIcon />,\n fields: {\n icon: {\n type: 'select',\n label: 'Ícone',\n options: CONTENT_ICON_NAMES.map(name => ({ label: CONTENT_ICON_CATALOG[name].label, value: name }))\n },\n content: { type: 'textarea', label: 'Texto (HTML)' },\n iconSize: { type: 'number', label: 'Tamanho do ícone (px)', min: 12, max: 96 },\n iconRight: {\n type: 'radio',\n label: 'Posição do ícone',\n options: [\n { label: 'Esquerda', value: false },\n { label: 'Direita', value: true }\n ]\n },\n gap: {\n type: 'select',\n label: 'Espaçamento',\n options: [\n { label: 'Nenhum', value: 'none' },\n { label: 'Pequeno', value: 'small' },\n { label: 'Médio', value: 'medium' },\n { label: 'Grande', value: 'large' }\n ]\n }\n },\n propsSchema: z.object({\n icon: z.string(),\n content: z.string(),\n iconSize: z.number().int().min(8).max(128),\n iconRight: z.boolean(),\n gap: z.enum(['none', 'small', 'medium', 'large'])\n }),\n defaultProps: { icon: 'check', content: '<p>Descreva o item.</p>', iconSize: 24, iconRight: false, gap: 'small' },\n component: ({ icon, content, iconSize, iconRight, gap, puck }) => {\n const glyph = (\n <IconSlot>\n <ContentIcon name={icon} size={iconSize ?? 24} />\n </IconSlot>\n );\n\n return (\n <Row $gap={GAP_PX[gap] ?? 8} $align=\"flex-start\">\n {iconRight ? null : glyph}\n <Body>\n <RichText html={content} editing={puck?.isEditing} />\n </Body>\n {iconRight ? glyph : null}\n </Row>\n );\n }\n});\n","import { z } from 'zod';\nimport styled from 'styled-components';\nimport { defineBlock } from '../defineBlock';\nimport { TableIcon } from '../../editor/blockIcons';\nimport { Placeholder } from './shared';\nimport { RichText } from '../primitives/RichText';\n\nexport type TableCell = { value: string };\nexport type TableRow = { cells: TableCell[] };\n\nexport type TableBlockProps = {\n rows: TableRow[];\n headerRow: boolean;\n puck?: { isEditing?: boolean };\n};\n\nconst Grid = styled.table`\n width: 100%;\n border-collapse: collapse;\n font-size: 0.95em;\n\n th,\n td {\n padding: 8px 10px;\n border-bottom: 1px solid rgba(127, 137, 152, 0.28);\n text-align: left;\n vertical-align: top;\n }\n\n th {\n font-weight: 600;\n background: color-mix(in srgb, var(--doc-brand, #005ac3) 8%, transparent);\n }\n`;\n\nexport const TableBlock = defineBlock<TableBlockProps>({\n key: 'Table',\n label: 'Tabela',\n category: 'Dados',\n icon: <TableIcon />,\n fields: {\n headerRow: {\n type: 'radio',\n label: 'Primeira linha é cabeçalho',\n options: [\n { label: 'Sim', value: true },\n { label: 'Não', value: false }\n ]\n },\n rows: {\n type: 'array',\n label: 'Linhas',\n getItemSummary: (row: TableRow, index) =>\n row?.cells\n ?.map(cell => cell?.value)\n .filter(Boolean)\n .join(' · ') || `Linha ${(index ?? 0) + 1}`,\n arrayFields: {\n cells: {\n type: 'array',\n label: 'Células',\n getItemSummary: (cell: TableCell, index) => cell?.value || `Coluna ${(index ?? 0) + 1}`,\n arrayFields: { value: { type: 'text', label: 'Conteúdo' } },\n defaultItemProps: { value: '' }\n }\n },\n defaultItemProps: { cells: [{ value: '' }, { value: '' }] }\n }\n },\n propsSchema: z.object({\n rows: z.array(z.object({ cells: z.array(z.object({ value: z.string() })) })),\n headerRow: z.boolean()\n }),\n defaultProps: {\n headerRow: true,\n rows: [{ cells: [{ value: 'Item' }, { value: 'Valor' }] }, { cells: [{ value: 'Exemplo' }, { value: 'R$ 0,00' }] }]\n },\n component: ({ rows = [], headerRow, puck }) => {\n if (!rows.length) return puck?.isEditing ? <Placeholder>Adicione linhas à tabela</Placeholder> : null;\n\n const [first, ...rest] = rows;\n const body = headerRow ? rest : rows;\n\n return (\n <Grid>\n {headerRow ? (\n <thead>\n <tr>\n {(first?.cells ?? []).map((cell, index) => (\n // eslint-disable-next-line react/no-array-index-key -- a célula não tem id; a posição é a identidade\n <th key={index}>\n <RichText as=\"span\" html={cell?.value} editing={puck?.isEditing} />\n </th>\n ))}\n </tr>\n </thead>\n ) : null}\n <tbody>\n {body.map((row, rowIndex) => (\n // eslint-disable-next-line react/no-array-index-key -- idem\n <tr key={rowIndex}>\n {(row?.cells ?? []).map((cell, cellIndex) => (\n // eslint-disable-next-line react/no-array-index-key -- idem\n <td key={cellIndex}>\n <RichText as=\"span\" html={cell?.value} editing={puck?.isEditing} />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </Grid>\n );\n }\n});\n","import { z } from 'zod';\nimport { defineBlock } from '../defineBlock';\nimport { PageBreakIcon } from '../../editor/blockIcons';\nimport { PageBreakMark } from './shared';\n\nexport type PageBreakBlockProps = {\n puck?: { isEditing?: boolean };\n};\n\nexport const PageBreakBlock = defineBlock<PageBreakBlockProps>({\n key: 'PageBreak',\n label: 'Quebra de página',\n category: 'Estrutura',\n icon: <PageBreakIcon />,\n fields: {},\n propsSchema: z.object({}),\n component: ({ puck }) => (puck?.isEditing ? <PageBreakMark>Quebra de página</PageBreakMark> : null)\n});\n","import { TextBlock } from './components/TextBlock';\nimport { HeadingBlock } from './components/HeadingBlock';\nimport { ListBlock } from './components/ListBlock';\nimport { QuoteBlock } from './components/QuoteBlock';\nimport { ButtonBlock } from './components/ButtonBlock';\nimport { DividerBlock } from './components/DividerBlock';\nimport { SpacerBlock } from './components/SpacerBlock';\nimport { ImageBlock } from './components/ImageBlock';\nimport { ImageGridBlock } from './components/ImageGridBlock';\nimport { TwoColumnsBlock } from './components/TwoColumnsBlock';\nimport { ImageTextBlock } from './components/ImageTextBlock';\nimport { IconTextBlock } from './components/IconTextBlock';\nimport { TableBlock } from './components/TableBlock';\nimport { PageBreakBlock } from './components/PageBreakBlock';\nimport type { BlockEntry, Registry } from './types';\n\nexport {\n TextBlock,\n HeadingBlock,\n ListBlock,\n QuoteBlock,\n ButtonBlock,\n DividerBlock,\n SpacerBlock,\n ImageBlock,\n ImageGridBlock,\n TwoColumnsBlock,\n ImageTextBlock,\n IconTextBlock,\n TableBlock,\n PageBreakBlock\n};\n\nexport const defaultBlocks: Registry = [\n TextBlock,\n HeadingBlock,\n ListBlock,\n QuoteBlock,\n ButtonBlock,\n DividerBlock,\n SpacerBlock,\n ImageBlock,\n ImageGridBlock,\n TwoColumnsBlock,\n ImageTextBlock,\n IconTextBlock,\n TableBlock,\n PageBreakBlock\n];\n\nexport const blocksByKey: Record<string, BlockEntry> = Object.fromEntries(\n defaultBlocks.map(block => [block.key, block])\n);\n","import { devWarn } from '../core/devWarn';\nimport { blocksByKey } from './defaults';\nimport type { BlockEntry } from './types';\n\n/**\n * Deriva um bloco a partir de um default da lib: herda a entry inteira e aplica `patch`\n * por cima.\n *\n * ```ts\n * const MeuTexto = overrideBlock('Text', { component: MeuRichText });\n * const Copia = overrideBlock('Text', { key: 'TextoLegal' }); // clona sob outra key\n * ```\n *\n * `key` desconhecida avisa em dev e devolve a entry só com o `patch` — para bloco que é\n * só do host, use `defineBlock`, que não promete herança nenhuma.\n */\nexport function overrideBlock<Props extends Record<string, unknown> = Record<string, unknown>>(\n key: string,\n patch: Partial<BlockEntry<Props>> = {}\n): BlockEntry<Props> {\n const base = blocksByKey[key];\n\n if (!base) {\n devWarn(\n `override-unknown-block:${key}`,\n `overrideBlock('${key}') não achou bloco default com essa key — nada foi herdado. ` +\n 'Bloco que é só do host se declara com defineBlock.'\n );\n }\n\n return { ...(base as BlockEntry<Props> | undefined), key, ...patch } as BlockEntry<Props>;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkSP5LCPDG_cjs = require('./chunk-SP5LCPDG.cjs');
|
|
4
4
|
|
|
5
5
|
// src/variables/format.ts
|
|
6
6
|
var brl = new Intl.NumberFormat("pt-BR", { style: "currency", currency: "BRL" });
|
|
@@ -79,7 +79,7 @@ function formatResolvedValues(defs, raw) {
|
|
|
79
79
|
return resolved;
|
|
80
80
|
}
|
|
81
81
|
async function resolveDocumentVariables(node, catalog, resolver, ctx) {
|
|
82
|
-
const keys =
|
|
82
|
+
const keys = chunkSP5LCPDG_cjs.extractBindingKeys(node);
|
|
83
83
|
if (keys.length === 0) return {};
|
|
84
84
|
const raw = await resolver(keys, ctx);
|
|
85
85
|
const byKey = new Map(catalog.map((def) => [def.key, def]));
|
|
@@ -90,5 +90,5 @@ async function resolveDocumentVariables(node, catalog, resolver, ctx) {
|
|
|
90
90
|
exports.formatResolvedValues = formatResolvedValues;
|
|
91
91
|
exports.formatValue = formatValue;
|
|
92
92
|
exports.resolveDocumentVariables = resolveDocumentVariables;
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
94
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-QJ5W5EED.cjs.map
|
|
94
|
+
//# sourceMappingURL=chunk-QJ5W5EED.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/variables/format.ts","../src/variables/resolve.ts"],"names":["extractBindingKeys"],"mappings":";;;;;AAEA,IAAM,GAAA,GAAM,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,KAAA,EAAO,CAAA;AACjF,IAAM,OAAA,GAAU,IAAI,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AAC7C,IAAM,IAAA,GAAO,IAAI,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AAE5C,SAAS,SAAS,KAAA,EAA+B;AAC/C,EAAA,MAAM,IAAI,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,GAAK,KAAA;AACvD,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,QAAA,CAAS,CAAC,IAAI,CAAA,GAAI,IAAA;AAC3D;AAGA,IAAM,SAAA,GAAY,yDAAA;AAElB,IAAM,MAAA,GAAS,KAAA;AACf,IAAM,GAAA,GAAM,gCAAA;AACZ,IAAM,IAAA,GAAO,uCAAA;AACb,IAAM,KAAA,GAAQ,kCAAA;AACd,IAAM,OAAA,GAAU,kBAAA;AAGhB,SAAS,OAAO,GAAA,EAAoB;AAClC,EAAA,IAAI,GAAA,YAAe,MAAM,OAAO,GAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA;AACxC,EAAA,IAAI,OAAO,OAAO,IAAI,KAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AACnF,EAAA,OAAO,IAAI,KAAK,GAAa,CAAA;AAC/B;AAIA,SAAS,WAAW,GAAA,EAAqB;AACvC,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AACrC,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AAC3B,EAAA,IAAI,KAAK,OAAO,CAAA,EAAG,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAC,IAAI,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC7B,EAAA,IAAI,IAAA,SAAa,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,IAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AACvE,EAAA,OAAO,GAAA;AACT;AAGA,SAAS,QAAQ,GAAA,EAAqB;AACpC,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAChD,EAAA,OAAO,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,GAAA;AAC3D;AAEA,SAAS,UAAU,GAAA,EAAqB;AACtC,EAAA,MAAM,QAAQ,OAAA,CAAQ,IAAA,CAAK,IAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAClD,EAAA,OAAO,KAAA,GAAQ,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,GAAA;AAC7C;AAGO,SAAS,WAAA,CAAY,MAAoB,GAAA,EAAsB;AACpE,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW,OAAO,EAAA;AAE9C,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,MAAA,OAAO,CAAA,KAAM,IAAA,GAAO,EAAA,GAAK,GAAA,CAAI,OAAO,CAAC,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,MAAA,OAAO,CAAA,KAAM,IAAA,GAAO,EAAA,GAAK,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,IAC3C;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,OAAO,GAAG,CAAA;AACpB,MAAA,OAAO,MAAA,CAAO,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,GAAI,EAAA,GAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,UAAA,CAAW,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC/B,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC5B,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC9B,KAAK,SAAA;AACH,MAAA,OAAO,MAAM,KAAA,GAAQ,QAAA;AAAA,IACvB,KAAK,QAAA;AAAA,IACL;AACE,MAAA,OAAO,OAAO,GAAG,CAAA;AAAA;AAEvB;;;ACvEO,SAAS,oBAAA,CAAqB,MAAqB,GAAA,EAAiD;AACzG,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,IAAA,CAAK,QAAQ,CAAA,GAAA,KAAO;AAClB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,IAAO,GAAA,GAAM,IAAI,GAAA,CAAI,GAAG,IAAI,GAAA,CAAI,OAAA;AAClD,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC3C,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,IAAA,EAAM,KAAK,CAAA;AAC7C,IAAA,IAAI,SAAA,KAAc,EAAA,EAAI,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,GAAI,SAAA;AAAA,EAC5C,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACT;AAGA,eAAsB,wBAAA,CACpB,IAAA,EACA,OAAA,EACA,QAAA,EACA,GAAA,EAC4B;AAC5B,EAAA,MAAM,IAAA,GAAOA,qCAAmB,IAAI,CAAA;AACpC,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAE/B,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,GAAA,KAAO,CAAC,GAAA,CAAI,GAAA,EAAK,GAAG,CAAC,CAAC,CAAA;AACxD,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,KAAO,KAAA,CAAM,IAAI,GAAG,CAAA,IAAK,EAAE,GAAA,EAAK,OAAO,GAAA,EAAK,IAAA,EAAM,QAAA,EAAmB,KAAA,EAAO,UAAU,CAAA;AAC5G,EAAA,OAAO,oBAAA,CAAqB,MAAM,GAAG,CAAA;AACvC","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/variables/format.ts","../src/variables/resolve.ts"],"names":["extractBindingKeys"],"mappings":";;;;;AAEA,IAAM,GAAA,GAAM,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EAAS,EAAE,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,KAAA,EAAO,CAAA;AACjF,IAAM,OAAA,GAAU,IAAI,IAAA,CAAK,YAAA,CAAa,OAAO,CAAA;AAC7C,IAAM,IAAA,GAAO,IAAI,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA;AAE5C,SAAS,SAAS,KAAA,EAA+B;AAC/C,EAAA,MAAM,IAAI,OAAO,KAAA,KAAU,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA,GAAK,KAAA;AACvD,EAAA,OAAO,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,QAAA,CAAS,CAAC,IAAI,CAAA,GAAI,IAAA;AAC3D;AAGA,IAAM,SAAA,GAAY,yDAAA;AAElB,IAAM,MAAA,GAAS,KAAA;AACf,IAAM,GAAA,GAAM,gCAAA;AACZ,IAAM,IAAA,GAAO,uCAAA;AACb,IAAM,KAAA,GAAQ,kCAAA;AACd,IAAM,OAAA,GAAU,kBAAA;AAGhB,SAAS,OAAO,GAAA,EAAoB;AAClC,EAAA,IAAI,GAAA,YAAe,MAAM,OAAO,GAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,MAAA,CAAO,GAAG,CAAC,CAAA;AACxC,EAAA,IAAI,OAAO,OAAO,IAAI,KAAK,MAAA,CAAO,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,CAAA,EAAG,OAAO,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AACnF,EAAA,OAAO,IAAI,KAAK,GAAa,CAAA;AAC/B;AAIA,SAAS,WAAW,GAAA,EAAqB;AACvC,EAAA,MAAM,MAAA,GAAS,GAAA,CAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAA;AACrC,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA;AAC3B,EAAA,IAAI,KAAK,OAAO,CAAA,EAAG,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAC,IAAI,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,CAAC,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA;AAC7B,EAAA,IAAI,IAAA,SAAa,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,IAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AACvE,EAAA,OAAO,GAAA;AACT;AAGA,SAAS,QAAQ,GAAA,EAAqB;AACpC,EAAA,MAAM,QAAQ,KAAA,CAAM,IAAA,CAAK,IAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAChD,EAAA,OAAO,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,EAAA,EAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,GAAA;AAC3D;AAEA,SAAS,UAAU,GAAA,EAAqB;AACtC,EAAA,MAAM,QAAQ,OAAA,CAAQ,IAAA,CAAK,IAAI,OAAA,CAAQ,MAAA,EAAQ,EAAE,CAAC,CAAA;AAClD,EAAA,OAAO,KAAA,GAAQ,GAAG,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,GAAA;AAC7C;AAGO,SAAS,WAAA,CAAY,MAAoB,GAAA,EAAsB;AACpE,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW,OAAO,EAAA;AAE9C,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,MAAA,OAAO,CAAA,KAAM,IAAA,GAAO,EAAA,GAAK,GAAA,CAAI,OAAO,CAAC,CAAA;AAAA,IACvC;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,CAAA,GAAI,SAAS,GAAG,CAAA;AACtB,MAAA,OAAO,CAAA,KAAM,IAAA,GAAO,EAAA,GAAK,OAAA,CAAQ,OAAO,CAAC,CAAA;AAAA,IAC3C;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,CAAA,GAAI,OAAO,GAAG,CAAA;AACpB,MAAA,OAAO,MAAA,CAAO,MAAM,CAAA,CAAE,OAAA,EAAS,CAAA,GAAI,EAAA,GAAK,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAAA,IACvD;AAAA,IACA,KAAK,UAAA;AACH,MAAA,OAAO,UAAA,CAAW,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC/B,KAAK,OAAA;AACH,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC5B,KAAK,SAAA;AACH,MAAA,OAAO,SAAA,CAAU,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC9B,KAAK,SAAA;AACH,MAAA,OAAO,MAAM,KAAA,GAAQ,QAAA;AAAA,IACvB,KAAK,QAAA;AAAA,IACL;AACE,MAAA,OAAO,OAAO,GAAG,CAAA;AAAA;AAEvB;;;ACvEO,SAAS,oBAAA,CAAqB,MAAqB,GAAA,EAAiD;AACzG,EAAA,MAAM,WAA8B,EAAC;AACrC,EAAA,IAAA,CAAK,QAAQ,CAAA,GAAA,KAAO;AAClB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,IAAO,GAAA,GAAM,IAAI,GAAA,CAAI,GAAG,IAAI,GAAA,CAAI,OAAA;AAClD,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AAC3C,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,GAAA,CAAI,IAAA,EAAM,KAAK,CAAA;AAC7C,IAAA,IAAI,SAAA,KAAc,EAAA,EAAI,QAAA,CAAS,GAAA,CAAI,GAAG,CAAA,GAAI,SAAA;AAAA,EAC5C,CAAC,CAAA;AACD,EAAA,OAAO,QAAA;AACT;AAGA,eAAsB,wBAAA,CACpB,IAAA,EACA,OAAA,EACA,QAAA,EACA,GAAA,EAC4B;AAC5B,EAAA,MAAM,IAAA,GAAOA,qCAAmB,IAAI,CAAA;AACpC,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG,OAAO,EAAC;AAE/B,EAAA,MAAM,GAAA,GAAM,MAAM,QAAA,CAAS,IAAA,EAAM,GAAG,CAAA;AACpC,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,CAAA,GAAA,KAAO,CAAC,GAAA,CAAI,GAAA,EAAK,GAAG,CAAC,CAAC,CAAA;AACxD,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,GAAA,KAAO,KAAA,CAAM,IAAI,GAAG,CAAA,IAAK,EAAE,GAAA,EAAK,OAAO,GAAA,EAAK,IAAA,EAAM,QAAA,EAAmB,KAAA,EAAO,UAAU,CAAA;AAC5G,EAAA,OAAO,oBAAA,CAAqB,MAAM,GAAG,CAAA;AACvC","file":"chunk-QJ5W5EED.cjs","sourcesContent":["import type { VariableType } from './types';\n\nconst brl = new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' });\nconst decimal = new Intl.NumberFormat('pt-BR');\nconst date = new Intl.DateTimeFormat('pt-BR');\n\nfunction toNumber(value: unknown): number | null {\n const n = typeof value === 'string' ? Number(value) : (value as number);\n return typeof n === 'number' && Number.isFinite(n) ? n : null;\n}\n\n// `YYYY-MM-DD` e o timestamp de meia-noite UTC que o Sequelize serializa para colunas DATE.\nconst DATE_ONLY = /^(\\d{4})-(\\d{2})-(\\d{2})(?:T00:00(?::00(?:\\.000)?)?Z)?$/;\n\nconst DIGITS = /\\D/g;\nconst CPF = /^(\\d{3})(\\d{3})(\\d{3})(\\d{2})$/;\nconst CNPJ = /^(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})$/;\nconst PHONE = /^(?:55)?(\\d{2})(\\d{4,5})(\\d{4})$/;\nconst ZIPCODE = /^(\\d{5})(\\d{3})$/;\n\n// Só-data é parseada como data LOCAL — new Date(string) seria UTC e voltaria um dia (docs/variables.md).\nfunction toDate(raw: unknown): Date {\n if (raw instanceof Date) return raw;\n const match = DATE_ONLY.exec(String(raw));\n if (match) return new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n return new Date(raw as string);\n}\n\n// Documento e telefone chegam crus do banco, com ou sem máscara. Sem match, devolve o\n// valor original — melhor exibir o cru do que esconder o dado.\nfunction toDocument(raw: string): string {\n const digits = raw.replace(DIGITS, '');\n const cpf = CPF.exec(digits);\n if (cpf) return `${cpf[1]}.${cpf[2]}.${cpf[3]}-${cpf[4]}`;\n const cnpj = CNPJ.exec(digits);\n if (cnpj) return `${cnpj[1]}.${cnpj[2]}.${cnpj[3]}/${cnpj[4]}-${cnpj[5]}`;\n return raw;\n}\n\n// DDI 55 é descartado na máscara: telefone gravado com e sem DDI aparece igual.\nfunction toPhone(raw: string): string {\n const match = PHONE.exec(raw.replace(DIGITS, ''));\n return match ? `(${match[1]}) ${match[2]}-${match[3]}` : raw;\n}\n\nfunction toZipcode(raw: string): string {\n const match = ZIPCODE.exec(raw.replace(DIGITS, ''));\n return match ? `${match[1]}-${match[2]}` : raw;\n}\n\n/** Format a raw resolved value by its catalog type, pt-BR. preview == PDF. */\nexport function formatValue(type: VariableType, raw: unknown): string {\n if (raw === null || raw === undefined) return '';\n\n switch (type) {\n case 'currency': {\n const n = toNumber(raw);\n return n === null ? '' : brl.format(n);\n }\n case 'number': {\n const n = toNumber(raw);\n return n === null ? '' : decimal.format(n);\n }\n case 'date': {\n const d = toDate(raw);\n return Number.isNaN(d.getTime()) ? '' : date.format(d);\n }\n case 'document':\n return toDocument(String(raw));\n case 'phone':\n return toPhone(String(raw));\n case 'zipcode':\n return toZipcode(String(raw));\n case 'boolean':\n return raw ? 'Sim' : 'Não';\n case 'string':\n default:\n return String(raw);\n }\n}\n","import { extractBindingKeys } from './bindings';\nimport { formatValue } from './format';\nimport type { ResolvedVariables, VariableContext, VariableDef, VariableResolver } from './types';\n\n/**\n * Formata valores crus por tipo do catálogo. Keys sem valor ficam FORA do mapa\n * (`undefined` = \"não resolvida\" — ver docs/variables.md).\n */\nexport function formatResolvedValues(defs: VariableDef[], raw: Record<string, unknown>): ResolvedVariables {\n const resolved: ResolvedVariables = {};\n defs.forEach(def => {\n const value = def.key in raw ? raw[def.key] : def.default;\n if (value === undefined || value === null) return;\n const formatted = formatValue(def.type, value);\n if (formatted !== '') resolved[def.key] = formatted;\n });\n return resolved;\n}\n\n/** Resolve os bindings de `node` em strings pt-BR formatadas (preview == PDF). */\nexport async function resolveDocumentVariables(\n node: unknown,\n catalog: VariableDef[],\n resolver: VariableResolver,\n ctx: VariableContext\n): Promise<ResolvedVariables> {\n const keys = extractBindingKeys(node);\n if (keys.length === 0) return {};\n\n const raw = await resolver(keys, ctx);\n const byKey = new Map(catalog.map(def => [def.key, def]));\n const defs = keys.map(key => byKey.get(key) ?? { key, label: key, type: 'string' as const, model: 'outros' });\n return formatResolvedValues(defs, raw);\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkERKU5FDV_cjs = require('./chunk-ERKU5FDV.cjs');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunkQJ5W5EED_cjs = require('./chunk-QJ5W5EED.cjs');
|
|
5
|
+
var chunkSP5LCPDG_cjs = require('./chunk-SP5LCPDG.cjs');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var core = require('@puckeditor/core');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -26,12 +26,12 @@ function DocumentRenderer({
|
|
|
26
26
|
const config = react.useMemo(() => chunkERKU5FDV_cjs.buildConfig(registry), [registry]);
|
|
27
27
|
const [resolved, setResolved] = react.useState(resolvedVariables ?? {});
|
|
28
28
|
chunkERKU5FDV_cjs.useDocumentFont(theme.documentFont);
|
|
29
|
-
const keysHash = react.useMemo(() =>
|
|
29
|
+
const keysHash = react.useMemo(() => chunkSP5LCPDG_cjs.extractBindingKeys(data).sort().join("|"), [data]);
|
|
30
30
|
const ctxHash = JSON.stringify(ctx);
|
|
31
31
|
react.useEffect(() => {
|
|
32
32
|
if (resolvedVariables || !resolver || keysHash === "") return void 0;
|
|
33
33
|
let active = true;
|
|
34
|
-
|
|
34
|
+
chunkQJ5W5EED_cjs.resolveDocumentVariables(data, catalog, resolver, ctx).then((next) => {
|
|
35
35
|
if (active) setResolved(next);
|
|
36
36
|
});
|
|
37
37
|
return () => {
|
|
@@ -39,7 +39,7 @@ function DocumentRenderer({
|
|
|
39
39
|
};
|
|
40
40
|
}, [resolvedVariables, resolver, catalog, keysHash, ctxHash]);
|
|
41
41
|
const effective = resolvedVariables ?? resolved;
|
|
42
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkERKU5FDV_cjs.DocumentThemeProvider, { theme, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
42
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkERKU5FDV_cjs.DocumentThemeProvider, { theme, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSP5LCPDG_cjs.CatalogProvider, { catalog, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSP5LCPDG_cjs.ResolvedProvider, { resolved: effective, unresolvedDisplay, children: /* @__PURE__ */ jsxRuntime.jsx(core.Render, { config, data, metadata }) }) }) });
|
|
43
43
|
}
|
|
44
44
|
var CoverEditContext = react.createContext({ editable: false });
|
|
45
45
|
function CoverField({ name, value, placeholder, as: Tag = "span", className }) {
|
|
@@ -840,5 +840,5 @@ exports.HEADER_INFO_ORDER = HEADER_INFO_ORDER;
|
|
|
840
840
|
exports.HeaderBar = HeaderBar;
|
|
841
841
|
exports.resolveCoverAccent = resolveCoverAccent;
|
|
842
842
|
exports.resolveCoverColors = resolveCoverColors;
|
|
843
|
-
//# sourceMappingURL=chunk-
|
|
844
|
-
//# sourceMappingURL=chunk-
|
|
843
|
+
//# sourceMappingURL=chunk-RO3Y2MSU.cjs.map
|
|
844
|
+
//# sourceMappingURL=chunk-RO3Y2MSU.cjs.map
|