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>
|
<li>
|
||||||
<button value="clipboard" class="not-selected">clipboard</button>
|
<button value="clipboard" class="not-selected">clipboard</button>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<button value="question-to-answer" class="not-selected">question to answer</button>
|
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="line mt center-y">
|
<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) {
|
function handleClipboard(config: Config, gptAnswer: GPTAnswer) {
|
||||||
if (config.title) titleIndications('Copied to clipboard');
|
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;
|
export default handleClipboard;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import Logs from 'background/utils/logs';
|
|||||||
import getChatGPTResponse from './get-response';
|
import getChatGPTResponse from './get-response';
|
||||||
import createAndNormalizeQuestion from './create-question';
|
import createAndNormalizeQuestion from './create-question';
|
||||||
import clipboardMode from './modes/clipboard';
|
import clipboardMode from './modes/clipboard';
|
||||||
import questionToAnswerMode from './modes/question-to-answer';
|
|
||||||
import autoCompleteMode from './modes/autocomplete';
|
import autoCompleteMode from './modes/autocomplete';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
@@ -56,13 +55,6 @@ async function reply(props: Props): Promise<void> {
|
|||||||
removeListener: props.removeListener
|
removeListener: props.removeListener
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'question-to-answer':
|
|
||||||
questionToAnswerMode({
|
|
||||||
gptAnswer,
|
|
||||||
questionElement: props.questionElement,
|
|
||||||
removeListener: props.removeListener
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
case 'autocomplete':
|
case 'autocomplete':
|
||||||
autoCompleteMode({
|
autoCompleteMode({
|
||||||
config: props.config,
|
config: props.config,
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ type Config = {
|
|||||||
timeout?: boolean;
|
timeout?: boolean;
|
||||||
history?: boolean;
|
history?: boolean;
|
||||||
includeImages?: boolean;
|
includeImages?: boolean;
|
||||||
mode?: 'autocomplete' | 'question-to-answer' | 'clipboard';
|
mode?: 'autocomplete' | 'clipboard';
|
||||||
baseURL?: string;
|
baseURL?: string;
|
||||||
projectId?: string;
|
projectId?: string;
|
||||||
maxTokens?: number;
|
maxTokens?: number;
|
||||||
|
|||||||
@@ -6,8 +6,7 @@ const toExcludes = ['includeImages'];
|
|||||||
// inputs id that need to be disabled for a specific mode
|
// inputs id that need to be disabled for a specific mode
|
||||||
const disabledForThisMode: Record<string, string[]> = {
|
const disabledForThisMode: Record<string, string[]> = {
|
||||||
autocomplete: [],
|
autocomplete: [],
|
||||||
clipboard: ['typing', 'mouseover'],
|
clipboard: ['typing', 'mouseover']
|
||||||
'question-to-answer': ['typing', 'infinite', 'mouseover']
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user