UNPKG

react-code-compare

Version:

A simple and fast text diff viewer component

2 lines (1 loc) 8.02 kB
var q=Object.create;var O=Object.defineProperty,Q=Object.defineProperties,Z=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyDescriptors,ee=Object.getOwnPropertyNames,B=Object.getOwnPropertySymbols,ie=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty,te=Object.prototype.propertyIsEnumerable;var F=(t,i,e)=>i in t?O(t,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[i]=e,A=(t,i)=>{for(var e in i||(i={}))z.call(i,e)&&F(t,e,i[e]);if(B)for(var e of B(i))te.call(i,e)&&F(t,e,i[e]);return t},H=(t,i)=>Q(t,j(i));var ne=(t,i)=>{for(var e in i)O(t,e,{get:i[e],enumerable:!0})},M=(t,i,e,n)=>{if(i&&typeof i=="object"||typeof i=="function")for(let o of ee(i))!z.call(t,o)&&o!==e&&O(t,o,{get:()=>i[o],enumerable:!(n=Z(i,o))||n.enumerable});return t};var V=(t,i,e)=>(e=t!=null?q(ie(t)):{},M(i||!t||!t.__esModule?O(e,"default",{value:t,enumerable:!0}):e,t)),re=t=>M(O({},"__esModule",{value:!0}),t);var pe={};ne(pe,{VirtualTable:()=>de});module.exports=re(pe);var P=require("react"),K=require("@tanstack/react-virtual"),Y=V(require("classnames"));var v=require("react"),ae=require("react/jsx-runtime");var oe=(0,v.createContext)(null);function G(){let t=(0,v.useContext)(oe);if(t===void 0)throw new Error("useCodeCompare must be used within a CodeCompareProvider");return t}var J=V(require("classnames"));var X=V(require("classnames")),$=require("react/jsx-runtime");function g({className:t,styles:i,children:e,index:n,rowRef:o}){return(0,$.jsx)("tr",{className:(0,X.default)(i.line,t),ref:o,"data-index":n,children:e})}var a=require("react/jsx-runtime");function W({splitView:t,xSpacer:i,onBlockClickProxy:e,codeFoldMessageRenderer:n,hideLineNumbers:o,styles:r,num:f,blockNumber:u,leftBlockLineNumber:m,rightBlockLineNumber:d,rowIndex:h,rowRef:x}){let S=n?n(f,m,d):(0,a.jsx)("pre",{className:r.codeFoldContent,children:`Expand ${f} lines ...`}),N=(0,a.jsx)("td",{children:(0,a.jsx)("a",{onClick:e(u),tabIndex:0,children:S})}),k=!t&&!o;return(0,a.jsxs)(g,{className:r.codeFold,styles:r,rowRef:x,index:h,children:[i&&(0,a.jsx)("td",{className:r.xSpacer}),!o&&(0,a.jsx)("td",{className:r.codeFoldGutter}),(0,a.jsx)("td",{className:(0,J.default)({[r.codeFoldGutter]:k})}),k?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("td",{}),N]}):(0,a.jsxs)(a.Fragment,{children:[N,(0,a.jsx)("td",{})]}),(0,a.jsx)("td",{}),(0,a.jsx)("td",{}),i&&(0,a.jsx)("td",{className:r.xSpacer})]})}var le=V(require("diff"));var R={LEFT:"L",RIGHT:"R"};var T=V(require("classnames"));var c=require("react/jsx-runtime"),me=(t,i,e)=>t.map((n,o)=>(0,c.jsx)("span",{className:(0,T.default)(i.wordDiff,{[i.wordAdded]:n.type===1,[i.wordRemoved]:n.type===2}),children:e?e(n.value):n.value},o));function D({line:t,prefix:i,styles:e,highlightLines:n,onLineNumberClickProxy:o,splitPosition:r,additionalOptions:f={},diffViewOptions:u}){let{lineNumber:m,type:d,value:h}=t,{additionalLineNumber:x,additionalPrefix:S}=f,{renderContent:N,hideLineNumbers:k,splitView:l}=u,s=`${i}-${m}`,w=`${S}-${x}`,L=n.includes(s)||n.includes(w),p=d===1,y=d===2,I;return Array.isArray(h)?I=me(h,e,N):N?I=N(h):I=h,(0,c.jsxs)(c.Fragment,{children:[!k&&(0,c.jsx)("td",{onClick:m&&o(s),className:(0,T.default)(e.gutter,{[e.emptyGutter]:!m,[e.diffAdded]:p,[e.diffRemoved]:y,[e.highlightedGutter]:L,[e.splitCellLeft]:l&&r==="left"||!l,[e.splitCellRight]:l&&r==="right"}),"data-line-number":s,children:(0,c.jsx)("pre",{className:e.lineNumber,children:m})}),!l&&!k&&(0,c.jsx)("td",{onClick:x&&o(w),"data-line-number":w,className:(0,T.default)(e.gutter,{[e.emptyGutter]:!x,[e.diffAdded]:p,[e.diffRemoved]:y,[e.highlightedGutter]:L,[e.splitCellLeft]:l&&r==="left",[e.splitCellRight]:l&&r==="right",[e.splitCellRight]:l&&r==="right"||!l}),children:(0,c.jsx)("pre",{className:e.lineNumber,children:x})}),(0,c.jsx)("td",{className:(0,T.default)(e.marker,{[e.emptyLine]:!I,[e.diffAdded]:p,[e.diffRemoved]:y,[e.highlightedLine]:L,[e.splitCellLeft]:l&&r==="left",[e.splitCellRight]:l&&r==="right",[e.splitCellRight]:l&&r==="right"||!l}),children:(0,c.jsxs)("pre",{children:[p&&"+",y&&"-"]})}),(0,c.jsx)("td",{className:(0,T.default)(e.content,{[e.emptyLine]:!I,[e.diffAdded]:p,[e.diffRemoved]:y,[e.highlightedLine]:L,[e.splitCellLeft]:l&&r==="left",[e.splitCellRight]:l&&r==="right",[e.splitCellRight]:l&&r==="right"||!l}),children:(0,c.jsx)("pre",{className:e.contentText,children:I})})]})}var C=require("react/jsx-runtime");function _({lineInformation:t,order:i,styles:e,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r,rowRef:f,rowIndex:u}){let{left:m,right:d}=t;if(m.type===2&&d.type===1){if(i==="left")return(0,C.jsx)(g,{styles:e,rowRef:f,index:u,children:(0,C.jsx)(D,{line:m,prefix:R.LEFT,styles:e,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r})});if(i==="right")return(0,C.jsx)(g,{styles:e,rowRef:f,index:u,children:(0,C.jsx)(D,{line:H(A({},d),{lineNumber:null}),prefix:R.RIGHT,styles:e,highlightLines:n,onLineNumberClickProxy:o,additionalOptions:{additionalLineNumber:d.lineNumber},diffViewOptions:r})})}if(m.type===2)return(0,C.jsx)(g,{styles:e,rowRef:f,index:u,children:(0,C.jsx)(D,{line:m,prefix:R.LEFT,styles:e,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r})});if(m.type===0)return(0,C.jsx)(g,{styles:e,rowRef:f,index:u,children:(0,C.jsx)(D,{line:m,prefix:R.LEFT,styles:e,highlightLines:n,onLineNumberClickProxy:o,additionalOptions:{additionalLineNumber:d.lineNumber,additionalPrefix:R.RIGHT},diffViewOptions:r})});if(d.type===1)return(0,C.jsx)(g,{styles:e,rowRef:f,index:u,children:(0,C.jsx)(D,{line:H(A({},d),{lineNumber:null}),prefix:R.RIGHT,styles:e,highlightLines:n,onLineNumberClickProxy:o,additionalOptions:{additionalLineNumber:d.lineNumber},diffViewOptions:r})})}var E=require("react/jsx-runtime");function U({lineInformation:t,styles:i,xSpacer:e,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r,rowIndex:f,rowRef:u}){let{left:m,right:d}=t;return(0,E.jsxs)(g,{styles:i,rowRef:u,index:f,children:[e&&(0,E.jsx)("td",{className:i.xOuterSpacer}),(0,E.jsx)(D,{line:m,prefix:R.LEFT,styles:i,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r,splitPosition:"left"}),e&&(0,E.jsx)("td",{className:i.xCenterSpacer}),(0,E.jsx)(D,{line:d,prefix:R.RIGHT,styles:i,highlightLines:n,onLineNumberClickProxy:o,diffViewOptions:r,splitPosition:"right"}),e&&(0,E.jsx)("td",{className:i.xOuterSpacer})]})}var b=require("react/jsx-runtime");function de({title:t,items:i,rowsKey:e,styles:n,xSpacer:o,parentRef:r,splitView:f,hideLineNumbers:u,onBlockClickProxy:m,codeFoldMessageRenderer:d,highlightLines:h,onLineNumberClickProxy:x,diffViewOptions:S,virtualizerOptions:N}){let{setVirtualizer:k,setItems:l}=G(),s=(0,K.useVirtualizer)(A({count:i.length,getScrollElement:()=>r.current},N||{}));(0,P.useEffect)(()=>{l(i)},[e]),(0,P.useEffect)(()=>{k(s)},[s]),(0,P.useEffect)(()=>{s.measure()},[f]);let w=s.getVirtualItems();return i.length===0?null:(0,b.jsxs)("table",{className:(0,Y.default)(n.diffContainer,{[n.splitView]:f}),style:{height:s.getTotalSize(),width:"100%",position:"relative"},children:[f?(0,b.jsxs)("colgroup",{children:[(0,b.jsx)("col",{span:3,className:"left"}),(0,b.jsx)("col",{span:3,className:"right"})]}):void 0,(0,b.jsxs)("tbody",{style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${w[0].start}px)`},children:[t,w.map(L=>{let p=i[L.index];return p.type==="skipped"?(0,b.jsx)(W,{splitView:f,onBlockClickProxy:m,codeFoldMessageRenderer:d,hideLineNumbers:u,styles:n,xSpacer:o,num:p.data.num,blockNumber:p.data.blockNumber,leftBlockLineNumber:p.data.leftBlockLineNumber,rightBlockLineNumber:p.data.rightBlockLineNumber,rowRef:s.measureElement,rowIndex:L.index},L.key):p.type==="split"?(0,b.jsx)(U,{lineInformation:p.data.line,styles:n,xSpacer:o,highlightLines:h,onLineNumberClickProxy:x,diffViewOptions:S,rowRef:s.measureElement,rowIndex:L.index},L.key):p.type==="unified"?(0,b.jsx)(_,{lineInformation:p.data.line,order:p.data.order,styles:n,highlightLines:h,onLineNumberClickProxy:x,diffViewOptions:S,rowRef:s.measureElement,rowIndex:L.index},L.key):null})]})]})}0&&(module.exports={VirtualTable});