UNPKG

react-diff-view

Version:

A git diff component to consume the git unified diff output.

58 lines (57 loc) 2.25 kB
import { DOMAttributes, ReactNode } from 'react'; import { ChangeData } from '../utils/parse'; import { HunkTokens, TokenNode } from '../tokenize'; import { Side } from '../interface'; export type DefaultRenderToken = (token: TokenNode, index: number) => ReactNode; export type RenderToken = (token: TokenNode, renderDefault: DefaultRenderToken, index: number) => ReactNode; export interface GutterOptions { change: ChangeData; side: Side; inHoverState: boolean; renderDefault: () => ReactNode; wrapInAnchor: (element: ReactNode) => ReactNode; } export type RenderGutter = (options: GutterOptions) => ReactNode; export type ViewType = 'unified' | 'split'; export type GutterType = 'default' | 'none' | 'anchor'; type IsEvent<T> = T extends `on${string}` ? T : never; export type EventKeys = IsEvent<keyof DOMAttributes<HTMLElement>>; export type NativeEventMap = Partial<{ [K in EventKeys]: DOMAttributes<HTMLElement>[K]; }>; type ExtractEventHandler<E extends EventKeys> = Exclude<NativeEventMap[E], undefined>; type ExtractEventType<E extends EventKeys> = Parameters<ExtractEventHandler<E>>[0]; export interface ChangeEventArgs { side?: Side; change: ChangeData | null; } type BindEvent<E extends EventKeys> = (args: ChangeEventArgs, event: ExtractEventType<E>) => void; export type EventMap = Partial<{ [K in EventKeys]: BindEvent<K>; }>; export interface ContextProps { hunkClassName: string; lineClassName: string; gutterClassName: string; codeClassName: string; monotonous: boolean; gutterType: GutterType; viewType: ViewType; widgets: Record<string, ReactNode>; hideGutter: boolean; selectedChanges: string[]; tokens?: HunkTokens | null; generateAnchorID: (change: ChangeData) => string | undefined; generateLineClassName: (params: { changes: ChangeData[]; defaultGenerate: () => string; }) => string | undefined; renderToken?: RenderToken; renderGutter: RenderGutter; gutterEvents: EventMap; codeEvents: EventMap; } export declare const DEFAULT_CONTEXT_VALUE: ContextProps; export declare const Provider: import("react").Provider<ContextProps>; export declare const useDiffSettings: () => ContextProps; export {};