import { ArticleElement, ArticleMetadata } from '../article/types'; /** * Convierte el documento JSON de TipTap (ProseMirror) a `ArticleElement[]` * sin pasar por HTML intermedio — es la mitad "guardar" de `val-rich-editor`, * que alimenta el mismo `val-article` que ya usan Markdown * (`parseMarkdownArticle`) y las instrucciones de receta de Okhelia. Ver * `article-to-tiptap.ts` para la conversión inversa (hidratar el editor con * contenido existente). * * Cobertura: los nodos que trae `@tiptap/starter-kit` por default (doc, * paragraph, heading, bulletList/orderedList/listItem, blockquote, codeBlock, * horizontalRule) + marks inline (bold, italic vía /, igual * criterio que `allowPartialBold` de ArticleTextElement/ArticleNoteElement). * NO cubre todavía: tablas, ni extensiones custom para `note`/`diagram`/ * `command` (esos requerirían nodos TipTap propios — factible, pendiente de * decidir si vale la pena). `image` sí está cubierto (ver case 'image'). */ export interface TiptapNode { type: string; attrs?: Record; content?: TiptapNode[]; text?: string; marks?: Array<{ type: string; attrs?: Record; }>; } export interface TiptapDoc { type: 'doc'; content: TiptapNode[]; } /** * Convierte un doc de TipTap a `ArticleElement[]`. Función pura — sin * Angular DI, usable también desde Node (mismo criterio que * `parseMarkdownArticle`). */ export declare function tiptapDocToArticleElements(doc: TiptapDoc): ArticleElement[]; export declare function tiptapDocToArticle(doc: TiptapDoc, config?: Partial): ArticleMetadata;