JSPM

  • Created
  • Published
  • Downloads 10605
  • Score
    100M100P100Q122428F
  • License MIT

render JSON differences with custom your styles

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-diff-viz) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    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

    Name Type Description
    data1(required) any Data used for comparison (usually the original data)
    data2(required) any Data used for comparison (usually the new data)
    vizItems(required) Array<VizItem> Describes the data to be rendered, including diff method and rendering method
    colStyle CSSProperties Overall style for the outer DOM of all data1 and data2
    labelStyle CSSProperties Style for the label of each data item
    contentStyle CSSProperties Style for the content of each data item
    strictMode boolean Strict mode, enabled by default. When disabled, the diff algorithm ignores data type differences, e.g., 0=null=undefined=false
    singleMode boolean Only view data2, default false
    refreshKey number Change this key to trigger recoloring and height alignment

    VizItems API

    Name Type Description
    label string Title of the data, if only label is provided, it renders a separator title
    path string Data path of the data
    visible boolean If false, the item will not be displayed
    foldable(coming soon) boolean Whether it can be folded
    isEqual (v1,v2)=>boolean Customize the data diff algorithm
    content (v,ext)=>ReactNode Customize the data rendering method
    arrayKey string Key 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