From a66d0419b04cf33338d54e25b472c8d75e2aefa2 Mon Sep 17 00:00:00 2001 From: "YUKI \"Piro\" Hiroshi" Date: Sat, 17 Dec 2022 01:41:16 +0900 Subject: [PATCH] Optimize --- webextensions/content_scripts/content.js | 4 ++-- webextensions/content_scripts/range.js | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/webextensions/content_scripts/content.js b/webextensions/content_scripts/content.js index 85c0bd9..f8b3834 100644 --- a/webextensions/content_scripts/content.js +++ b/webextensions/content_scripts/content.js @@ -207,7 +207,7 @@ async function findURIRanges(options = {}) { const followings = getFollowingRanges(selectionRange); const rangeData = getRangeData(selectionRange); rangeData.text = selectionText; - rangeData.expandedText = `${precedings.map(part => part.text).join('')}${selectionText}${followings.map(part => part.text).join('')}`; + rangeData.expandedText = `${precedings.texts.join('')}${selectionText}${followings.texts.join('')}`; selectionRanges.push(rangeData); } const ranges = await browser.runtime.sendMessage({ @@ -235,7 +235,7 @@ function getSelectionEventData(event) { const selectionRange = selection.getRangeAt(0); const precedings = getPrecedingRanges(selectionRange); const followings = getFollowingRanges(selectionRange); - text = `${precedings.map(part => part.text).join('')}${rangeToText(selectionRange)}${followings.map(part => part.text).join('')}`; + text = `${precedings.texts.join('')}${rangeToText(selectionRange)}${followings.texts.join('')}`; cursor = getRangeData(selectionRange); } diff --git a/webextensions/content_scripts/range.js b/webextensions/content_scripts/range.js index a4ab815..4de6ceb 100644 --- a/webextensions/content_scripts/range.js +++ b/webextensions/content_scripts/range.js @@ -74,6 +74,7 @@ function nodeToText(node) { } function getPrecedingRanges(sourceRange) { + const texts = []; const ranges = []; const range = document.createRange(); range.setStart(sourceRange.startContainer, sourceRange.startOffset); @@ -103,7 +104,8 @@ function getPrecedingRanges(sourceRange) { continue; case STATE_CONTINUE_VISUALLY: - ranges.unshift({ range: range.cloneRange(), text }); + texts.unshift(text); + ranges.unshift(range.cloneRange()); text = partialText; range.collapse(true); continue; @@ -112,11 +114,13 @@ function getPrecedingRanges(sourceRange) { break; } } - ranges.unshift({ range, text }); - return ranges; + texts.unshift(text); + ranges.unshift(range); + return { texts, ranges }; } function getFollowingRanges(sourceRange) { + const texts = []; const ranges = []; const range = document.createRange(); range.setStart(sourceRange.endContainer, sourceRange.endOffset); @@ -146,7 +150,8 @@ function getFollowingRanges(sourceRange) { continue; case STATE_CONTINUE_VISUALLY: - ranges.push({ range: range.cloneRange(), text }); + texts.push(text); + ranges.push(range.cloneRange()); text = partialText; range.collapse(false); continue; @@ -155,8 +160,9 @@ function getFollowingRanges(sourceRange) { break; } } - ranges.push({ range, text }); - return ranges; + texts.push(text); + ranges.push(range); + return { texts, ranges }; } function createVisibleTextNodeWalker() {