refactor: update clipboard mode for JSON and remove question-to-answer mode
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -89,9 +89,6 @@
|
||||
<li>
|
||||
<button value="clipboard" class="not-selected">clipboard</button>
|
||||
</li>
|
||||
<li>
|
||||
<button value="question-to-answer" class="not-selected">question to answer</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="line mt center-y">
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,32 +0,0 @@
|
||||
import type GPTAnswer from '../../types/gpt-answer';
|
||||
|
||||
type Props = {
|
||||
questionElement: HTMLElement;
|
||||
gptAnswer: GPTAnswer;
|
||||
removeListener: () => void;
|
||||
};
|
||||
|
||||
/**
|
||||
* Question to answer mode:
|
||||
* Simply turn the question into the answer by clicking on it
|
||||
* @param props
|
||||
*/
|
||||
function questionToAnswerMode(props: Props) {
|
||||
const questionElement = props.questionElement;
|
||||
|
||||
props.removeListener();
|
||||
|
||||
const questionBackup = questionElement.innerHTML ?? '';
|
||||
questionElement.innerHTML = props.gptAnswer.response;
|
||||
questionElement.style.whiteSpace = 'pre-wrap';
|
||||
|
||||
// To go back to the question / answer
|
||||
questionElement.addEventListener('click', function () {
|
||||
const contentIsResponse = questionElement.innerHTML === props.gptAnswer.response;
|
||||
|
||||
questionElement.style.whiteSpace = contentIsResponse ? 'initial' : 'pre-wrap';
|
||||
questionElement.innerHTML = contentIsResponse ? questionBackup : props.gptAnswer.response;
|
||||
});
|
||||
}
|
||||
|
||||
export default questionToAnswerMode;
|
||||
@@ -9,7 +9,8 @@ import titleIndications from 'background/utils/title-indications';
|
||||
*/
|
||||
function handleClipboard(config: Config, gptAnswer: GPTAnswer) {
|
||||
if (config.title) titleIndications('Copied to clipboard');
|
||||
navigator.clipboard.writeText(gptAnswer.response);
|
||||
const textToCopy = gptAnswer.rawResponse || JSON.stringify(gptAnswer.response) || '';
|
||||
navigator.clipboard.writeText(textToCopy);
|
||||
}
|
||||
|
||||
export default handleClipboard;
|
||||
|
||||
@@ -3,7 +3,6 @@ import Logs from 'background/utils/logs';
|
||||
import getChatGPTResponse from './get-response';
|
||||
import createAndNormalizeQuestion from './create-question';
|
||||
import clipboardMode from './modes/clipboard';
|
||||
import questionToAnswerMode from './modes/question-to-answer';
|
||||
import autoCompleteMode from './modes/autocomplete';
|
||||
|
||||
type Props = {
|
||||
@@ -56,13 +55,6 @@ async function reply(props: Props): Promise<void> {
|
||||
removeListener: props.removeListener
|
||||
});
|
||||
break;
|
||||
case 'question-to-answer':
|
||||
questionToAnswerMode({
|
||||
gptAnswer,
|
||||
questionElement: props.questionElement,
|
||||
removeListener: props.removeListener
|
||||
});
|
||||
break;
|
||||
case 'autocomplete':
|
||||
autoCompleteMode({
|
||||
config: props.config,
|
||||
|
||||
@@ -11,7 +11,7 @@ type Config = {
|
||||
timeout?: boolean;
|
||||
history?: boolean;
|
||||
includeImages?: boolean;
|
||||
mode?: 'autocomplete' | 'question-to-answer' | 'clipboard';
|
||||
mode?: 'autocomplete' | 'clipboard';
|
||||
baseURL?: string;
|
||||
projectId?: string;
|
||||
maxTokens?: number;
|
||||
|
||||
@@ -6,8 +6,7 @@ const toExcludes = ['includeImages'];
|
||||
// inputs id that need to be disabled for a specific mode
|
||||
const disabledForThisMode: Record<string, string[]> = {
|
||||
autocomplete: [],
|
||||
clipboard: ['typing', 'mouseover'],
|
||||
'question-to-answer': ['typing', 'infinite', 'mouseover']
|
||||
clipboard: ['typing', 'mouseover']
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user