1.2.22 • Published 4 months ago

react-diff-viz v1.2.22

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

react-diff-viz

react-diff-viz is a React component that compares and renders complex object differences

Install

npm install react-diff-viz

Usage

import Diff from "react-diff-viz";

// describe the content to be rendered
const vizItems = [
    {
      path: "name",
      label: "name",
    },
    {
      path: "age",
      label: "age",
    },
    {
      path: "address",
      label: "address",
      content: (v) => {
        return v.city + " of " + v.country;
      },
    },
  ]

// diff data1 and data2 ,then render
<Diff
  data1={{
    name: "John",
    age: 30,
    address: {
      city: "New York",
      country: "USA",
    },
  }}
  data2={{
    name: "John",
    age: 31,
    address: {
      city: "New York",
      country: "USA",
    },
  }}
  vizItems={vizItems}
/>;

Features

This component integrates diff algorithm and visual rendering, features are as follows

  • The left and right columns display the data, aligned to the height of corresponding field, and colored the different fields
  • The component comes with the diff function. You can customize the diff function for fields
  • The component has its own rendering function. You can customize rendering functions for fields
  • Supports comparison of nested objects and arrays

Dependencies

  • react (peer dependency)
  • react-dom (peer dependency)
  • lodash (peer dependency)

Demo

https://littlewhite-hai.github.io/react-diff-viz/

demo

API

Diff Component API

NameTypeDescription
data1(required)anyData used for comparison (usually the original data)
data2(required)anyData used for comparison (usually the new data)
vizItems(required)Array\<VizItem>Describes the data to be rendered, including diff method and rendering method
colStyleCSSPropertiesOverall style for the outer DOM of all data1 and data2
labelStyleCSSPropertiesStyle for the label of each data item
contentStyleCSSPropertiesStyle for the content of each data item
strictModebooleanStrict mode, enabled by default. When disabled, the diff algorithm ignores data type differences, e.g., 0=null=undefined=false
singleModebooleanOnly view data2, default false
refreshKeynumberChange this key to trigger recoloring and height alignment

VizItems API

NameTypeDescription
labelstringTitle of the data, if only label is provided, it renders a separator title
pathstringData path of the data
visiblebooleanIf false, the item will not be displayed
foldable(coming soon)booleanWhether it can be folded
isEqual(v1,v2)=>booleanCustomize the data diff algorithm
content(v,ext)=>ReactNodeCustomize the data rendering method
arrayKeystringKey for arrays, used to mark this data as array type
arrayAlignType"lcs" | "data2" | "none"Array alignment method, default is longest common subsequence (lcs) alignment

License

MIT

1.2.18

8 months ago

1.2.19

8 months ago

1.2.20

8 months ago

1.2.21

5 months ago

1.2.22

4 months ago

1.2.12

8 months ago

1.2.13

8 months ago

1.2.11

8 months ago

1.2.16

8 months ago

1.2.17

8 months ago

1.2.14

8 months ago

1.2.15

8 months ago

1.2.10

9 months ago

1.2.9

9 months ago

1.2.0

9 months ago

1.2.8

9 months ago

1.2.7

9 months ago

1.2.6

9 months ago

1.1.7

9 months ago

1.2.5

9 months ago

1.2.4

9 months ago

1.2.3

9 months ago

1.2.2

9 months ago

1.2.1

9 months ago

1.1.6

9 months ago

1.1.5

9 months ago

1.1.4

9 months ago

1.1.3

9 months ago

1.1.2

9 months ago

1.1.1

9 months ago

1.0.0

9 months ago