diff --git a/packages/block-library/src/list-item/edit.js b/packages/block-library/src/list-item/edit.js
index 46f8f67bbaebab..2240e1eb16a41d 100644
--- a/packages/block-library/src/list-item/edit.js
+++ b/packages/block-library/src/list-item/edit.js
@@ -8,7 +8,6 @@ import {
BlockControls,
} from '@wordpress/block-editor';
import { isRTL, __ } from '@wordpress/i18n';
-import { createBlock } from '@wordpress/blocks';
import { ToolbarButton } from '@wordpress/components';
import {
formatOutdent,
@@ -27,6 +26,7 @@ import {
useSpace,
useIndentListItem,
useOutdentListItem,
+ useSplit,
} from './hooks';
function IndentUI( { clientId } ) {
@@ -54,7 +54,6 @@ function IndentUI( { clientId } ) {
}
export default function ListItemEdit( {
- name,
attributes,
setAttributes,
mergeBlocks,
@@ -69,6 +68,7 @@ export default function ListItemEdit( {
const useEnterRef = useEnter( { content, clientId } );
const useBackspaceRef = useBackspace( { clientId } );
const useSpaceRef = useSpace( clientId );
+ const onSplit = useSplit( clientId );
return (
<>
@@ -86,12 +86,7 @@ export default function ListItemEdit( {
value={ content }
aria-label={ __( 'List text' ) }
placeholder={ placeholder || __( 'List' ) }
- onSplit={ ( value ) => {
- return createBlock( name, {
- ...attributes,
- content: value,
- } );
- } }
+ onSplit={ onSplit }
onMerge={ mergeBlocks }
onReplace={ onReplace }
/>
diff --git a/packages/block-library/src/list-item/hooks/index.js b/packages/block-library/src/list-item/hooks/index.js
index 5fcd802926065f..c78702b5781763 100644
--- a/packages/block-library/src/list-item/hooks/index.js
+++ b/packages/block-library/src/list-item/hooks/index.js
@@ -3,3 +3,4 @@ export { default as useIndentListItem } from './use-indent-list-item';
export { default as useEnter } from './use-enter';
export { default as useBackspace } from './use-backspace';
export { default as useSpace } from './use-space';
+export { default as useSplit } from './use-split';
diff --git a/packages/block-library/src/list-item/hooks/use-split.js b/packages/block-library/src/list-item/hooks/use-split.js
new file mode 100644
index 00000000000000..58e811f8c6783e
--- /dev/null
+++ b/packages/block-library/src/list-item/hooks/use-split.js
@@ -0,0 +1,24 @@
+/**
+ * WordPress dependencies
+ */
+import { useCallback } from '@wordpress/element';
+import { useSelect } from '@wordpress/data';
+import { store as blockEditorStore } from '@wordpress/block-editor';
+import { cloneBlock } from '@wordpress/blocks';
+
+export default function useSplit( clientId ) {
+ const { getBlock } = useSelect( blockEditorStore );
+ return useCallback(
+ ( value, isAfterOriginal ) => {
+ const block = getBlock( clientId );
+ return cloneBlock(
+ block,
+ {
+ content: value,
+ },
+ isAfterOriginal ? [] : block.innerBlocks
+ );
+ },
+ [ clientId, getBlock ]
+ );
+}