@pierre/diffs
Version:
52 lines (51 loc) • 1.72 kB
JavaScript
"use client";
import { DIFFS_TAG_NAME } from "../constants.js";
import { getSingularPatch } from "../utils/getSingularPatch.js";
import { renderDiffChildren } from "./utils/renderDiffChildren.js";
import { templateRender } from "./utils/templateRender.js";
import { useFileDiffInstance } from "./utils/useFileDiffInstance.js";
import { useMemo } from "react";
import { jsx } from "react/jsx-runtime";
//#region src/react/PatchDiff.tsx
function PatchDiff({ patch, options, editorOptions, editStateKey, metrics, lineAnnotations, selectedLines, className, style, prerenderedHTML, renderAnnotation, renderCustomHeader, renderHeaderPrefix, renderHeaderFilenameSuffix, renderHeaderMetadata, renderGutterUtility, disableWorkerPool = false, edit = false, onEditChange, onEditComplete }) {
const fileDiff = usePatch(patch);
const { ref, getHoveredLine, getAnnotationSlotName } = useFileDiffInstance({
fileDiff,
options,
editorOptions,
editStateKey,
metrics,
lineAnnotations,
selectedLines,
prerenderedHTML,
hasGutterRenderUtility: renderGutterUtility != null,
hasCustomHeader: renderCustomHeader != null,
disableWorkerPool,
edit,
onEditChange,
onEditComplete
});
return /* @__PURE__ */ jsx(DIFFS_TAG_NAME, {
ref,
className,
style,
children: templateRender(renderDiffChildren({
fileDiff,
renderCustomHeader,
renderHeaderPrefix,
renderHeaderFilenameSuffix,
renderHeaderMetadata,
renderAnnotation,
lineAnnotations,
renderGutterUtility,
getHoveredLine,
getAnnotationSlotName
}), prerenderedHTML)
});
}
function usePatch(patch) {
return useMemo(() => getSingularPatch(patch), [patch]);
}
//#endregion
export { PatchDiff };
//# sourceMappingURL=PatchDiff.js.map