@rich-data/viewer
TypeScript icon, indicating that this package has built-in type declarations

2.15.6 • Public • Published

@rich-data/viewer

npm npm npm codecov

This is a React component for JSON viewer, but not only a JSON viewer.

Usage

NPM

npm install @rich-data/viewer

Yarn

yarn add @rich-data/viewer

PNPM

pnpm add @rich-data/viewer

Type Declaration

see src/type.ts

Basic Example

import '@rich-data/viewer/theme/base.css'

import { JsonViewer } from '@rich-data/viewer'

const object = { /* my json object */ }
const Component = () => (<JsonViewer value={object}/>)

Customizable data type

import '@rich-data/viewer/theme/base.css'

import { JsonViewer, createDataType } from '@rich-data/viewer'

const object = {
  // what if I want to inspect a image?
  image: 'https://i.imgur.com/1bX5QH6.jpg',
  // ... other values
}
const Component = () => (
  <JsonViewer
    value={object}
    // just define it
    valueTypes={[
      {
        is: (value) => typeof value === 'string' && value.startsWith('https://i.imgur.com'),
        Component: (props) => <Image height={50} width={50} src={props.value} alt={props.value}/>,
      },
      // or
      createDataType(
        (value) => typeof value === 'string' && value.startsWith('https://i.imgur.com'),
        (props) => <Image height={50} width={50} src={props.value} alt={props.value}/>,
      )
    ]}
  />
)

Avatar Preview

see the full code

Base 16 Theme Support

export const ocean: NamedColorspace = {
  scheme: 'Ocean',
  author: 'Chris Kempson (http://chriskempson.com)',
  base00: '#2b303b',
  base01: '#343d46',
  base02: '#4f5b66',
  base03: '#65737e',
  base04: '#a7adba',
  base05: '#c0c5ce',
  base06: '#dfe1e8',
  base07: '#eff1f5',
  base08: '#bf616a',
  base09: '#d08770',
  base0A: '#ebcb8b',
  base0B: '#a3be8c',
  base0C: '#96b5b4',
  base0D: '#8fa1b3',
  base0E: '#b48ead',
  base0F: '#ab7967'
}

const Component = () => (
  <JsonViewer
    value={object}
    theme={ocean}
  />
)

Ocean Theme Preview

Browser

<!DOCTYPE html>
<html lang="en">
<body>
<div id="json-viewer"></div>
<script src="https://cdn.jsdelivr.net/npm/@rich-data/viewer"></script>
<script>
  new JsonViewer({
    value: { /* ... */ }
  }).render()
</script>
</body>
</html>

Features

  • [X] 100% TypeScript
  • [X] Customizable
    • [X] keyRenderer for customize key renderer
    • [X] valueTypes for customize any value types you want
    • [X] light | dark | base16 Theme support
    • [ ] custom metadata
  • [X] Support Next.js SSR
  • [X] onChange props allow users to edit value
  • [X] Inspect object, Array, primitive type, even Map and Set by default.
  • [X] Metadata preview, like total items, length of string...
  • [X] Copy to Clipboard on Click
  • [ ] Editor for basic types
  • [ ] Fully Test Coverage

Contributors

Acknowledge

This package is originally based on mac-s-g/react-json-view.

Also thanks open source projects that make this possible.

Services

Powered by Vercel

LICENSE

This project is licensed under the terms of the MIT license.

Package Sidebar

Install

npm i @rich-data/viewer

Weekly Downloads

109

Version

2.15.6

License

MIT

Unpacked Size

889 kB

Total Files

10

Last publish

Collaborators

  • himself_65