diff --git a/README.md b/README.md
index 79d5cc88..c8db97e0 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ see [src/type.ts](src/type.ts)
### Basic Example
-```tsx
+```jsx
import { JsonViewer } from '@textea/json-viewer'
const object = {
@@ -57,8 +57,8 @@ const Component = () =>
### Customizable data type
-```tsx
-import { JsonViewer, createDataType } from '@textea/json-viewer'
+```jsx
+import { JsonViewer, defineDataType } from '@textea/json-viewer'
const object = {
// what if I want to inspect a image?
@@ -75,10 +75,10 @@ const Component = () => (
Component: (props) =>
},
// or
- createDataType(
- (value) => typeof value === 'string' && value.startsWith('https://i.imgur.com'),
- (props) =>
- )
+ defineDataType({
+ is: (value) => typeof value === 'string' && value.startsWith('https://i.imgur.com'),
+ Component: (props) =>
+ })
]}
/>
)
diff --git a/docs/pages/full/index.tsx b/docs/pages/full/index.tsx
index b6fe4248..04b529be 100644
--- a/docs/pages/full/index.tsx
+++ b/docs/pages/full/index.tsx
@@ -20,7 +20,7 @@ import type {
} from '@textea/json-viewer'
import {
applyValue,
- createDataType,
+ defineDataType,
JsonViewer,
stringType
} from '@textea/json-viewer'
@@ -44,8 +44,8 @@ const aPlusBConst = function (a: number, b: number) {
}
const loopObject = {
- foo: 1,
- goo: 'string'
+ foo: 42,
+ goo: 'Lorem Ipsum'
} as Record
loopObject.self = loopObject
@@ -67,30 +67,35 @@ const set = new Set([1, 2, 3])
const superLongString = '1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
const example = {
+ avatar,
+ string: 'Lorem ipsum dolor sit amet',
+ integer: 42,
+ float: 114.514,
+ bigint: 123456789087654321n,
+ undefined,
+ timer: 0,
+ date: new Date('Tue Sep 13 2022 14:07:44 GMT-0500 (Central Daylight Time)'),
+ link: 'http://example.com',
+ emptyArray: [],
+ array: [19, 19, 810, 'test', NaN],
+ emptyObject: {},
+ object: {
+ foo: true,
+ bar: false,
+ last: null
+ },
+ emptyMap: new Map(),
+ map,
+ emptySet: new Set(),
+ set,
loopObject,
loopArray,
longArray,
- string: 'this is a string',
- integer: 42,
- array: [19, 19, 810, 'test', NaN],
- emptyArray: [],
nestedArray: [
[1, 2],
[3, 4]
],
- map,
- emptyMap: new Map(),
- set,
- emptySet: new Set(),
- float: 114.514,
- undefined,
superLongString,
- object: {
- 'first-child': true,
- 'second-child': false,
- 'last-child': null
- },
- emptyObject: {},
function: aPlusB,
constFunction: aPlusBConst,
anonymousFunction: function (a: number, b: number) {
@@ -101,12 +106,7 @@ const example = {
console.log(arg1, arg2)
return '123'
},
- string_number: '1234',
- timer: 0,
- link: 'http://example.com',
- avatar,
- date: new Date('Tue Sep 13 2022 14:07:44 GMT-0500 (Central Daylight Time)'),
- bigint: 123456789087654321n
+ string_number: '1234'
}
const KeyRenderer: JsonViewerKeyRenderer = ({ path }) => {
@@ -116,8 +116,8 @@ const KeyRenderer: JsonViewerKeyRenderer = ({ path }) => {
}
KeyRenderer.when = (props) => props.value === 114.514
-const imageDataType = createDataType(
- (value) => {
+const imageDataType = defineDataType({
+ is: (value) => {
if (typeof value === 'string') {
try {
const url = new URL(value)
@@ -128,17 +128,18 @@ const imageDataType = createDataType(
}
return false
},
- (props) => {
+ Component: (props) => {
return (
)
}
-)
+})
const LinkIcon = (props: SvgIconProps) => (
//