added an helper to select an asnwer with a single click. see #104
This commit is contained in:
parent
ea8c2975d6
commit
11d42b7e3f
1 changed files with 56 additions and 1 deletions
|
|
@ -25,6 +25,7 @@ let force_go = false;
|
||||||
let current_message = null;
|
let current_message = null;
|
||||||
let current_action = null;
|
let current_action = null;
|
||||||
let selectionChangeTimeout = null;
|
let selectionChangeTimeout = null;
|
||||||
|
let isDragging = false;
|
||||||
|
|
||||||
async function chatgpt_sendMsg(msg, method ='') { // return -1 send button not found, -2 textarea not found
|
async function chatgpt_sendMsg(msg, method ='') { // return -1 send button not found, -2 textarea not found
|
||||||
const textArea = document.querySelector('form textarea'),
|
const textArea = document.querySelector('form textarea'),
|
||||||
|
|
@ -370,7 +371,7 @@ function getSelectedHtml() {
|
||||||
tempDiv.appendChild(range.cloneContents());
|
tempDiv.appendChild(range.cloneContents());
|
||||||
|
|
||||||
// Return the HTML of the selected content
|
// Return the HTML of the selected content
|
||||||
return tempDiv.innerHTML;
|
return tempDiv.innerHTML.replace(/^<p>"/, '<p>').replace(/"<\\/p>$/, '</p>'); // strip quotation marks;
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
@ -402,6 +403,56 @@ document.addEventListener("selectionchange", function() {
|
||||||
}, 300); // Delay in milliseconds
|
}, 300); // Delay in milliseconds
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function selectContentOnMouseDown(event) {
|
||||||
|
// Reset the dragging flag when the mouse is pressed down
|
||||||
|
isDragging = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectContentOnMouseMove(event) {
|
||||||
|
// Set the dragging flag to true if the mouse moves
|
||||||
|
isDragging = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectContentOnMouseUp(event) {
|
||||||
|
if ((!isDragging)&&(!isSomethingSelected())) {
|
||||||
|
// If no dragging has occurred, execute the selection code
|
||||||
|
selectContentOnClick(event);
|
||||||
|
}
|
||||||
|
// Remove the event listeners to prevent future executions
|
||||||
|
// document.removeEventListener('mousedown', selectContentOnMouseDown);
|
||||||
|
// document.removeEventListener('mousemove', selectContentOnMouseMove);
|
||||||
|
// document.removeEventListener('mouseup', selectContentOnMouseUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectContentOnClick(event) {
|
||||||
|
// Prevent the default behavior of the click
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
// Get the element that was clicked
|
||||||
|
var clickedElement = event.target;
|
||||||
|
|
||||||
|
// Traverse the DOM upwards to find the nearest parent div
|
||||||
|
var parentDiv = clickedElement.closest('div');
|
||||||
|
|
||||||
|
if (parentDiv) {
|
||||||
|
// Create a range object
|
||||||
|
var range = document.createRange();
|
||||||
|
|
||||||
|
// Select the contents of the div
|
||||||
|
range.selectNodeContents(parentDiv);
|
||||||
|
|
||||||
|
// Get the selection object
|
||||||
|
var selection = window.getSelection();
|
||||||
|
|
||||||
|
// Clear any existing selections
|
||||||
|
selection.removeAllRanges();
|
||||||
|
|
||||||
|
// Add the new range to the selection
|
||||||
|
selection.addRange(range);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// In the content script
|
// In the content script
|
||||||
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||||
if (message.command === "chatgpt_send") {
|
if (message.command === "chatgpt_send") {
|
||||||
|
|
@ -418,6 +469,10 @@ browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
|
||||||
} else {
|
} else {
|
||||||
await doProceed(message);
|
await doProceed(message);
|
||||||
}
|
}
|
||||||
|
// Add an event listener to the document to detect clicks
|
||||||
|
document.addEventListener('mousedown', selectContentOnMouseDown);
|
||||||
|
document.addEventListener('mousemove', selectContentOnMouseMove);
|
||||||
|
document.addEventListener('mouseup', selectContentOnMouseUp);
|
||||||
})();
|
})();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue