From d090914d0cc956153475134afd2a27dc6c805912 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 30 Nov 2023 21:44:14 +0900 Subject: [PATCH 1/4] refactor to support default Case 2 --- src/index.js | 53 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/src/index.js b/src/index.js index a031ebef..b119a6c3 100644 --- a/src/index.js +++ b/src/index.js @@ -227,26 +227,55 @@ export default class NestedList { items: [], }; + // Pasted Case 1. + // + // Pasted Case 2 + // // get pasted items from the html. const getPastedItems = (parent) => { + let responseData = []; // get first level li elements. const children = Array.from(parent.querySelectorAll(`:scope > li`)); - return children.map((child) => { - // get subitems if they exist. - const subItemsWrapper = child.querySelector(`:scope > ${tagToSearch}`); - // get subitems. - const subItems = subItemsWrapper ? getPastedItems(subItemsWrapper) : []; - // get text content of the li element. - const content = child?.firstChild?.textContent || ''; - - return { - content, - items: subItems, - }; + children.map((child) => { + const listItem = getListItem(child); + responseData = responseData.concat(listItem); }); + + return responseData; }; + const getListItem = (list) => { + const nestedItems = getNestedListContainers(list); + return { + content: list?.firstChild?.textContent || '', + items: nestedItems + }; + } + + const getNestedListContainers = (parent) => { + let responseData = []; + const nestedListContainers = Array.from(parent.querySelectorAll(`:scope > ${tagToSearch}`)) + + nestedListContainers.map((nestedListContainer) => { + responseData = responseData.concat(getPastedItems(nestedListContainer)); + }); + + return responseData; + } + // get pasted items. data.items = getPastedItems(element); From 835c511bc959a9ce8c26c2ebd21618ee577ac3d4 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 30 Nov 2023 22:03:38 +0900 Subject: [PATCH 2/4] refactor to support default Case 1 --- src/index.js | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index b119a6c3..259e8539 100644 --- a/src/index.js +++ b/src/index.js @@ -247,11 +247,18 @@ export default class NestedList { const getPastedItems = (parent) => { let responseData = []; // get first level li elements. - const children = Array.from(parent.querySelectorAll(`:scope > li`)); + const children = Array.from(parent.querySelectorAll(`:scope > li, :scope > ${tagToSearch}`)); children.map((child) => { - const listItem = getListItem(child); - responseData = responseData.concat(listItem); + if (child.tagName === tag) { + const nestedListContainers = getNestedListContainers(parent); + const previousListItem = responseData.pop(); + previousListItem.items = nestedListContainers; + responseData = responseData.concat(previousListItem); + } else { + const listItem = getListItem(child); + responseData = responseData.concat(listItem); + } }); return responseData; From 40fe6a15472210c5b6324f5a3598d03ee7e52331 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 30 Nov 2023 22:05:46 +0900 Subject: [PATCH 3/4] refactor variable names --- src/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/index.js b/src/index.js index 259e8539..c1924284 100644 --- a/src/index.js +++ b/src/index.js @@ -251,9 +251,9 @@ export default class NestedList { children.map((child) => { if (child.tagName === tag) { - const nestedListContainers = getNestedListContainers(parent); + const nestedListGroup = getNestedListGroup(parent); const previousListItem = responseData.pop(); - previousListItem.items = nestedListContainers; + previousListItem.items = nestedListGroup; responseData = responseData.concat(previousListItem); } else { const listItem = getListItem(child); @@ -265,19 +265,19 @@ export default class NestedList { }; const getListItem = (list) => { - const nestedItems = getNestedListContainers(list); + const nestedItems = getNestedListGroup(list); return { content: list?.firstChild?.textContent || '', items: nestedItems }; } - const getNestedListContainers = (parent) => { + const getNestedListGroup = (parent) => { let responseData = []; - const nestedListContainers = Array.from(parent.querySelectorAll(`:scope > ${tagToSearch}`)) + const nestedListGroups = Array.from(parent.querySelectorAll(`:scope > ${tagToSearch}`)) - nestedListContainers.map((nestedListContainer) => { - responseData = responseData.concat(getPastedItems(nestedListContainer)); + nestedListGroups.map((nestedListGroup) => { + responseData = responseData.concat(getPastedItems(nestedListGroup)); }); return responseData; From 2370a26a9d3cd8a7413bd73ac42ac654eda3ba12 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 30 Nov 2023 22:10:36 +0900 Subject: [PATCH 4/4] bump up version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 71cd8d76..688a7576 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@editorjs/nested-list", - "version": "1.4.1", + "version": "1.5.0", "keywords": [ "codex editor", "nested-list",