import type { PropType } from "vue"; import type { Style } from "../../core/types.js"; import type { TLogDataSource, TLogViewVisualIndexOptions, TLogViewVisualIndexStatus } from "../log/types.js"; import type { TLinkifyOptions } from "../linkify.js"; type RowScrollMode = "off" | "unsafe-full-row"; type TLogSearchStatus = "idle" | "scanning" | "done" | "error"; export type TLogViewSearchMode = "text" | "regex"; export type TLogViewSearchError = Readonly<{ kind: "invalid-regex"; query: string; flags: string; message: string; }>; export type TLogViewSearchOptions = Readonly<{ mode?: TLogViewSearchMode; caseSensitive?: boolean; wholeWord?: boolean; maxMatches?: number; scanBudgetMs?: number; regexFlags?: string; maxMatchesPerLine?: number; }>; export type TLogViewSearchMatch = Readonly<{ absoluteLineIndex: number; index: number; startCell: number; endCell: number; text: string; }>; export type TLogViewSelectSearchMatchOptions = Readonly<{ scroll?: boolean; align?: "start" | "center" | "end"; }>; export type TLogViewSearchResult = Readonly<{ matchIndex: number; match: TLogViewSearchMatch; preview?: TLogViewSearchResultPreview; }>; export type TLogViewSearchResultPreview = Readonly<{ text: string; matchStartCell: number; matchEndCell: number; }>; export type TLogViewSearchResultsOptions = Readonly<{ offset?: number; limit?: number; includePreview?: boolean; previewWidth?: number; contextCells?: number; }>; export type TLogViewSearchState = Readonly<{ query: string; status: TLogSearchStatus; matchCount: number; currentMatchIndex: number; error?: TLogViewSearchError | null; }>; export type TLogViewSearchPayload = Readonly<{ query: string; status: TLogSearchStatus; matchCount: number; error?: TLogViewSearchError | null; }>; export type TLogViewSearchMatchPayload = Readonly<{ match: TLogViewSearchMatch | null; currentMatchIndex: number; matchCount: number; }>; export type TLogViewSearchMarker = Readonly<{ matchIndex: number; absoluteLineIndex: number; index: number; visualRow: number; estimated: boolean; current: boolean; }>; export type TLogViewSearchMarkersPayload = Readonly<{ markers: readonly TLogViewSearchMarker[]; visualIndexStatus: TLogViewVisualIndexStatus; matchCount: number; currentMatchIndex: number; }>; export type TLogViewLinkClickPayload = Readonly<{ href: string; text: string; absoluteLineIndex: number; index: number; startCell: number; endCell: number; cellX: number; cellY: number; }>; export type TLogViewVisibleLink = Readonly<{ visibleIndex: number; href: string; text: string; absoluteLineIndex: number; index: number; startCell: number; endCell: number; startX: number; endX: number; y: number; focused?: boolean; }>; export type TLogViewLinkFocusPayload = Readonly<{ link: TLogViewVisibleLink | null; focusedLinkIndex: number; }>; export type TLogViewLinkActivatePayload = Readonly<{ link: TLogViewVisibleLink; source: "keyboard" | "programmatic"; }>; export type TLogViewVisualIndexPayload = Readonly<{ status: TLogViewVisualIndexStatus; lineCount: number; measuredLineCount: number; estimatedVisualRowCount: number; visualRowCount: number; }>; export type TLogViewScrollMetrics = Readonly<{ scrollTop: number; maxScrollTop: number; viewportRows: number; lineCount: number; firstLineIndex: number; estimatedVisualRowCount: number; visualRowCount: number; measuredVisualRowCount: number; measuredLineCount: number; visualIndexStatus: TLogViewVisualIndexStatus; atTop: boolean; atBottom: boolean; }>; export type TLogViewHandle = Readonly<{ scrollToBottom: () => void; scrollToTop: () => void; scrollToVisualRow: (row: number) => void; scrollBy: (delta: number) => void; scrollToLine: (index: number, options?: Readonly<{ align?: "start" | "center" | "end"; }>) => void; refreshViewport: () => void; invalidateLine: (index: number) => void; invalidateRange: (start: number, end: number) => void; findNext: () => void; findPrevious: () => void; clearSearch: () => void; getSearchState: () => TLogViewSearchState; selectSearchMatch: (matchIndex: number, options?: TLogViewSelectSearchMatchOptions) => boolean; getSearchMatch: (matchIndex: number) => TLogViewSearchMatch | null; getSearchResults: (options?: TLogViewSearchResultsOptions) => readonly TLogViewSearchResult[]; measureVisualIndex: () => void; getScrollMetrics: () => TLogViewScrollMetrics; getSearchMarkers: () => readonly TLogViewSearchMarker[]; getVisibleLinks: () => readonly TLogViewVisibleLink[]; focusVisibleLink: (visibleIndex: number) => boolean; focusNextLink: () => boolean; focusPreviousLink: () => boolean; clearLinkFocus: () => void; activateFocusedLink: () => boolean; }>; export declare const TLogView: import("vue").DefineComponent; required: true; }; version: { type: NumberConstructor; required: true; }; scrollTop: { type: NumberConstructor; default: undefined; }; defaultScrollTop: { type: NumberConstructor; default: undefined; }; style: { type: PropType