vobi_document 1.0.2 → 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.
Files changed (96) hide show
  1. package/README.md +23 -6
  2. package/dist/blocks.cjs +108 -0
  3. package/dist/blocks.cjs.map +1 -0
  4. package/dist/blocks.d.cts +214 -0
  5. package/dist/blocks.d.ts +214 -0
  6. package/dist/blocks.js +7 -0
  7. package/dist/blocks.js.map +1 -0
  8. package/dist/catalogContext-DenbX-OW.d.cts +15 -0
  9. package/dist/catalogContext-HGMU-w_4.d.ts +15 -0
  10. package/dist/chunk-26DSIOEY.cjs +68 -0
  11. package/dist/chunk-26DSIOEY.cjs.map +1 -0
  12. package/dist/chunk-3FTKM37U.cjs +1354 -0
  13. package/dist/chunk-3FTKM37U.cjs.map +1 -0
  14. package/dist/chunk-CZB7F2LA.js +90 -0
  15. package/dist/chunk-CZB7F2LA.js.map +1 -0
  16. package/dist/chunk-ERKU5FDV.cjs +407 -0
  17. package/dist/chunk-ERKU5FDV.cjs.map +1 -0
  18. package/dist/chunk-FKX46GKE.cjs +36 -0
  19. package/dist/chunk-FKX46GKE.cjs.map +1 -0
  20. package/dist/chunk-GR76U6FP.cjs +194 -0
  21. package/dist/chunk-GR76U6FP.cjs.map +1 -0
  22. package/dist/chunk-I22MGPXO.cjs +117 -0
  23. package/dist/chunk-I22MGPXO.cjs.map +1 -0
  24. package/dist/chunk-JYSA6IM5.js +1327 -0
  25. package/dist/chunk-JYSA6IM5.js.map +1 -0
  26. package/dist/chunk-L5FXGEKX.cjs +114 -0
  27. package/dist/chunk-L5FXGEKX.cjs.map +1 -0
  28. package/dist/chunk-LNBAFOVK.cjs +14 -0
  29. package/dist/chunk-LNBAFOVK.cjs.map +1 -0
  30. package/dist/chunk-M6FQVH76.js +824 -0
  31. package/dist/chunk-M6FQVH76.js.map +1 -0
  32. package/dist/chunk-MUSSJOOA.js +109 -0
  33. package/dist/chunk-MUSSJOOA.js.map +1 -0
  34. package/dist/chunk-N3IDPT3B.js +182 -0
  35. package/dist/chunk-N3IDPT3B.js.map +1 -0
  36. package/dist/chunk-OJZJJEJX.js +904 -0
  37. package/dist/chunk-OJZJJEJX.js.map +1 -0
  38. package/dist/chunk-PLQNNXS2.js +382 -0
  39. package/dist/chunk-PLQNNXS2.js.map +1 -0
  40. package/dist/chunk-QJ5W5EED.cjs +94 -0
  41. package/dist/chunk-QJ5W5EED.cjs.map +1 -0
  42. package/dist/chunk-QYBWIJXZ.js +98 -0
  43. package/dist/chunk-QYBWIJXZ.js.map +1 -0
  44. package/dist/chunk-RO3Y2MSU.cjs +844 -0
  45. package/dist/chunk-RO3Y2MSU.cjs.map +1 -0
  46. package/dist/chunk-RZOR3HOA.cjs +933 -0
  47. package/dist/chunk-RZOR3HOA.cjs.map +1 -0
  48. package/dist/chunk-SOIYSSU3.js +108 -0
  49. package/dist/chunk-SOIYSSU3.js.map +1 -0
  50. package/dist/chunk-SP5LCPDG.cjs +119 -0
  51. package/dist/chunk-SP5LCPDG.cjs.map +1 -0
  52. package/dist/chunk-W52ULJCW.js +61 -0
  53. package/dist/chunk-W52ULJCW.js.map +1 -0
  54. package/dist/chunk-ZOJBDFKU.js +12 -0
  55. package/dist/chunk-ZOJBDFKU.js.map +1 -0
  56. package/dist/editor.cjs +60 -0
  57. package/dist/editor.cjs.map +1 -0
  58. package/dist/editor.d.cts +190 -0
  59. package/dist/editor.d.ts +190 -0
  60. package/dist/editor.js +7 -0
  61. package/dist/editor.js.map +1 -0
  62. package/dist/index.cjs +436 -3753
  63. package/dist/index.cjs.map +1 -1
  64. package/dist/index.d.cts +72 -7892
  65. package/dist/index.d.ts +72 -7892
  66. package/dist/index.js +22 -3662
  67. package/dist/index.js.map +1 -1
  68. package/dist/messages-Bi0JxNIH.d.cts +23 -0
  69. package/dist/messages-Bi0JxNIH.d.ts +23 -0
  70. package/dist/print.cjs +354 -0
  71. package/dist/print.cjs.map +1 -0
  72. package/dist/print.d.cts +43 -0
  73. package/dist/print.d.ts +43 -0
  74. package/dist/print.js +336 -0
  75. package/dist/print.js.map +1 -0
  76. package/dist/puck.cjs +8 -8
  77. package/dist/puck.cjs.map +1 -1
  78. package/dist/render.cjs +72 -0
  79. package/dist/render.cjs.map +1 -0
  80. package/dist/render.d.cts +93 -0
  81. package/dist/render.d.ts +93 -0
  82. package/dist/render.js +7 -0
  83. package/dist/render.js.map +1 -0
  84. package/dist/theme-BuEFpQeZ.d.cts +112 -0
  85. package/dist/theme-BuEFpQeZ.d.ts +112 -0
  86. package/dist/types-BgIugNWW.d.cts +25 -0
  87. package/dist/types-BgIugNWW.d.ts +25 -0
  88. package/dist/types-CvKSS1Sy.d.cts +38 -0
  89. package/dist/types-CvKSS1Sy.d.ts +38 -0
  90. package/dist/variables.cjs +111 -0
  91. package/dist/variables.cjs.map +1 -0
  92. package/dist/variables.d.cts +106 -0
  93. package/dist/variables.d.ts +106 -0
  94. package/dist/variables.js +6 -0
  95. package/dist/variables.js.map +1 -0
  96. package/package.json +39 -8
@@ -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","CHIP_CLASS","INVALID_CHIP_CLASS","EMPTY_CHIP_CLASS","useResolvedVariables","useCatalog","useUnresolvedDisplay","jsx","resolveVariableHtml","TextIcon","z","HeadingIcon","ListIcon","QuoteIcon","ButtonIcon","DividerIcon","SpacerIcon","ImageIcon","jsxs","ImageGridIcon","TwoColumnsIcon","slotSchema","ImageTextIcon","IconTextIcon","Grid","TableIcon","PageBreakIcon","devWarn"],"mappings":"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","file":"chunk-RZOR3HOA.cjs","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"]}
@@ -0,0 +1,108 @@
1
+ import { createContext, useMemo, useContext } from 'react';
2
+ import { jsx } from 'react/jsx-runtime';
3
+
4
+ // src/variables/bindings.ts
5
+ var CHIP_ATTR = "data-var-key";
6
+ function extractBindingKeys(node) {
7
+ const keys = /* @__PURE__ */ new Set();
8
+ const walk = (value) => {
9
+ if (typeof value === "string") {
10
+ if (value.indexOf(CHIP_ATTR) < 0) return;
11
+ const regex = new RegExp(`${CHIP_ATTR}="([^"]+)"`, "g");
12
+ let match = regex.exec(value);
13
+ while (match) {
14
+ keys.add(match[1]);
15
+ match = regex.exec(value);
16
+ }
17
+ return;
18
+ }
19
+ if (Array.isArray(value)) {
20
+ value.forEach(walk);
21
+ return;
22
+ }
23
+ if (typeof value === "object" && value !== null) {
24
+ Object.values(value).forEach(walk);
25
+ }
26
+ };
27
+ walk(node);
28
+ return [...keys];
29
+ }
30
+ var chipSpanRegex = () => /<span([^>]*\bdata-var-key="([^"]+)"[^>]*)>([\s\S]*?)<\/span>/g;
31
+ var ENTITIES = { "&nbsp;": " ", "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"' };
32
+ var chipText = (inner) => inner.replace(/<[^>]*>/g, "").replace(/&nbsp;|&amp;|&lt;|&gt;|&quot;/g, (entity) => ENTITIES[entity]).replace(/^\s*⚠\s*/, "").trim();
33
+ function extractBindingLabels(node) {
34
+ const labels = {};
35
+ const walk = (value) => {
36
+ if (typeof value === "string") {
37
+ if (value.indexOf(CHIP_ATTR) < 0) return;
38
+ const regex = chipSpanRegex();
39
+ let match = regex.exec(value);
40
+ while (match) {
41
+ const [, , key, inner] = match;
42
+ const text = chipText(inner);
43
+ if (text && !labels[key]) labels[key] = text;
44
+ match = regex.exec(value);
45
+ }
46
+ return;
47
+ }
48
+ if (Array.isArray(value)) {
49
+ value.forEach(walk);
50
+ return;
51
+ }
52
+ if (typeof value === "object" && value !== null) {
53
+ Object.values(value).forEach(walk);
54
+ }
55
+ };
56
+ walk(node);
57
+ return labels;
58
+ }
59
+ function findInvalidBindings(node, catalog) {
60
+ const known = new Set(catalog.map((def) => def.key));
61
+ return extractBindingKeys(node).filter((key) => !known.has(key));
62
+ }
63
+ var CatalogContext = createContext({ catalog: [], translator: {} });
64
+ function CatalogProvider({
65
+ catalog = [],
66
+ translator = {},
67
+ children
68
+ }) {
69
+ const value = useMemo(() => ({ catalog, translator }), [catalog, translator]);
70
+ return /* @__PURE__ */ jsx(CatalogContext.Provider, { value, children });
71
+ }
72
+ function useCatalog() {
73
+ return useContext(CatalogContext).catalog;
74
+ }
75
+ function useTranslator() {
76
+ return useContext(CatalogContext).translator;
77
+ }
78
+ var noop = () => Promise.resolve();
79
+ var ResolvedContext = createContext({
80
+ resolved: {},
81
+ ensureResolved: noop,
82
+ unresolvedDisplay: "placeholder"
83
+ });
84
+ function ResolvedProvider({
85
+ resolved = {},
86
+ ensureResolved = noop,
87
+ unresolvedDisplay = "placeholder",
88
+ children
89
+ }) {
90
+ const value = useMemo(
91
+ () => ({ resolved, ensureResolved, unresolvedDisplay }),
92
+ [resolved, ensureResolved, unresolvedDisplay]
93
+ );
94
+ return /* @__PURE__ */ jsx(ResolvedContext.Provider, { value, children });
95
+ }
96
+ function useResolvedVariables() {
97
+ return useContext(ResolvedContext).resolved;
98
+ }
99
+ function useEnsureResolved() {
100
+ return useContext(ResolvedContext).ensureResolved;
101
+ }
102
+ function useUnresolvedDisplay() {
103
+ return useContext(ResolvedContext).unresolvedDisplay;
104
+ }
105
+
106
+ export { CatalogProvider, ResolvedProvider, extractBindingKeys, extractBindingLabels, findInvalidBindings, useCatalog, useEnsureResolved, useResolvedVariables, useTranslator, useUnresolvedDisplay };
107
+ //# sourceMappingURL=chunk-SOIYSSU3.js.map
108
+ //# sourceMappingURL=chunk-SOIYSSU3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/variables/bindings.ts","../src/variables/catalogContext.tsx","../src/variables/resolvedContext.tsx"],"names":["createContext","useMemo","jsx","useContext"],"mappings":"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","file":"chunk-SOIYSSU3.js","sourcesContent":["import type { VariableDef } from './types';\n\nconst CHIP_ATTR = 'data-var-key';\n\n/** Walk any document structure and collect every distinct variable key. */\nexport function extractBindingKeys(node: unknown): string[] {\n const keys = new Set<string>();\n\n const walk = (value: unknown): void => {\n if (typeof value === 'string') {\n if (value.indexOf(CHIP_ATTR) < 0) return;\n const regex = new RegExp(`${CHIP_ATTR}=\"([^\"]+)\"`, 'g');\n let match = regex.exec(value);\n while (match) {\n keys.add(match[1]);\n match = regex.exec(value);\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(walk);\n return;\n }\n if (typeof value === 'object' && value !== null) {\n Object.values(value).forEach(walk);\n }\n };\n\n walk(node);\n return [...keys];\n}\n\nconst chipSpanRegex = () => /<span([^>]*\\bdata-var-key=\"([^\"]+)\"[^>]*)>([\\s\\S]*?)<\\/span>/g;\n\nconst ENTITIES: Record<string, string> = { '&nbsp;': ' ', '&amp;': '&', '&lt;': '<', '&gt;': '>', '&quot;': '\"' };\n\nconst chipText = (inner: string): string =>\n inner\n .replace(/<[^>]*>/g, '')\n .replace(/&nbsp;|&amp;|&lt;|&gt;|&quot;/g, entity => ENTITIES[entity])\n .replace(/^\\s*⚠\\s*/, '')\n .trim();\n\nexport function extractBindingLabels(node: unknown): Record<string, string> {\n const labels: Record<string, string> = {};\n\n const walk = (value: unknown): void => {\n if (typeof value === 'string') {\n if (value.indexOf(CHIP_ATTR) < 0) return;\n const regex = chipSpanRegex();\n let match = regex.exec(value);\n while (match) {\n const [, , key, inner] = match;\n const text = chipText(inner);\n if (text && !labels[key]) labels[key] = text;\n match = regex.exec(value);\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(walk);\n return;\n }\n if (typeof value === 'object' && value !== null) {\n Object.values(value).forEach(walk);\n }\n };\n\n walk(node);\n return labels;\n}\n\n/** Variable keys present in the document but absent from the catalog (orphans). */\nexport function findInvalidBindings(node: unknown, catalog: VariableDef[]): string[] {\n const known = new Set(catalog.map(def => def.key));\n return extractBindingKeys(node).filter(key => !known.has(key));\n}\n","import { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport type { VariableDef } from './types';\n\n/** Mapa model → label amigável pt-BR (ex: `{ customer: 'Cliente' }`). */\nexport type Translator = Record<string, string>;\n\ntype CatalogValue = { catalog: VariableDef[]; translator: Translator };\n\nconst CatalogContext = createContext<CatalogValue>({ catalog: [], translator: {} });\n\nexport function CatalogProvider({\n catalog = [],\n translator = {},\n children\n}: {\n catalog?: VariableDef[];\n translator?: Translator;\n children: ReactNode;\n}) {\n const value = useMemo(() => ({ catalog, translator }), [catalog, translator]);\n return <CatalogContext.Provider value={value}>{children}</CatalogContext.Provider>;\n}\n\nexport function useCatalog(): VariableDef[] {\n return useContext(CatalogContext).catalog;\n}\n\nexport function useTranslator(): Translator {\n return useContext(CatalogContext).translator;\n}\n","import { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport type { ResolvedVariables, UnresolvedDisplay } from './types';\n\ntype EnsureResolved = (keys: string[]) => Promise<void>;\ntype ResolvedValue = {\n resolved: ResolvedVariables;\n ensureResolved: EnsureResolved;\n unresolvedDisplay: UnresolvedDisplay;\n};\n\nconst noop: EnsureResolved = () => Promise.resolve();\n\nconst ResolvedContext = createContext<ResolvedValue>({\n resolved: {},\n ensureResolved: noop,\n unresolvedDisplay: 'placeholder'\n});\n\nexport function ResolvedProvider({\n resolved = {},\n ensureResolved = noop,\n unresolvedDisplay = 'placeholder',\n children\n}: {\n resolved?: ResolvedVariables;\n ensureResolved?: EnsureResolved;\n unresolvedDisplay?: UnresolvedDisplay;\n children: ReactNode;\n}) {\n const value = useMemo(\n () => ({ resolved, ensureResolved, unresolvedDisplay }),\n [resolved, ensureResolved, unresolvedDisplay]\n );\n return <ResolvedContext.Provider value={value}>{children}</ResolvedContext.Provider>;\n}\n\nexport function useResolvedVariables(): ResolvedVariables {\n return useContext(ResolvedContext).resolved;\n}\n\nexport function useEnsureResolved(): EnsureResolved {\n return useContext(ResolvedContext).ensureResolved;\n}\n\nexport function useUnresolvedDisplay(): UnresolvedDisplay {\n return useContext(ResolvedContext).unresolvedDisplay;\n}\n"]}
@@ -0,0 +1,119 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ // src/variables/bindings.ts
7
+ var CHIP_ATTR = "data-var-key";
8
+ function extractBindingKeys(node) {
9
+ const keys = /* @__PURE__ */ new Set();
10
+ const walk = (value) => {
11
+ if (typeof value === "string") {
12
+ if (value.indexOf(CHIP_ATTR) < 0) return;
13
+ const regex = new RegExp(`${CHIP_ATTR}="([^"]+)"`, "g");
14
+ let match = regex.exec(value);
15
+ while (match) {
16
+ keys.add(match[1]);
17
+ match = regex.exec(value);
18
+ }
19
+ return;
20
+ }
21
+ if (Array.isArray(value)) {
22
+ value.forEach(walk);
23
+ return;
24
+ }
25
+ if (typeof value === "object" && value !== null) {
26
+ Object.values(value).forEach(walk);
27
+ }
28
+ };
29
+ walk(node);
30
+ return [...keys];
31
+ }
32
+ var chipSpanRegex = () => /<span([^>]*\bdata-var-key="([^"]+)"[^>]*)>([\s\S]*?)<\/span>/g;
33
+ var ENTITIES = { "&nbsp;": " ", "&amp;": "&", "&lt;": "<", "&gt;": ">", "&quot;": '"' };
34
+ var chipText = (inner) => inner.replace(/<[^>]*>/g, "").replace(/&nbsp;|&amp;|&lt;|&gt;|&quot;/g, (entity) => ENTITIES[entity]).replace(/^\s*⚠\s*/, "").trim();
35
+ function extractBindingLabels(node) {
36
+ const labels = {};
37
+ const walk = (value) => {
38
+ if (typeof value === "string") {
39
+ if (value.indexOf(CHIP_ATTR) < 0) return;
40
+ const regex = chipSpanRegex();
41
+ let match = regex.exec(value);
42
+ while (match) {
43
+ const [, , key, inner] = match;
44
+ const text = chipText(inner);
45
+ if (text && !labels[key]) labels[key] = text;
46
+ match = regex.exec(value);
47
+ }
48
+ return;
49
+ }
50
+ if (Array.isArray(value)) {
51
+ value.forEach(walk);
52
+ return;
53
+ }
54
+ if (typeof value === "object" && value !== null) {
55
+ Object.values(value).forEach(walk);
56
+ }
57
+ };
58
+ walk(node);
59
+ return labels;
60
+ }
61
+ function findInvalidBindings(node, catalog) {
62
+ const known = new Set(catalog.map((def) => def.key));
63
+ return extractBindingKeys(node).filter((key) => !known.has(key));
64
+ }
65
+ var CatalogContext = react.createContext({ catalog: [], translator: {} });
66
+ function CatalogProvider({
67
+ catalog = [],
68
+ translator = {},
69
+ children
70
+ }) {
71
+ const value = react.useMemo(() => ({ catalog, translator }), [catalog, translator]);
72
+ return /* @__PURE__ */ jsxRuntime.jsx(CatalogContext.Provider, { value, children });
73
+ }
74
+ function useCatalog() {
75
+ return react.useContext(CatalogContext).catalog;
76
+ }
77
+ function useTranslator() {
78
+ return react.useContext(CatalogContext).translator;
79
+ }
80
+ var noop = () => Promise.resolve();
81
+ var ResolvedContext = react.createContext({
82
+ resolved: {},
83
+ ensureResolved: noop,
84
+ unresolvedDisplay: "placeholder"
85
+ });
86
+ function ResolvedProvider({
87
+ resolved = {},
88
+ ensureResolved = noop,
89
+ unresolvedDisplay = "placeholder",
90
+ children
91
+ }) {
92
+ const value = react.useMemo(
93
+ () => ({ resolved, ensureResolved, unresolvedDisplay }),
94
+ [resolved, ensureResolved, unresolvedDisplay]
95
+ );
96
+ return /* @__PURE__ */ jsxRuntime.jsx(ResolvedContext.Provider, { value, children });
97
+ }
98
+ function useResolvedVariables() {
99
+ return react.useContext(ResolvedContext).resolved;
100
+ }
101
+ function useEnsureResolved() {
102
+ return react.useContext(ResolvedContext).ensureResolved;
103
+ }
104
+ function useUnresolvedDisplay() {
105
+ return react.useContext(ResolvedContext).unresolvedDisplay;
106
+ }
107
+
108
+ exports.CatalogProvider = CatalogProvider;
109
+ exports.ResolvedProvider = ResolvedProvider;
110
+ exports.extractBindingKeys = extractBindingKeys;
111
+ exports.extractBindingLabels = extractBindingLabels;
112
+ exports.findInvalidBindings = findInvalidBindings;
113
+ exports.useCatalog = useCatalog;
114
+ exports.useEnsureResolved = useEnsureResolved;
115
+ exports.useResolvedVariables = useResolvedVariables;
116
+ exports.useTranslator = useTranslator;
117
+ exports.useUnresolvedDisplay = useUnresolvedDisplay;
118
+ //# sourceMappingURL=chunk-SP5LCPDG.cjs.map
119
+ //# sourceMappingURL=chunk-SP5LCPDG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/variables/bindings.ts","../src/variables/catalogContext.tsx","../src/variables/resolvedContext.tsx"],"names":["createContext","useMemo","jsx","useContext"],"mappings":"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","file":"chunk-SP5LCPDG.cjs","sourcesContent":["import type { VariableDef } from './types';\n\nconst CHIP_ATTR = 'data-var-key';\n\n/** Walk any document structure and collect every distinct variable key. */\nexport function extractBindingKeys(node: unknown): string[] {\n const keys = new Set<string>();\n\n const walk = (value: unknown): void => {\n if (typeof value === 'string') {\n if (value.indexOf(CHIP_ATTR) < 0) return;\n const regex = new RegExp(`${CHIP_ATTR}=\"([^\"]+)\"`, 'g');\n let match = regex.exec(value);\n while (match) {\n keys.add(match[1]);\n match = regex.exec(value);\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(walk);\n return;\n }\n if (typeof value === 'object' && value !== null) {\n Object.values(value).forEach(walk);\n }\n };\n\n walk(node);\n return [...keys];\n}\n\nconst chipSpanRegex = () => /<span([^>]*\\bdata-var-key=\"([^\"]+)\"[^>]*)>([\\s\\S]*?)<\\/span>/g;\n\nconst ENTITIES: Record<string, string> = { '&nbsp;': ' ', '&amp;': '&', '&lt;': '<', '&gt;': '>', '&quot;': '\"' };\n\nconst chipText = (inner: string): string =>\n inner\n .replace(/<[^>]*>/g, '')\n .replace(/&nbsp;|&amp;|&lt;|&gt;|&quot;/g, entity => ENTITIES[entity])\n .replace(/^\\s*⚠\\s*/, '')\n .trim();\n\nexport function extractBindingLabels(node: unknown): Record<string, string> {\n const labels: Record<string, string> = {};\n\n const walk = (value: unknown): void => {\n if (typeof value === 'string') {\n if (value.indexOf(CHIP_ATTR) < 0) return;\n const regex = chipSpanRegex();\n let match = regex.exec(value);\n while (match) {\n const [, , key, inner] = match;\n const text = chipText(inner);\n if (text && !labels[key]) labels[key] = text;\n match = regex.exec(value);\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach(walk);\n return;\n }\n if (typeof value === 'object' && value !== null) {\n Object.values(value).forEach(walk);\n }\n };\n\n walk(node);\n return labels;\n}\n\n/** Variable keys present in the document but absent from the catalog (orphans). */\nexport function findInvalidBindings(node: unknown, catalog: VariableDef[]): string[] {\n const known = new Set(catalog.map(def => def.key));\n return extractBindingKeys(node).filter(key => !known.has(key));\n}\n","import { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport type { VariableDef } from './types';\n\n/** Mapa model → label amigável pt-BR (ex: `{ customer: 'Cliente' }`). */\nexport type Translator = Record<string, string>;\n\ntype CatalogValue = { catalog: VariableDef[]; translator: Translator };\n\nconst CatalogContext = createContext<CatalogValue>({ catalog: [], translator: {} });\n\nexport function CatalogProvider({\n catalog = [],\n translator = {},\n children\n}: {\n catalog?: VariableDef[];\n translator?: Translator;\n children: ReactNode;\n}) {\n const value = useMemo(() => ({ catalog, translator }), [catalog, translator]);\n return <CatalogContext.Provider value={value}>{children}</CatalogContext.Provider>;\n}\n\nexport function useCatalog(): VariableDef[] {\n return useContext(CatalogContext).catalog;\n}\n\nexport function useTranslator(): Translator {\n return useContext(CatalogContext).translator;\n}\n","import { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport type { ResolvedVariables, UnresolvedDisplay } from './types';\n\ntype EnsureResolved = (keys: string[]) => Promise<void>;\ntype ResolvedValue = {\n resolved: ResolvedVariables;\n ensureResolved: EnsureResolved;\n unresolvedDisplay: UnresolvedDisplay;\n};\n\nconst noop: EnsureResolved = () => Promise.resolve();\n\nconst ResolvedContext = createContext<ResolvedValue>({\n resolved: {},\n ensureResolved: noop,\n unresolvedDisplay: 'placeholder'\n});\n\nexport function ResolvedProvider({\n resolved = {},\n ensureResolved = noop,\n unresolvedDisplay = 'placeholder',\n children\n}: {\n resolved?: ResolvedVariables;\n ensureResolved?: EnsureResolved;\n unresolvedDisplay?: UnresolvedDisplay;\n children: ReactNode;\n}) {\n const value = useMemo(\n () => ({ resolved, ensureResolved, unresolvedDisplay }),\n [resolved, ensureResolved, unresolvedDisplay]\n );\n return <ResolvedContext.Provider value={value}>{children}</ResolvedContext.Provider>;\n}\n\nexport function useResolvedVariables(): ResolvedVariables {\n return useContext(ResolvedContext).resolved;\n}\n\nexport function useEnsureResolved(): EnsureResolved {\n return useContext(ResolvedContext).ensureResolved;\n}\n\nexport function useUnresolvedDisplay(): UnresolvedDisplay {\n return useContext(ResolvedContext).unresolvedDisplay;\n}\n"]}
@@ -0,0 +1,61 @@
1
+ import { COVER_TEMPLATES, resolveCoverColors, CoverEditContext } from './chunk-M6FQVH76.js';
2
+ import { useRef, useEffect, useMemo } from 'react';
3
+ import { registerOverlayPortal } from '@puckeditor/core';
4
+ import styled from 'styled-components';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var A4Box = styled.div`
8
+ aspect-ratio: 210 / 297;
9
+ width: 100%;
10
+ overflow: hidden;
11
+ container-type: inline-size;
12
+ `;
13
+ function CoverEditable({
14
+ templateId,
15
+ fields,
16
+ accent,
17
+ theme,
18
+ textColor,
19
+ bgColor,
20
+ selected,
21
+ onFieldsChange,
22
+ onImagePick
23
+ }) {
24
+ const Template = COVER_TEMPLATES[templateId] ?? COVER_TEMPLATES["model-1"];
25
+ const resolved = resolveCoverColors(templateId, { accent, textColor, bgColor }, theme);
26
+ const boxRef = useRef(null);
27
+ useEffect(() => {
28
+ const el = boxRef.current;
29
+ if (!el || !selected) return void 0;
30
+ try {
31
+ return registerOverlayPortal(el, { disableDrag: true });
32
+ } catch {
33
+ return void 0;
34
+ }
35
+ }, [selected]);
36
+ const contextValue = useMemo(
37
+ () => ({
38
+ editable: true,
39
+ onFieldChange: (name, value) => onFieldsChange({ ...fields, [name]: value }),
40
+ onImagePick
41
+ }),
42
+ [fields, onFieldsChange, onImagePick]
43
+ );
44
+ return /* @__PURE__ */ jsx(CoverEditContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(A4Box, { ref: boxRef, children: /* @__PURE__ */ jsx(Template, { fields, theme, ...resolved }) }) });
45
+ }
46
+ function CoverTemplateStatic({
47
+ templateId,
48
+ fields,
49
+ accent,
50
+ theme,
51
+ textColor,
52
+ bgColor
53
+ }) {
54
+ const Template = COVER_TEMPLATES[templateId] ?? COVER_TEMPLATES["model-1"];
55
+ const resolved = resolveCoverColors(templateId, { accent, textColor, bgColor }, theme);
56
+ return /* @__PURE__ */ jsx(A4Box, { children: /* @__PURE__ */ jsx(Template, { fields, theme, ...resolved }) });
57
+ }
58
+
59
+ export { CoverEditable, CoverTemplateStatic };
60
+ //# sourceMappingURL=chunk-W52ULJCW.js.map
61
+ //# sourceMappingURL=chunk-W52ULJCW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/render/chrome/covers/CoverEditable.tsx","../src/render/chrome/covers/CoverTemplateStatic.tsx"],"names":["jsx"],"mappings":";;;;;;AASO,IAAM,QAAQ,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAmBrB,SAAS,aAAA,CAAc;AAAA,EAC5B,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA,EAAuB;AACrB,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,UAAU,CAAA,IAAK,gBAAgB,SAAS,CAAA;AACzE,EAAA,MAAM,QAAA,GAAW,mBAAmB,UAAA,EAAY,EAAE,QAAQ,SAAA,EAAW,OAAA,IAAW,KAAK,CAAA;AACrF,EAAA,MAAM,MAAA,GAAS,OAAuB,IAAI,CAAA;AAO1C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,KAAK,MAAA,CAAO,OAAA;AAClB,IAAA,IAAI,CAAC,EAAA,IAAM,CAAC,QAAA,EAAU,OAAO,MAAA;AAC7B,IAAA,IAAI;AACF,MAAA,OAAO,qBAAA,CAAsB,EAAA,EAAI,EAAE,WAAA,EAAa,MAAM,CAAA;AAAA,IACxD,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO;AAAA,MACL,QAAA,EAAU,IAAA;AAAA,MACV,aAAA,EAAe,CAAC,IAAA,EAAyB,KAAA,KAAkB,cAAA,CAAe,EAAE,GAAG,MAAA,EAAQ,CAAC,IAAI,GAAG,KAAA,EAAO,CAAA;AAAA,MACtG;AAAA,KACF,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,cAAA,EAAgB,WAAW;AAAA,GACtC;AACA,EAAA,2BACG,gBAAA,CAAiB,QAAA,EAAjB,EAA0B,KAAA,EAAO,cAChC,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,GAAA,EAAK,MAAA,EACV,8BAAC,QAAA,EAAA,EAAS,MAAA,EAAgB,OAAe,GAAG,QAAA,EAAU,GACxD,CAAA,EACF,CAAA;AAEJ;AC5DO,SAAS,mBAAA,CAAoB;AAAA,EAClC,UAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,UAAU,CAAA,IAAK,gBAAgB,SAAS,CAAA;AACzE,EAAA,MAAM,QAAA,GAAW,mBAAmB,UAAA,EAAY,EAAE,QAAQ,SAAA,EAAW,OAAA,IAAW,KAAK,CAAA;AACrF,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,GAAAA,CAAC,YAAS,MAAA,EAAgB,KAAA,EAAe,GAAG,QAAA,EAAU,CAAA,EACxD,CAAA;AAEJ","file":"chunk-W52ULJCW.js","sourcesContent":["import { useEffect, useMemo, useRef } from 'react';\nimport { registerOverlayPortal } from '@puckeditor/core';\nimport styled from 'styled-components';\nimport type { CoverFields, Theme } from '../../../schema/theme';\nimport { CoverEditContext } from './primitives';\nimport { COVER_TEMPLATES, resolveCoverColors } from './index';\n\n// container-type habilita unidades cqw nos templates: o cover fica proporcional\n// à largura do container (preview A4, tela de edição ~420px, miniatura) — sem px fixo.\nexport const A4Box = styled.div`\n aspect-ratio: 210 / 297;\n width: 100%;\n overflow: hidden;\n container-type: inline-size;\n`;\n\nexport type CoverEditableProps = {\n templateId: string;\n fields: CoverFields;\n accent?: string;\n theme?: Theme;\n textColor?: string;\n bgColor?: string;\n selected?: boolean;\n onFieldsChange: (next: CoverFields) => void;\n onImagePick: () => void;\n};\n\nexport function CoverEditable({\n templateId,\n fields,\n accent,\n theme,\n textColor,\n bgColor,\n selected,\n onFieldsChange,\n onImagePick\n}: CoverEditableProps) {\n const Template = COVER_TEMPLATES[templateId] ?? COVER_TEMPLATES['model-1'];\n const resolved = resolveCoverColors(templateId, { accent, textColor, bgColor }, theme);\n const boxRef = useRef<HTMLDivElement>(null);\n\n // Campos sempre editáveis; o overlay portal só é registrado QUANDO o bloco está\n // selecionado (deps [selected]). Fluxo: bloco não-selecionado → sem portal → 1º\n // clique seleciona o bloco; selecionado → portal ativo (disableDrag) → edita inline\n // SEM soltar a seleção. A afinação visual (borda serrilhada) é só no hover/focus de\n // cada campo (covers.styles), então nada \"pisca\" ao selecionar.\n useEffect(() => {\n const el = boxRef.current;\n if (!el || !selected) return undefined;\n try {\n return registerOverlayPortal(el, { disableDrag: true });\n } catch {\n return undefined;\n }\n }, [selected]);\n\n const contextValue = useMemo(\n () => ({\n editable: true,\n onFieldChange: (name: keyof CoverFields, value: string) => onFieldsChange({ ...fields, [name]: value }),\n onImagePick\n }),\n [fields, onFieldsChange, onImagePick]\n );\n return (\n <CoverEditContext.Provider value={contextValue}>\n <A4Box ref={boxRef}>\n <Template fields={fields} theme={theme} {...resolved} />\n </A4Box>\n </CoverEditContext.Provider>\n );\n}\n","import type { CoverFields, Theme } from '../../../schema/theme';\nimport { COVER_TEMPLATES, resolveCoverColors } from './index';\nimport { A4Box } from './CoverEditable';\n\nexport type CoverTemplateStaticProps = {\n templateId: string;\n fields: CoverFields;\n accent?: string;\n theme?: Theme;\n textColor?: string;\n bgColor?: string;\n};\n\nexport function CoverTemplateStatic({\n templateId,\n fields,\n accent,\n theme,\n textColor,\n bgColor\n}: CoverTemplateStaticProps) {\n const Template = COVER_TEMPLATES[templateId] ?? COVER_TEMPLATES['model-1'];\n const resolved = resolveCoverColors(templateId, { accent, textColor, bgColor }, theme);\n return (\n <A4Box>\n <Template fields={fields} theme={theme} {...resolved} />\n </A4Box>\n );\n}\n"]}
@@ -0,0 +1,12 @@
1
+ // src/core/devWarn.ts
2
+ var warned = /* @__PURE__ */ new Set();
3
+ function devWarn(code, message) {
4
+ if (typeof process !== "undefined" && process.env?.NODE_ENV === "production") return;
5
+ if (warned.has(code)) return;
6
+ warned.add(code);
7
+ console.warn(`[vobi_document] ${message}`);
8
+ }
9
+
10
+ export { devWarn };
11
+ //# sourceMappingURL=chunk-ZOJBDFKU.js.map
12
+ //# sourceMappingURL=chunk-ZOJBDFKU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/devWarn.ts"],"names":[],"mappings":";AAEA,IAAM,MAAA,uBAAa,GAAA,EAAY;AASxB,SAAS,OAAA,CAAQ,MAAc,OAAA,EAAuB;AAC3D,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,EAAK,aAAa,YAAA,EAAc;AAC9E,EAAA,IAAI,MAAA,CAAO,GAAA,CAAI,IAAI,CAAA,EAAG;AACtB,EAAA,MAAA,CAAO,IAAI,IAAI,CAAA;AAEf,EAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAAA;AAC3C","file":"chunk-ZOJBDFKU.js","sourcesContent":["declare const process: { env?: { NODE_ENV?: string } } | undefined;\n\nconst warned = new Set<string>();\n\n/**\n * Aviso de configuração para o host, só em dev e uma vez por `code`.\n *\n * Os call sites são armadilhas silenciosas: a lib segue funcionando e o host\n * descobre o problema olhando o PDF. Bundler estático (webpack/vite) substitui\n * `process.env.NODE_ENV` e elimina a chamada no build de produção.\n */\nexport function devWarn(code: string, message: string): void {\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production') return;\n if (warned.has(code)) return;\n warned.add(code);\n // eslint-disable-next-line no-console\n console.warn(`[vobi_document] ${message}`);\n}\n\nexport function resetDevWarnings(): void {\n warned.clear();\n}\n"]}
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ var chunk3FTKM37U_cjs = require('./chunk-3FTKM37U.cjs');
4
+ require('./chunk-L5FXGEKX.cjs');
5
+ require('./chunk-ERKU5FDV.cjs');
6
+ require('./chunk-QJ5W5EED.cjs');
7
+ require('./chunk-SP5LCPDG.cjs');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, "ColorPicker", {
12
+ enumerable: true,
13
+ get: function () { return chunk3FTKM37U_cjs.ColorPicker; }
14
+ });
15
+ Object.defineProperty(exports, "ColorPickerPanel", {
16
+ enumerable: true,
17
+ get: function () { return chunk3FTKM37U_cjs.ColorPickerPanel; }
18
+ });
19
+ Object.defineProperty(exports, "DEFAULT_COLOR_PRESETS", {
20
+ enumerable: true,
21
+ get: function () { return chunk3FTKM37U_cjs.DEFAULT_COLOR_PRESETS; }
22
+ });
23
+ Object.defineProperty(exports, "DocumentEditor", {
24
+ enumerable: true,
25
+ get: function () { return chunk3FTKM37U_cjs.DocumentEditor; }
26
+ });
27
+ Object.defineProperty(exports, "DocumentSettingsModal", {
28
+ enumerable: true,
29
+ get: function () { return chunk3FTKM37U_cjs.DocumentSettingsModal; }
30
+ });
31
+ Object.defineProperty(exports, "hexToRgb", {
32
+ enumerable: true,
33
+ get: function () { return chunk3FTKM37U_cjs.hexToRgb; }
34
+ });
35
+ Object.defineProperty(exports, "installModifierStateShim", {
36
+ enumerable: true,
37
+ get: function () { return chunk3FTKM37U_cjs.installModifierStateShim; }
38
+ });
39
+ Object.defineProperty(exports, "normalizeHex", {
40
+ enumerable: true,
41
+ get: function () { return chunk3FTKM37U_cjs.normalizeHex; }
42
+ });
43
+ Object.defineProperty(exports, "ptBrDictionary", {
44
+ enumerable: true,
45
+ get: function () { return chunk3FTKM37U_cjs.ptBrDictionary; }
46
+ });
47
+ Object.defineProperty(exports, "rgbToHex", {
48
+ enumerable: true,
49
+ get: function () { return chunk3FTKM37U_cjs.rgbToHex; }
50
+ });
51
+ Object.defineProperty(exports, "useDocumentAutosave", {
52
+ enumerable: true,
53
+ get: function () { return chunk3FTKM37U_cjs.useDocumentAutosave; }
54
+ });
55
+ Object.defineProperty(exports, "usePuckState", {
56
+ enumerable: true,
57
+ get: function () { return chunk3FTKM37U_cjs.usePuckState; }
58
+ });
59
+ //# sourceMappingURL=editor.cjs.map
60
+ //# sourceMappingURL=editor.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"editor.cjs"}