slate-devtools
Version:
`slate-devtools` as name suggests it is devtool for [slatejs](https://github.com/ianstormtaylor/slate) which will assist you in debugging the code
124 lines (90 loc) • 2.86 kB
Markdown
You can try the `slate-devtools` in your project by
```bash
npm i -D slate-devtools
```
Once you installed you can use devtools in your project
```tsx
import {Devtools, withDevtools} from "slate-devtools"
const Editor = () => {
const [value, setValue] = useState(initialValue);
const editor = useMemo(() => withDevtools(withReact(createEditor())), []);
return (
<div>
<div>
<Slate value={value} editor={editor} onChange={setValue}>
<Editable>
</Slate>
</div>
<Devtools value={value} editor={editor} />
</div>
)
}
```
The props for `Devtools` are
```tsx
type DevtoolsProps = {
value: Node[]; // NodeList value to show in devtools
editor: ReactEditor; // Corresponding editor
module?: {
[]: unknown;
};
open?: boolean;
height?: string;
style?: CSSProperties;
type?: string;
};
```
`value` takes `Node[]` which you pass to `editor`
`editor` takes `ReactEditor` of the `value` you passed
The `module` takes an object whose `value` will be exposed by their `keys` in `ScriptEditor`
Setting `open` to `true` will make the `Devtools` to open by default.
By default it is set to `false`
Set the height of the `Devtools` by default it is `325px`
Use it to change the position of the `Open Button`
It sets what key the devtools should check in an Element to get the type of node.
By default the value of type is `type`.
This example element stores the type of element in key `value`
```tsx
const initialValue = [
{
value: "paragraph",
children: [
{ text: "This is editable " },
{ text: "rich", bold: true },
{ text: " text, " },
{ text: "much", italic: true },
{ text: " better than a " },
{ text: "<textarea>", code: true },
{ text: "!" },
],
},
];
```
This example element stores the type of element in key `type`
```tsx
const initialValue = [
{
type: "paragraph",
children: [
{ text: "This is editable " },
{ text: "rich", bold: true },
{ text: " text, " },
{ text: "much", italic: true },
{ text: " better than a " },
{ text: "<textarea>", code: true },
{ text: "!" },
],
},
];
```
The project is in super early life of its development as a result I still didnt implement any animations, visual feedback is not good enough, its not responsive, styling can be improved a lot, `RenderHistory` does not provide a lot of useful information and it is filled with unnecessary information.
I am working on fixing these as soon as possible