export type TextOptions = 'bold' | 'interior' | 'display' | 'nonBreaking' | 'sub' | 'sup' | 'large'; export type JSONNodeOrString = JSONNode | string; export type JSONChildren = JSONNodeOrString[] | JSONNodeOrString; export type JSONNode = { type: string; children?: JSONChildren; value?: string | JSX.Element; src?: string; colname?: string; namest?: string; nameend?: string; isHead?: boolean; isFoot?: boolean; font?: string; listType?: string; subtype?: string; poster?: string; controls?: boolean; autoplay?: boolean; muted?: boolean; loop?: boolean; thumbnail?: string; href?: string; address?: string; alt?: string; imageClass?: string; morerows?: string; valign?: string; align?: string; rowSpan?: number; colSpan?: number; datetime?: string; id?: string; targetId?: string; articleId?: string; documentId?: string; options?: TextOptions[]; level?: number; refId?: string; ordering?: string; position?: Position; template?: string; height?: string; width?: string; active?: boolean; index?: number; title?: string; start?: number; end?: number; privacyEnhancedMode?: boolean; subtitle?: boolean; subtitleLanguage?: string; videoId?: string; loading?: 'eager' | 'lazy'; }; export type ComponentConfigOrFunction = (() => ComponentConfig) | ComponentConfig; export type IgnoreTypesList = string[]; export type AliasMap = Map; export interface Config { [key: string]: ComponentConfigOrFunction | IgnoreTypesList | AliasMap; } export interface ComponentConfig { type: string | JSX.Element; props?: Record; } export type ComponentsConfig = { [x: string]: any; __IGNORE_TYPES__: string[]; __ALIAS_MAP__: { [x: string]: string | number; }; }; export interface JSONArticleData { externalId?: string; documentId?: string; title: JSONChildren; description: JSONChildren; body: JSONChildren; } export interface Position { top: number; left: number; }