import { DiffLineType, type DiffFile, checkDiffLineIncludeChange } from "@git-diff-view/core"; import { getContentBG, getLineNumberBG, plainLineNumberColorName, diffAsideWidthName, emptyBGName, expandLineNumberColorName, } from "@git-diff-view/utils"; import { SplitSide } from ".."; import { DiffSplitAddWidget } from "./DiffAddWidget"; import { DiffContent } from "./DiffContent"; import { useDiffViewContext } from "./DiffViewContext"; import { useDiffWidgetContext } from "./DiffWidgetContext"; const InternalDiffSplitLine = ({ index, diffFile, lineNumber, side, enableAddWidget, enableHighlight, }: { index: number; side: SplitSide; diffFile: DiffFile; lineNumber: number; enableHighlight: boolean; enableAddWidget: boolean; }) => { const getCurrentSyntaxLine = side === SplitSide.old ? diffFile.getOldSyntaxLine : diffFile.getNewSyntaxLine; const getCurrentPlainLine = side === SplitSide.old ? diffFile.getOldPlainLine : diffFile.getNewPlainLine; const oldLine = diffFile.getSplitLeftLine(index); const newLine = diffFile.getSplitRightLine(index); const currentLine = side === SplitSide.old ? oldLine : newLine; const hasDiff = !!currentLine?.diff; const hasContent = !!currentLine?.lineNumber; const hasChange = checkDiffLineIncludeChange(currentLine?.diff); const isAdded = currentLine?.diff?.type === DiffLineType.Add; const isDelete = currentLine?.diff?.type === DiffLineType.Delete; const { useDiffContext } = useDiffViewContext(); const onAddWidgetClick = useDiffContext.getReadonlyState().onAddWidgetClick; const { useWidget } = useDiffWidgetContext(); const setWidget = useWidget.getReadonlyState().setWidget; const contentBG = getContentBG(isAdded, isDelete, hasDiff); const lineNumberBG = getLineNumberBG(isAdded, isDelete, hasDiff); const syntaxLine = getCurrentSyntaxLine(currentLine.lineNumber ?? -1); const plainLine = getCurrentPlainLine(currentLine.lineNumber ?? -1); return (