import type { CSSProperties, ReactNode } from 'react'; import type { Corpus } from '../../configs/types/Corpus'; import type Document from '../../configs/types/Document'; import type { Edition, Format, Split, Token } from '../../configs/types/Struct'; export declare enum PageRenderElementType { MARK = "MARK", TOKEN = "TOKEN", JUNCTION_SPLIT = "JUNCTION_SPLIT", LINE_BREAK = "LINE_BREAK", LINE_NUMBER = "LINE_NUMBER", PARTICIPANT = "PARTICIPANT" } export type TokenRef = { uid: string; tid?: string; p: number; v: string; t?: string; edited?: boolean; cid?: string; bid?: string; mid?: string; ns?: boolean; review?: boolean; ec?: boolean; edition?: Edition; format?: Format; split?: Split; }; export type PageRenderElement = { type: PageRenderElementType; idx?: number; line?: number; mstart?: boolean; participant?: string; token?: TokenRef; }; export type CollapsedPageRenderElement = { kind: 'single'; element: PageRenderElement; key: string; } | { kind: 'collapsedJunction'; token: TokenRef; splitIdx?: number; key: string; }; export type TokenClickSource = 'word' | 'sentence' | 'mark'; export type TokenClickModifiers = { ctrlKey: boolean; altKey: boolean; metaKey: boolean; }; export type PageRenderTokenContext = { isSplit: boolean; isMark: boolean; isCollapsedJunction: boolean; splitIdx: number; highlight: boolean; selected: boolean; }; export type PageRenderViewProps = { elements: PageRenderElement[]; selectedTier: string; corpus?: Corpus | null; document?: Document | null; displayTags?: boolean; showLineNumbers?: boolean; highlightSentenceUid?: string; activeTokenKey?: string; selectedTokenKeys?: Set; tokenSelectionKey?: (ref: TokenRef) => string; getDisplayValue: (token: Token, splitIdx?: number) => ReactNode; getTokenStyle?: (ref: TokenRef, token: Token, ctx: PageRenderTokenContext) => CSSProperties | undefined; getTokenClassName?: (ref: TokenRef, token: Token, ctx: PageRenderTokenContext) => string | undefined; isTokenEdited?: (token: Token) => boolean; getParticipantName?: (code: string) => string; getParticipantColor?: (code: string) => string | undefined; onTokenClick?: (ref: TokenRef, splitIdx: number | undefined, source: TokenClickSource, modifiers: TokenClickModifiers) => void; onTokenHover?: (sentenceUid: string | undefined) => void; onParticipantHover?: (code: string | undefined) => void; wrapToken?: (ref: TokenRef, token: Token, content: ReactNode, ctx: PageRenderTokenContext) => ReactNode; renderTokenSuffix?: (ref: TokenRef, token: Token, ctx: PageRenderTokenContext) => ReactNode; };