diff --git a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/get-prev-list-depth.ts b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/get-prev-list-depth.ts index c2ef5535c..fbc9d3aa5 100644 --- a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/get-prev-list-depth.ts +++ b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/get-prev-list-depth.ts @@ -18,10 +18,16 @@ export const getPrevListDepth = (typeOrName: string, state: EditorState) => { for (let d = resolvedPos.depth; d > 0; d--) { const node = resolvedPos.node(d); if (node.type.name === "bulletList" || node.type.name === "orderedList") { + // Increment depth for each list ancestor found depth++; } } - console.log("depth", depth); + // Subtract 1 from the calculated depth to get the parent list's depth + // This adjustment is necessary because the depth calculation includes the current list + // By subtracting 1, we aim to get the depth of the parent list, which helps in identifying if the current list is a sublist + depth = depth > 0 ? depth - 1 : 0; + + console.log("Parent list depth", depth); return depth; }; diff --git a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/handle-backspace.ts b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/handle-backspace.ts index 0a1520b5f..5dbc8325d 100644 --- a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/handle-backspace.ts +++ b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/handle-backspace.ts @@ -44,6 +44,7 @@ export const handleBackspace = (editor: Editor, name: string, parentListTypes: s .joinForward() .run(); } + const isCurrentListItemSublist = prevListIsHigher(name, editor.state); // if the cursor is not inside the current node type // do nothing and proceed @@ -65,7 +66,6 @@ export const handleBackspace = (editor: Editor, name: string, parentListTypes: s const currentNode = listItemPos.$pos.node(listItemPos.depth); const currentNodeSize = currentNode.nodeSize; const currentListItemHasSubList = listItemHasSubList(name, editor.state, currentNode); - const isCurrentListItemSublist = prevListIsHigher(name, editor.state); // __AUTO_GENERATED_PRINT_VAR_START__ console.log( "handleBackspace isCurrentListItemSublist: %s", @@ -83,6 +83,11 @@ export const handleBackspace = (editor: Editor, name: string, parentListTypes: s const previousListItemHasSubList = listItemHasSubList(name, editor.state, prevNode); // if the previous item is a list item and has a sublist, join the list items (this scenario only occurs when a sublist's first item is lifted) + if (currentListItemHasSubList && isCurrentListItemSublist) { + console.log("ran 2"); + editor.chain().liftListItem(name).run(); + return editor.commands.joinItemBackward(); + } if ( // hasListItemBefore(name, editor.state) && // currentListItemHasSubList && @@ -97,13 +102,20 @@ export const handleBackspace = (editor: Editor, name: string, parentListTypes: s // return editor.chain().liftListItem(name).run(); } + if (currentListItemHasSubList) { + console.log("ran 1"); + return false; + } + // if u are first node which has both parent list and sub list + // then do + // if the previous item is a list item and doesn't have a sublist, join the list items if (hasListItemBefore(name, editor.state)) { - console.log("ran 1"); + console.log("ran 3"); return editor.chain().liftListItem(name).run(); } - console.log("ran 2"); + console.log("ran 4"); // otherwise in the end, a backspace should // always just lift the list item if // joining / merging is not possible diff --git a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/list-item-has-sub-list.ts b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/list-item-has-sub-list.ts index 5c15a2b63..c9de6c549 100644 --- a/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/list-item-has-sub-list.ts +++ b/packages/editor/core/src/ui/extensions/custom-list-keymap/list-helpers/list-item-has-sub-list.ts @@ -10,12 +10,15 @@ export const listItemHasSubList = (typeOrName: string, state: EditorState, node? const nodeType = getNodeType(typeOrName, state.schema); let hasSubList = false; + console.log("node", node); node.descendants((child) => { if (child.type === nodeType) { + console.log("child", child.type, nodeType); hasSubList = true; } }); + console.log("before return", hasSubList); return hasSubList; };