diff --git a/packages/slate-react/src/components/editable.tsx b/packages/slate-react/src/components/editable.tsx
index ebac078c0..6c2598745 100644
--- a/packages/slate-react/src/components/editable.tsx
+++ b/packages/slate-react/src/components/editable.tsx
@@ -13,7 +13,7 @@ import { HistoryEditor } from 'slate-history'
import throttle from 'lodash/throttle'
import scrollIntoView from 'scroll-into-view-if-needed'
-import Children from './children'
+import useChildren from '../hooks/use-children'
import Hotkeys from '../utils/hotkeys'
import {
IS_FIREFOX,
@@ -986,14 +986,14 @@ export const Editable = (props: EditableProps) => {
[readOnly, attributes.onPaste]
)}
>
-
+ {useChildren({
+ decorate,
+ decorations,
+ node: editor,
+ renderElement,
+ renderLeaf,
+ selection: editor.selection,
+ })}
)
diff --git a/packages/slate-react/src/components/element.tsx b/packages/slate-react/src/components/element.tsx
index 8d35cb581..2a54737ac 100644
--- a/packages/slate-react/src/components/element.tsx
+++ b/packages/slate-react/src/components/element.tsx
@@ -3,7 +3,7 @@ import getDirection from 'direction'
import { Editor, Node, Range, NodeEntry, Element as SlateElement } from 'slate'
import Text from './text'
-import Children from './children'
+import useChildren from '../hooks/use-children'
import { ReactEditor, useSlateStatic, useReadOnly } from '..'
import { SelectedContext } from '../hooks/use-selected'
import { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'
@@ -42,16 +42,14 @@ const Element = (props: {
const isInline = editor.isInline(element)
const key = ReactEditor.findKey(editor, element)
- let children: JSX.Element | null = (
-
- )
+ let children: JSX.Element | null = useChildren({
+ decorate,
+ decorations,
+ node: element,
+ renderElement,
+ renderLeaf,
+ selection,
+ })
// Attributes that the developer must mix into the element in their
// custom node renderer component.
diff --git a/packages/slate-react/src/components/children.tsx b/packages/slate-react/src/hooks/use-children.tsx
similarity index 86%
rename from packages/slate-react/src/components/children.tsx
rename to packages/slate-react/src/hooks/use-children.tsx
index 2c206c4cb..564c692d0 100644
--- a/packages/slate-react/src/components/children.tsx
+++ b/packages/slate-react/src/hooks/use-children.tsx
@@ -1,18 +1,18 @@
import React from 'react'
import { Editor, Range, Element, NodeEntry, Ancestor, Descendant } from 'slate'
-import ElementComponent from './element'
-import TextComponent from './text'
+import ElementComponent from '../components/element'
+import TextComponent from '../components/text'
import { ReactEditor } from '..'
-import { useSlateStatic } from '../hooks/use-slate-static'
+import { useSlateStatic } from './use-slate-static'
import { NODE_TO_INDEX, NODE_TO_PARENT } from '../utils/weak-maps'
-import { RenderElementProps, RenderLeafProps } from './editable'
+import { RenderElementProps, RenderLeafProps } from '../components/editable'
/**
* Children.
*/
-const Children = (props: {
+const useChildren = (props: {
decorate: (entry: NodeEntry) => Range[]
decorations: Range[]
node: Ancestor
@@ -81,7 +81,7 @@ const Children = (props: {
NODE_TO_PARENT.set(n, node)
}
- return {children}
+ return children
}
-export default Children
+export default useChildren