import { BundledLanguage, BundledTheme, CodeToHastOptions, DecorationItem, HighlighterGeneric, LanguageRegistration, ShikiTransformer, ThemeRegistrationResolved, ThemedToken } from "shiki"; import { ElementContent } from "hast"; //#region src/types.d.ts interface FileContents { cacheKey?: string; name: string; contents: string; lang?: SupportedLanguages; header?: string; } type DiffsThemeNames = BundledTheme | "pierre-dark" | "pierre-light" | (string & {}); type ThemesType = Record<"dark" | "light", DiffsThemeNames>; type DiffsHighlighter = HighlighterGeneric; type ChangeTypes = "change" | "rename-pure" | "rename-changed" | "new" | "deleted"; interface ParsedPatch { patchMetadata?: string; files: FileDiffMetadata[]; } interface ContextContent { type: "context"; lines: string[]; noEOFCR: boolean; } interface ChangeContent { type: "change"; deletions: string[]; additions: string[]; noEOFCRDeletions: boolean; noEOFCRAdditions: boolean; } interface Hunk { collapsedBefore: number; splitLineStart: number; splitLineCount: number; unifiedLineStart: number; unifiedLineCount: number; additionCount: number; additionStart: number; additionLines: number; deletionCount: number; deletionStart: number; deletionLines: number; hunkContent: (ContextContent | ChangeContent)[]; hunkContext: string | undefined; hunkSpecs: string | undefined; } interface FileDiffMetadata { name: string; prevName: string | undefined; lang?: SupportedLanguages; type: ChangeTypes; hunks: Hunk[]; splitLineCount: number; unifiedLineCount: number; oldMode?: string; mode?: string; oldLines?: string[]; newLines?: string[]; cacheKey?: string; } type SupportedLanguages = BundledLanguage | "text"; type HunkLineType = "context" | "expanded" | "addition" | "deletion" | "metadata"; type ThemeTypes = "system" | "light" | "dark"; type HunkSeparators = "simple" | "metadata" | "line-info" | "custom"; type LineDiffTypes = "word-alt" | "word" | "char" | "none"; /** * Virtualization options for rendering large files efficiently. * When enabled, only visible lines are rendered to the DOM. */ interface VirtualizationOptions { /** * Enable virtualization for large files. * When enabled, only visible lines are rendered to the DOM. * @default false */ enabled?: boolean; /** * Number of lines to render outside the visible area (above and below). * Higher values reduce flickering during fast scrolling but use more memory. * @default 10 */ overscan?: number; /** * Height of each line in pixels. Used for calculating scroll positions. * Should match your CSS line-height. * @default 20 */ lineHeight?: number; /** * Minimum number of lines before virtualization is enabled. * Files with fewer lines than this will render all lines. * @default 500 */ threshold?: number; /** * Custom class name for the virtualized container. */ containerClassName?: string; /** * Custom styles for the virtualized container. */ containerStyle?: Partial; } interface BaseCodeOptions { theme?: DiffsThemeNames | ThemesType; disableLineNumbers?: boolean; overflow?: "scroll" | "wrap"; themeType?: ThemeTypes; disableFileHeader?: boolean; useCSSClasses?: boolean; tokenizeMaxLineLength?: number; unsafeCSS?: string; /** * Virtualization options for rendering large files efficiently. * When enabled, only visible lines are rendered to the DOM. */ virtualization?: VirtualizationOptions; } interface BaseDiffOptions extends BaseCodeOptions { diffStyle?: "unified" | "split"; diffIndicators?: "classic" | "bars" | "none"; disableBackground?: boolean; hunkSeparators?: HunkSeparators; expandUnchanged?: boolean; lineDiffType?: LineDiffTypes; maxLineDiffLength?: number; expansionLineCount?: number; } interface PrePropertiesConfig extends Required> { split: boolean; themeStyles: string; totalLines: number; } interface RenderHeaderMetadataProps { oldFile?: FileContents; newFile?: FileContents; fileDiff?: FileDiffMetadata; } type RenderHeaderMetadataCallback = (props: RenderHeaderMetadataProps) => Element | null | undefined | string | number; type RenderFileMetadata = (file: FileContents) => Element | null | undefined | string | number; type ExtensionFormatMap = Record; type AnnotationSide = "deletions" | "additions"; type OptionalMetadata = T extends undefined ? { metadata?: undefined; } : { metadata: T; }; type LineAnnotation = { lineNumber: number; } & OptionalMetadata; type DiffLineAnnotation = { side: AnnotationSide; lineNumber: number; } & OptionalMetadata; interface GapSpan { type: "gap"; rows: number; } type LineSpans = GapSpan | AnnotationSpan; type LineTypes = "change-deletion" | "change-addition" | "context" | "context-expanded"; interface LineInfo { type: LineTypes; lineNumber: number; altLineNumber?: number; lineIndex: number | `${number},${number}`; } interface SharedRenderState { lineInfo: Record | ((shikiLineNumber: number) => LineInfo); } interface AnnotationSpan { type: "annotation"; hunkIndex: number; lineIndex: number; annotations: string[]; } interface LineEventBaseProps { type: "line"; lineNumber: number; lineElement: HTMLElement; numberElement: HTMLElement | undefined; numberColumn: boolean; } interface DiffLineEventBaseProps extends Omit { type: "diff-line"; annotationSide: AnnotationSide; lineType: LineTypes; } interface ObservedAnnotationNodes { type: "annotations"; column1: { container: HTMLElement; child: HTMLElement; childHeight: number; }; column2: { container: HTMLElement; child: HTMLElement; childHeight: number; }; currentHeight: number | "auto"; } interface ObservedGridNodes { type: "code"; codeElement: HTMLElement; numberElement: HTMLElement | null; codeWidth: number | "auto"; numberWidth: number; } interface HunkData { slotName: string; hunkIndex: number; lines: number; type: "additions" | "deletions" | "unified"; expandable?: { chunked: boolean; up: boolean; down: boolean; }; } interface ChangeHunk { diffGroupStartIndex: number; deletionStartIndex: number; additionStartIndex: number; deletionLines: string[]; additionLines: string[]; } type AnnotationLineMap = Record[] | undefined>; type ExpansionDirections = "up" | "down" | "both"; interface RenderDiffFilesResult { oldLines: ElementContent[]; newLines: ElementContent[]; hunks?: undefined; } interface RenderDiffHunksResult { hunks: RenderDiffFilesResult[]; oldLines?: undefined; newLines?: undefined; } interface ThemedFileResult { code: ElementContent[]; themeStyles: string; baseThemeType: "light" | "dark" | undefined; } interface ThemedDiffResult { code: RenderDiffFilesResult | RenderDiffHunksResult; themeStyles: string; baseThemeType: "light" | "dark" | undefined; } interface RenderFileOptions { theme: DiffsThemeNames | Record<"dark" | "light", DiffsThemeNames>; tokenizeMaxLineLength: number; } interface RenderDiffOptions { theme: DiffsThemeNames | Record<"dark" | "light", DiffsThemeNames>; tokenizeMaxLineLength: number; lineDiffType: LineDiffTypes; } interface RenderFileResult { result: ThemedFileResult; options: RenderFileOptions; } interface RenderDiffResult { result: ThemedDiffResult; options: RenderDiffOptions; } interface RenderedFileASTCache { file: FileContents; highlighted: boolean; options: RenderFileOptions; result: ThemedFileResult | undefined; } interface RenderedDiffASTCache { diff: FileDiffMetadata; highlighted: boolean; options: RenderDiffOptions; result: ThemedDiffResult | undefined; } //#endregion export { AnnotationLineMap, AnnotationSide, AnnotationSpan, BaseCodeOptions, BaseDiffOptions, type BundledLanguage, ChangeContent, ChangeHunk, ChangeTypes, type CodeToHastOptions, ContextContent, type DecorationItem, DiffLineAnnotation, DiffLineEventBaseProps, DiffsHighlighter, DiffsThemeNames, ExpansionDirections, ExtensionFormatMap, FileContents, FileDiffMetadata, GapSpan, Hunk, HunkData, HunkLineType, HunkSeparators, type LanguageRegistration, LineAnnotation, LineDiffTypes, LineEventBaseProps, LineInfo, LineSpans, LineTypes, ObservedAnnotationNodes, ObservedGridNodes, ParsedPatch, PrePropertiesConfig, RenderDiffFilesResult, RenderDiffHunksResult, RenderDiffOptions, RenderDiffResult, RenderFileMetadata, RenderFileOptions, RenderFileResult, RenderHeaderMetadataCallback, RenderHeaderMetadataProps, RenderedDiffASTCache, RenderedFileASTCache, SharedRenderState, type ShikiTransformer, SupportedLanguages, type ThemeRegistrationResolved, ThemeTypes, ThemedDiffResult, ThemedFileResult, type ThemedToken, ThemesType, VirtualizationOptions }; //# sourceMappingURL=types.d.ts.map