UNPKG

datocms-structured-text-generic-html-renderer

Version:

A set of Typescript types and helpers to work with DatoCMS Structured Text fields

35 lines (34 loc) 2.47 kB
import { Adapter, CdaStructuredTextValue, Document, Mark, MetaEntry, Node, NodeWithMeta, Record, RenderContext, RenderError, RenderResult, RenderRule, renderRule, Span, TrasformFn } from 'datocms-structured-text-utils'; export { RenderError, renderRule as renderNodeRule }; export declare function markToTagName(mark: Mark): string; export declare function renderSpanValue<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>({ node, key, adapter: { renderNode, renderText, renderFragment }, }: RenderContext<H, T, F, Span>): RenderResult<H, T, F>; declare type RenderMarkContext<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = { mark: string; adapter: Adapter<H, T, F>; key: string; children: Exclude<RenderResult<H, T, F>, null | undefined>[] | undefined; }; export declare type RenderMarkRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = { appliable: (mark: string) => boolean; apply: (ctx: RenderMarkContext<H, T, F>) => RenderResult<H, T, F>; }; export declare function renderMarkRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>(guard: string | ((mark: string) => boolean), transform: (ctx: RenderMarkContext<H, T, F>) => RenderResult<H, T, F>): RenderMarkRule<H, T, F>; export declare function spanNodeRenderRule<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn>({ customMarkRules, }: { customMarkRules: RenderMarkRule<H, T, F>[]; }): RenderRule<H, T, F>; export declare type TransformMetaContext = { node: NodeWithMeta; meta: Array<MetaEntry>; }; export declare type TransformedMeta = { [prop: string]: unknown; } | null | undefined; export declare type TransformMetaFn = (context: TransformMetaContext) => TransformedMeta; export declare const defaultMetaTransformer: TransformMetaFn; export declare type RenderOptions<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn> = { adapter: Adapter<H, T, F>; customNodeRules?: RenderRule<H, T, F>[]; metaTransformer?: TransformMetaFn; customMarkRules?: RenderMarkRule<H, T, F>[]; }; export declare function render<H extends TrasformFn, T extends TrasformFn, F extends TrasformFn, BlockRecord extends Record, LinkRecord extends Record, InlineBlockRecord extends Record>(structuredTextOrNode: CdaStructuredTextValue<BlockRecord, LinkRecord, InlineBlockRecord> | Document | Node | null | undefined, options: RenderOptions<H, T, F>): RenderResult<H, T, F>;