From cf10119ad858b79d624d1e35814f534c20a9d362 Mon Sep 17 00:00:00 2001 From: Joe Anderson Date: Wed, 13 Aug 2025 22:27:19 +0100 Subject: [PATCH] Generic return type for `Node.fragment` (#5926) --- .changeset/pretty-cobras-sleep.md | 5 +++++ packages/slate/src/interfaces/node.ts | 15 +++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 .changeset/pretty-cobras-sleep.md diff --git a/.changeset/pretty-cobras-sleep.md b/.changeset/pretty-cobras-sleep.md new file mode 100644 index 000000000..908459db0 --- /dev/null +++ b/.changeset/pretty-cobras-sleep.md @@ -0,0 +1,5 @@ +--- +'slate': patch +--- + +Use generics for the return type of `Node.fragment` diff --git a/packages/slate/src/interfaces/node.ts b/packages/slate/src/interfaces/node.ts index 755578b40..89b2aad9f 100644 --- a/packages/slate/src/interfaces/node.ts +++ b/packages/slate/src/interfaces/node.ts @@ -127,7 +127,10 @@ export interface NodeInterface { /** * Get the sliced fragment represented by a range inside a root node. */ - fragment: (root: Node, range: Range) => Descendant[] + fragment: ( + root: T, + range: Range + ) => T['children'] /** * Get the descendant node referred to by a specific path. If the path is an @@ -353,15 +356,7 @@ export const Node: NodeInterface = { return [n, p] }, - fragment(root: Node, range: Range): Descendant[] { - if (Text.isText(root)) { - throw new Error( - `Cannot get a fragment starting from a root text node: ${Scrubber.stringify( - root - )}` - ) - } - + fragment(root: T, range: Range): T['children'] { const newRoot = produce({ children: root.children }, r => { const [start, end] = Range.edges(range) const nodeEntries = Node.nodes(r, {