@meistrari/minuta-editor 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ export { a as PocDocxChrome, b as PocDocxExportOptions, u as pocExportDocx } from './shared/minuta-editor.e223a421.mjs';
2
+ import '@tiptap/core';
3
+ import '@tiptap/pm/model';
4
+ import '@tiptap/pm/view';
5
+ import '@tiptap/pm/state';
package/dist/docx.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { a as PocDocxChrome, b as PocDocxExportOptions, u as pocExportDocx } from './shared/minuta-editor.e223a421.js';
2
+ import '@tiptap/core';
3
+ import '@tiptap/pm/model';
4
+ import '@tiptap/pm/view';
5
+ import '@tiptap/pm/state';
package/dist/docx.mjs ADDED
@@ -0,0 +1,5 @@
1
+ export { pocExportDocx } from './chunks/docxExport.mjs';
2
+ import './shared/minuta-editor.b2512170.mjs';
3
+ import '@tiptap/pm/state';
4
+ import '@tiptap/pm/view';
5
+ import 'docx';
@@ -0,0 +1,413 @@
1
+ /// <reference types="@tiptap/extension-bold" />
2
+ /// <reference types="@tiptap/extension-blockquote" />
3
+ /// <reference types="@tiptap/extension-bullet-list" />
4
+ /// <reference types="@tiptap/extension-code" />
5
+ /// <reference types="@tiptap/extension-code-block" />
6
+ /// <reference types="@tiptap/extension-dropcursor" />
7
+ /// <reference types="@tiptap/extension-gapcursor" />
8
+ /// <reference types="@tiptap/extension-hard-break" />
9
+ /// <reference types="@tiptap/extension-heading" />
10
+ /// <reference types="@tiptap/extension-history" />
11
+ /// <reference types="@tiptap/extension-horizontal-rule" />
12
+ /// <reference types="@tiptap/extension-italic" />
13
+ /// <reference types="@tiptap/extension-list-item" />
14
+ /// <reference types="@tiptap/extension-ordered-list" />
15
+ /// <reference types="@tiptap/extension-paragraph" />
16
+ /// <reference types="@tiptap/extension-strike" />
17
+ /// <reference types="@tiptap/extension-text" />
18
+ /// <reference types="@tiptap/extension-table" />
19
+ /// <reference types="@tiptap/extension-bubble-menu" />
20
+ import { Node, Editor, Mark, Extension } from '@tiptap/core';
21
+ import { EditorView } from '@tiptap/pm/view';
22
+ import { P as PocPageConfig } from './shared/minuta-editor.e223a421.mjs';
23
+ export { e as PAGINATE_META, a as PocDocxChrome, b as PocDocxExportOptions, q as PocLoneRow, d as PocPageBreak, c as PocPageNote, t as PocPaginationPlugin, s as breaksEqual, h as buildPocFooterEl, g as buildPocHeaderEl, j as buildPocNotesEl, k as computePocBreaks, r as computePocLoneRows, i as isPocChromeCanvas, l as isPocFlexRow, f as pocChromeFlowHeight, o as pocLoneCellIndex, m as pocNodeHasVisibleContent, n as pocNodePaintsBox, p as pocPageKey } from './shared/minuta-editor.e223a421.mjs';
24
+ import '@tiptap/pm/model';
25
+ import '@tiptap/pm/state';
26
+
27
+ /**
28
+ * Variáveis de template da minuta — o formato do placeholder e a resolução dele.
29
+ *
30
+ * O template é um documento normal do editor; onde entra um valor há um NÓ
31
+ * atômico (`templateVariable`, ver editorExtensions), serializado como
32
+ * `<span data-minuta-var="CHAVE" data-minuta-var-label="Rótulo">Rótulo</span>`.
33
+ *
34
+ * Por que nó e não `#CHAVE` no texto: no editor rico o texto é fatiado em
35
+ * marks. Negritar metade de um `#PROCESSO` produz
36
+ * `<b>#PRO</b>CESSO`, e qualquer substituição textual passa reto — em silêncio,
37
+ * só naquele template, só naquela linha. Como nó atômico o placeholder não tem
38
+ * "metade": seleciona inteiro, apaga inteiro, formata inteiro.
39
+ *
40
+ * ATENÇÃO: este arquivo é DUPLICADO em
41
+ * `packages/server/src/standalone-minuta/template-variables.ts` — o servidor
42
+ * resolve na criação da minuta e não pode importar o pacote publicado no npm.
43
+ * Mudou aqui, muda lá (e vice-versa); há teste de paridade no server.
44
+ */
45
+ /** Definição de uma variável disponível — vem do app hospedeiro, não do CDB. */
46
+ type MinutaVariableDef = {
47
+ /** chave usada no documento e nos valores (ex.: `PROCESSO`) */
48
+ key: string;
49
+ /** rótulo exibido no chip e no seletor (ex.: `Nº do Processo`) */
50
+ label: string;
51
+ /** de onde o valor sai — vira o tooltip do chip */
52
+ description?: string;
53
+ /** agrupador opcional no seletor (ex.: `Processo`, `Réu`) */
54
+ group?: string;
55
+ };
56
+ declare function escapeHtml(value: string): string;
57
+ /**
58
+ * Chaves das variáveis usadas no documento, na ordem em que aparecem e sem
59
+ * repetição. É o que substitui o `extractPeticaoVariaveisFromTexto` de quem
60
+ * hospeda: o host guarda esta lista junto com o template e não precisa ler HTML.
61
+ */
62
+ declare function extractTemplateVariables(html: string | null | undefined): string[];
63
+ /**
64
+ * Troca os placeholders pelos valores. O que NÃO tem valor continua sendo um
65
+ * placeholder vivo no documento — não vira texto vazio nem some.
66
+ *
67
+ * É de propósito: uma variável sem valor é um buraco na peça, e o lugar de
68
+ * mostrar isso é o próprio parágrafo em que ela está, não um botão desabilitado
69
+ * no rodapé do modal. Como o nó sobrevive, `extractTemplateVariables` na minuta
70
+ * gerada responde "o que ainda falta", e mandar os valores de novo resolve.
71
+ */
72
+ declare function resolveTemplateVariables(html: string | null | undefined, values: Record<string, string | null | undefined> | null | undefined): {
73
+ html: string;
74
+ missing: string[];
75
+ };
76
+
77
+ /**
78
+ * Extensões Tiptap da PoC do editor de minuta.
79
+ *
80
+ * Modelo: doc → minutaBlock+ → (paragraph | heading | styledDiv | htmlIsland | ...)
81
+ * - minutaBlock: wrapper com proveniência (blockId/título do bloco do template)
82
+ * - htmlIsland: tabelas/listas/imagens/svg preservados como ilhas não-editáveis (HTML cru)
83
+ * - variableChip: <span data-variable-id> vira nó atômico — a variável continua "viva"
84
+ * - templateVariable: <span data-minuta-var> — placeholder NÃO resolvido do template
85
+ * - inlineStyle/styledDiv/passthrough: preservam o CSS inline do pipeline de render
86
+ */
87
+ /**
88
+ * Meta de transação: troca de imagem fria pelo blob recém-baixado (load
89
+ * progressivo). Não é edição do advogado — fica fora do undo e não pode
90
+ * marcar o documento como sujo (senão o autosave dispara sozinho no load).
91
+ */
92
+ declare const POC_ASSET_SWAP = "pocAssetSwap";
93
+ declare const PocDocument: Node<any, any>;
94
+ declare const PocMinutaBlock: Node<any, any>;
95
+ declare const PocHtmlIsland: Node<any, any>;
96
+ /**
97
+ * Aviso de imagem faltando — a caixa tracejada que o render emite quando a
98
+ * variável de imagem não foi preenchida.
99
+ *
100
+ * Antes ela chegava aqui como um `styledDiv` comum: apagar exigia selecionar o
101
+ * texto por dentro, e a moldura sobrava no documento. Como nó próprio ela é
102
+ * atômica e selecionável (um clique + Backspace resolve), ganha um botão de
103
+ * remover e um alvo de clique para escolher a imagem ali mesmo.
104
+ *
105
+ * Na etapa de edição o DOCUMENTO é a verdade — o checklist fica travado —, então
106
+ * escolher a imagem insere no texto editado; não mexe na variável do caso.
107
+ *
108
+ * O nó guarda só o ID da variável e REDESENHA a caixa a partir dele. Guardar o
109
+ * `outerHTML` e devolvê-lo a um `innerHTML` faria do corpo da edição — que é
110
+ * dado persistido, editável por qualquer um do workspace — um vetor de stored
111
+ * XSS: bastaria uma `div.missing-image-warning` forjada com `onerror` para
112
+ * rodar script no editor de quem abrisse o caso depois.
113
+ */
114
+ declare const PocMissingImage: Node<any, any>;
115
+ declare const PocVariableChip: Node<any, any>;
116
+ /** `<span data-variable-id>` com o texto trocado — o que `setVariableValue` grava no chip */
117
+ declare function variableChipHtml(currentHtml: string, text: string): string;
118
+ /**
119
+ * Placeholder de variável do TEMPLATE — o `#NOME_VARIAVEL` de antigamente, só
120
+ * que como nó atômico em vez de texto (ver `utils/templateVariables.ts` para o
121
+ * porquê e para o formato).
122
+ *
123
+ * O catálogo (`options.catalog`) vem do app hospedeiro: o CDB não sabe o que é
124
+ * `SIGLA_FORO`, só sabe que existe um lugar no documento com esse nome. O nó
125
+ * guarda o rótulo junto (para um template abrir legível sem catálogo, ex.: no
126
+ * histórico), mas quem manda na exibição é o catálogo — renomear uma variável
127
+ * no host reflete em todo template já salvo, sem migrar documento nenhum.
128
+ *
129
+ * Sobrevive à geração: `resolveTemplateVariables` só troca o que tem valor, e o
130
+ * que sobra continua sendo este nó — um buraco visível no parágrafo em que ele
131
+ * está, e não um erro genérico no rodapé de um modal.
132
+ */
133
+ /** o catálogo pode chegar depois do mount (host que carrega async) — daí o getter */
134
+ type MinutaVariableCatalog = MinutaVariableDef[] | (() => MinutaVariableDef[]);
135
+ declare const PocTemplateVariable: Node<{
136
+ catalog: MinutaVariableCatalog;
137
+ }, any>;
138
+ /**
139
+ * Nota de rodapé: o render devolve `<sup data-footnote="texto">n</sup>` e o
140
+ * export transforma em nota de rodapé DE VERDADE no Word (o pipeline legado faz
141
+ * o mesmo via footnotes_filter.lua do conversor). Precisa ser um nó do schema —
142
+ * senão o Tiptap descarta o data-footnote no round-trip e o texto da nota some.
143
+ */
144
+ declare const PocFootnoteRef: Node<any, any>;
145
+ /** re-sequencia a numeração das chamadas de nota na ordem do documento */
146
+ declare function renumberPocFootnotes(editor: Editor): void;
147
+ declare const PocStyledDiv: Node<any, any>;
148
+ declare const PocInlineStyle: Mark<any, any>;
149
+ declare const PocUnderline: Mark<any, any>;
150
+ /** Preserva style/class inline nos blocos de texto (o pipeline de render inlina todo o CSS). */
151
+ declare const PocStylePassthrough: Extension<any, any>;
152
+ declare function buildPocExtensions(pageConfig?: PocPageConfig, options?: {
153
+ /** catálogo de variáveis do host — habilita os chips do modo template */
154
+ variables?: MinutaVariableCatalog;
155
+ /**
156
+ * Primeiro a ver o teclado, ANTES do keymap do editor. Devolver `true`
157
+ * consome a tecla.
158
+ *
159
+ * Existe porque `editorProps.handleKeyDown` não serve: o `someProp` do
160
+ * ProseMirror percorre os plugins antes das props diretas, então o keymap
161
+ * do StarterKit trata o Enter (quebra o parágrafo) e o handler da view
162
+ * nunca roda. Quem precisa de um popover dirigido pelo teclado com o foco
163
+ * ainda no editor — o seletor de variável — depende disso.
164
+ */
165
+ handleKeyDown?: (view: EditorView, event: KeyboardEvent) => boolean;
166
+ }): (Node<any, any> | Mark<any, any> | Extension<any, any>)[];
167
+
168
+ /**
169
+ * O editor de minuta como coisa montável em qualquer lugar: `createMinutaEditor(el, opts)`.
170
+ *
171
+ * Port do `MinutaDocxEditor.vue` para DOM cru, comportamento a comportamento.
172
+ * O que era `ref`/`computed`/`watch` virou estado local + funções `render*`
173
+ * chamadas nos mesmos momentos; o que era `<template>` virou `h()`. As
174
+ * decisões que o componente Vue tomou — rAF para paginar, zoom por CSS,
175
+ * placeholder como nó atômico, foco do seletor — estão preservadas, com os
176
+ * comentários originais onde eles explicavam o porquê.
177
+ *
178
+ * Zero I/O: nada de fetch, autosave ou histórico. Isso é do host.
179
+ */
180
+ declare const A4_WIDTH_PX = 794;
181
+ declare const A4_HEIGHT_PX = 1123;
182
+ /** 2,5cm topo/rodapé, 3cm laterais, em px @96dpi */
183
+ declare const DEFAULT_MARGINS: MinutaMargins;
184
+ interface MinutaMargins {
185
+ top: number;
186
+ right: number;
187
+ bottom: number;
188
+ left: number;
189
+ }
190
+ interface MinutaHeader {
191
+ logoUrl: string | null;
192
+ position: 'left' | 'center' | 'right';
193
+ }
194
+ interface MinutaChromeText {
195
+ header: string;
196
+ footer: string;
197
+ headerScope?: 'all' | 'first';
198
+ footerScope?: 'all' | 'first';
199
+ showPageNumber?: boolean;
200
+ }
201
+ /** uma variável do case dentro do documento (`<span data-variable-id>`) */
202
+ interface MinutaVariableRef {
203
+ variableId: string;
204
+ parentBlockId: string | null;
205
+ /** texto atual do trecho */
206
+ text: string;
207
+ }
208
+ interface MinutaEditorOptions {
209
+ /** documento inicial (HTML) */
210
+ html: string;
211
+ editable?: boolean;
212
+ margins?: MinutaMargins;
213
+ header?: MinutaHeader;
214
+ /** cabeçalho/rodapé em HTML (texto ou canvas) */
215
+ chrome?: Partial<MinutaChromeText>;
216
+ /**
217
+ * Catálogo de variáveis do host. Com ele o editor vira editor de TEMPLATE:
218
+ * `/` e o botão da toolbar inserem placeholders. Aceita getter para o
219
+ * catálogo que chega depois do mount.
220
+ */
221
+ variables?: MinutaVariableCatalog;
222
+ /**
223
+ * Upload da imagem inserida pela toolbar. Quando presente, a tag entra com
224
+ * src presignado + data-vault-src durável; sem ele (ou em falha), a imagem
225
+ * vira data-URI embutida no documento.
226
+ */
227
+ uploadImage?: ((file: File) => Promise<{
228
+ src: string;
229
+ vaultSrc: string;
230
+ } | null>) | null;
231
+ /** barra de formatação (default: true). `false` = o host monta a dele sobre `tiptap` */
232
+ toolbar?: boolean;
233
+ /** realce de proveniência de bloco no hover (só faz sentido no modo estruturado) */
234
+ showBlockOrigin?: boolean;
235
+ onReady?: (tiptap: Editor) => void;
236
+ /** o documento mudou por edição (troca de imagem fria não conta) */
237
+ onChange?: () => void;
238
+ /**
239
+ * Qualquer transação, inclusive só de seleção. É o que uma toolbar montada
240
+ * pelo host precisa para `tiptap.isActive('bold')` acompanhar o cursor —
241
+ * `onChange` não dispara quando só a seleção anda.
242
+ */
243
+ onTransaction?: () => void;
244
+ /** read-only: clique num bloco com proveniência */
245
+ onBlockClick?: (blockId: string) => void;
246
+ /** clique no cabeçalho/rodapé da folha (além do CustomEvent `poc:edit-chrome`) */
247
+ onEditChrome?: (part: 'header' | 'footer') => void;
248
+ /**
249
+ * Clique numa variável renderizada (`<span data-variable-id>` do documento).
250
+ * É a ponte documento → formulário: o host recebe o id e foca o campo.
251
+ */
252
+ onVariableClick?: (variable: MinutaVariableRef) => void;
253
+ onError?: (message: string) => void;
254
+ }
255
+ interface MinutaEditor {
256
+ /** a instância do Tiptap — escotilha de fuga para o que a API não cobre */
257
+ readonly tiptap: Editor | null;
258
+ /** `.poc-editor-root` */
259
+ readonly root: HTMLElement;
260
+ /** container com scroll (o host ancora coisas nele, ex.: gutter de anotações) */
261
+ readonly container: HTMLElement;
262
+ /** a folha A4 — host para overlays posicionados no documento */
263
+ readonly sheet: HTMLElement;
264
+ getHTML: () => string;
265
+ /** `Blob` do .docx com as mesmas quebras do preview. Carrega a lib sob demanda. */
266
+ exportDocx: () => Promise<Blob>;
267
+ /** chaves de variável usadas no documento, na ordem, sem repetição */
268
+ usedVariables: () => string[];
269
+ setEditable: (editable: boolean) => void;
270
+ setChrome: (chrome: Partial<MinutaChromeText>) => void;
271
+ setHeader: (header: MinutaHeader) => void;
272
+ setVariables: (variables: MinutaVariableCatalog | undefined) => void;
273
+ /** liga/desliga a barra de formatação do pacote */
274
+ setToolbar: (on: boolean) => void;
275
+ setMargins: (margins: MinutaMargins) => void;
276
+ setShowBlockOrigin: (on: boolean) => void;
277
+ /**
278
+ * Ponte formulário → documento: rola até a primeira ocorrência da variável
279
+ * e a destaca por um instante. `false` se ela não está no documento.
280
+ */
281
+ scrollToVariable: (variableId: string) => boolean;
282
+ /**
283
+ * Troca o texto de TODAS as ocorrências da variável no documento — inclusive
284
+ * numa edição livre, porque a marca é um nó e sobrevive à lapidação. É o que
285
+ * deixa um formulário de variáveis continuar valendo depois que o advogado
286
+ * editou o texto em volta. Devolve quantas ocorrências mudaram.
287
+ */
288
+ setVariableValue: (variableId: string, value: string) => number;
289
+ /** as variáveis presentes no documento, na ordem, sem repetição */
290
+ variablesInDocument: () => string[];
291
+ /** repagina (o host chama após mudar algo que afeta altura fora do editor) */
292
+ schedulePaginate: () => void;
293
+ /** reconstrói cabeçalhos/rodapés com o chrome atual, sem repaginar */
294
+ refreshChrome: () => void;
295
+ totalPages: () => number;
296
+ destroy: () => void;
297
+ }
298
+ declare function createMinutaEditor(element: HTMLElement, opts: MinutaEditorOptions): MinutaEditor;
299
+
300
+ /**
301
+ * Popover de nota de rodapé, ancorado na chamada (estilo comentário do Google
302
+ * Docs). Port 1:1 do trecho do MinutaDocxEditor.vue: B/I/U por execCommand no
303
+ * contenteditable, fonte/tamanho/cor por span no trecho selecionado, Enter
304
+ * salva, Esc cancela, e cancelar uma nota recém-criada (ainda vazia) remove a
305
+ * chamada.
306
+ */
307
+ /** mesmas fontes do canvas de cabeçalho/rodapé — o export lê a fonte por run */
308
+ declare const DOC_FONTS: string[];
309
+
310
+ /**
311
+ * Ícones da toolbar: os mesmos do Phosphor (peso regular) que o defesa.ai usa,
312
+ * como path SVG puro — o pacote não depende de framework nem do @phosphor-icons/vue.
313
+ * Extraídos de @phosphor-icons/vue 2.2.1; viewBox 0 0 256 256.
314
+ */
315
+ declare const ICON_PATHS: Record<string, string>;
316
+ declare function iconSvg(name: string, size?: number): string;
317
+
318
+ /**
319
+ * Conteúdo de nota de rodapé: o template escreve HTML dentro de `<footnote>`
320
+ * (negrito, itálico, links) e declara o corpo da nota em `style="font-size: 9pt"`.
321
+ * O marcador do preview carrega esse conteúdo num atributo, então ele precisa
322
+ * de um subconjunto seguro — atributo nenhum sobrevive, só as tags de ênfase.
323
+ */
324
+ /** HTML da nota reduzido a ênfase inline + links (o resto vira texto) */
325
+ declare function sanitizeFootnoteHtml(html: string): string;
326
+ interface FootnoteRun {
327
+ text: string;
328
+ bold?: boolean;
329
+ italics?: boolean;
330
+ underline?: boolean;
331
+ break?: boolean;
332
+ /** quando presente, o run vira ExternalHyperlink no .docx */
333
+ href?: string;
334
+ /** personalização por trecho (spans do popover) */
335
+ font?: string;
336
+ sizePt?: number;
337
+ /** hex SEM '#' (formato do docx) */
338
+ color?: string;
339
+ }
340
+ /** o mesmo HTML fatiado em runs — é assim que o .docx representa ênfase */
341
+ declare function footnoteHtmlToRuns(html: string): FootnoteRun[];
342
+ /** tamanho declarado na nota (`font-size: 9pt`) em pontos */
343
+ declare function footnoteSizePt(style: string | null | undefined): number | null;
344
+
345
+ /**
346
+ * Regra de *keep-with-next* do motor de paginação: um título não pode ficar
347
+ * órfão no pé da página, então a quebra sobe para antes dele.
348
+ *
349
+ * Vive separada de usePocPaginationPlugin porque o laço que a usa tem
350
+ * RETROCESSO — ele volta o índice para reavaliar o item depois de mover a
351
+ * quebra — e uma decisão que não avança trava o laço para sempre. Sendo pura,
352
+ * a regra pode ser testada sem DOM nem ProseMirror.
353
+ */
354
+ interface PocKeepWithNextItem {
355
+ /** topo do item no fluxo normalizado (sem chrome), em px */
356
+ top: number;
357
+ /** altura do item em px */
358
+ height: number;
359
+ /** margem superior, que conta como parte da página que o item abre */
360
+ marginTop: number;
361
+ /** é um título (h1–h4)? */
362
+ heading: boolean;
363
+ /** é o parágrafo-marcador de quebra manual do template? */
364
+ marker: boolean;
365
+ }
366
+ /**
367
+ * A quebra deve subir do item para o título imediatamente anterior?
368
+ *
369
+ * Duas condições, e as duas são necessárias para o laço TERMINAR:
370
+ *
371
+ * 1. o título ainda não abre a página corrente — comparado pelo topo COM
372
+ * MARGEM, que é exatamente o valor que vira o novo `pageStart`. Comparar
373
+ * `prev.top` puro faz um título com `margin-top > 0` satisfazer a condição
374
+ * para sempre: `pageStart` vira `prev.top - prev.marginTop`, que é sempre
375
+ * menor que `prev.top`, e a mesma quebra é reemitida em loop;
376
+ *
377
+ * 2. o par título+item precisa CABER na página nova. Se o item sozinho já
378
+ * estoura a página (uma tabela ou imagem grande vinda de DOCX), descer o
379
+ * título não resolve — a quebra não avança e o laço volta ao mesmo ponto.
380
+ */
381
+ declare function shouldMoveBreakToHeading(params: {
382
+ heading: PocKeepWithNextItem | undefined;
383
+ item: PocKeepWithNextItem;
384
+ /** topo da página corrente no fluxo normalizado */
385
+ pageStart: number;
386
+ /** altura útil disponível, já descontadas as notas de rodapé */
387
+ capacity: number;
388
+ }): boolean;
389
+
390
+ /**
391
+ * Sanitização do HTML rico de cabeçalho/rodapé (chrome) — conteúdo criado em
392
+ * contenteditable e PERSISTIDO (template.headers, case_edition.chrome). Sem
393
+ * isso, um usuário do workspace poderia armazenar markup executável que roda
394
+ * no browser de quem abrir o caso/preview (stored XSS).
395
+ *
396
+ * Aplicar em TODO sink (v-html / innerHTML) e ao persistir. Mantém a
397
+ * formatação suportada (b/i/u, spans com estilo, imagens data:/blob:/https).
398
+ */
399
+ declare function sanitizeRichHtml(html: string | null | undefined): string;
400
+
401
+ /**
402
+ * A tag de imagem que o editor insere após o upload: guarda o `src` presignado
403
+ * (funciona agora) E o `data-vault-src` durável (`vault://…`). Quem re-resolve
404
+ * os presignados expirados é o host (no embed, `refreshVaultImages`); o editor
405
+ * só sabe escrever a tag.
406
+ */
407
+ /** mesmo escape do lazy-vault-images pro valor do atributo */
408
+ declare function escapeVaultAttr(value: string): string;
409
+ declare function decodeVaultAttr(value: string): string;
410
+ declare function vaultImageHtml(src: string, vaultUrl: string): string;
411
+
412
+ export { A4_HEIGHT_PX, A4_WIDTH_PX, DEFAULT_MARGINS, DOC_FONTS, ICON_PATHS, POC_ASSET_SWAP, PocDocument, PocFootnoteRef, PocHtmlIsland, PocInlineStyle, PocMinutaBlock, PocMissingImage, PocPageConfig, PocStylePassthrough, PocStyledDiv, PocTemplateVariable, PocUnderline, PocVariableChip, buildPocExtensions, createMinutaEditor, decodeVaultAttr, escapeHtml, escapeVaultAttr, extractTemplateVariables, footnoteHtmlToRuns, footnoteSizePt, iconSvg, renumberPocFootnotes, resolveTemplateVariables, sanitizeFootnoteHtml, sanitizeRichHtml, shouldMoveBreakToHeading, variableChipHtml, vaultImageHtml };
413
+ export type { FootnoteRun, MinutaChromeText, MinutaEditor, MinutaEditorOptions, MinutaHeader, MinutaMargins, MinutaVariableCatalog, MinutaVariableDef, MinutaVariableRef, PocKeepWithNextItem };