import type { PropsWithChildren } from 'react'; import type { Node as PMNode, NodeType, Schema } from '@atlaskit/editor-prosemirror/model'; import type { ExtensionHandlers } from '@atlaskit/editor-common/extensions'; import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory'; import type { EventHandlers } from '@atlaskit/editor-common/ui'; import type { AnalyticsEventPayload } from '../analytics/events'; import type { Serializer } from '../serializer'; import type { RendererAppearance, HeadingAnchorLinksProps, RendererContentMode, NestedRendererType } from '../ui/Renderer/types'; import type { AnnotationId, AnnotationTypes } from '@atlaskit/adf-schema'; export interface RendererContext { adDoc?: any; containerAri?: string; nestedRendererType?: NestedRendererType; objectAri?: string; schema?: Schema; } export interface NodeMeta { [key: string]: any; allowCopyToClipboard?: boolean; allowCustomPanels?: boolean; allowHeadingAnchorLinks?: HeadingAnchorLinksProps; allowPlaceholderText?: boolean; allowWrapCodeBlock?: boolean; asInline?: 'on' | undefined; content?: { [key: string]: any; } | null; dataAttributes: { 'data-renderer-start-pos': number; }; eventHandlers?: EventHandlers | undefined; extensionHandlers?: ExtensionHandlers | undefined; fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void; marks: PMNode['marks']; nodeType: NodeType['name']; portal?: HTMLElement | undefined; providers?: ProviderFactory | undefined; rendererAppearance?: RendererAppearance; rendererContentMode?: RendererContentMode; rendererContext?: RendererContext; serializer: Serializer; text?: PMNode['text']; } export interface MarkMeta { [key: string]: any; dataAttributes: { 'data-block-mark'?: true; 'data-renderer-mark': true; }; eventHandlers?: EventHandlers; fireAnalyticsEvent?: (event: AnalyticsEventPayload) => void; isInline?: boolean; markKey?: any; } export interface AnnotationMarkMeta extends MarkMeta { allowAnnotations: boolean; annotationParentIds: string[]; annotationType: AnnotationTypes; id: AnnotationId; isMediaInline?: boolean; useBlockLevel?: boolean; } export type NodeProps = NodeAttrs & PropsWithChildren; export type MarkProps = MarkAttrs & PropsWithChildren; export type TextHighlighter = { component: React.ComponentType<{ children: React.ReactNode; groups: Array | undefined; marks: Set; match: string; startPos: number; }>; pattern: RegExp; }; export interface ExtensionViewportSize { extensionId?: string; viewportSize?: string; }