UNPKG

react-diff-view

Version:

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

43 lines 1.31 kB
export function clone(path) { return path.map(node => ({ ...node })); } export function replace(path, leaf) { return [...clone(path.slice(0, -1)), leaf]; } export function wrap(path, parent) { return [parent, ...clone(path)]; } function isTextNode(node) { return node.type === 'text'; } export function leafOf(path) { const last = path[path.length - 1]; if (isTextNode(last)) { return last; } throw new Error(`Invalid token path with leaf of type ${last.type}`); } export function split(path, splitStart, splitEnd, wrapSplitNode) { const parents = path.slice(0, -1); const leaf = leafOf(path); const output = []; if (splitEnd <= 0 || splitStart >= leaf?.value.length) { return [path]; } const split = (start, end) => { const value = leaf.value.slice(start, end); return [...parents, { ...leaf, value }]; }; if (splitStart > 0) { const head = split(0, splitStart); output.push(clone(head)); } const body = split(Math.max(splitStart, 0), splitEnd); output.push(wrapSplitNode ? wrap(body, wrapSplitNode) : clone(body)); if (splitEnd < leaf.value.length) { const tail = split(splitEnd); output.push(clone(tail)); } return output; } //# sourceMappingURL=utils.js.map