trretretret's picture
basic
26ab438
import { utils } from "./utils.js";
import { view } from "./view.js";
let config = {
first_language: 'にほんご',
second_language: 'English'
}
// Create toolbar element
const toolbar = document.createElement("div");
toolbar.id = "esl-toolbar";
toolbar.style.position = "fixed"; // Make it stick to the top
toolbar.style.top = "0"; // Position at the very top
toolbar.style.left = "0"; // Position at the leftmost side
toolbar.style.width = "100%"; // Make it span the entire width
toolbar.style.backgroundColor = "lightgray"; // Example background color
toolbar.style.padding = "10px"; // Add some padding
// Create buttons
const askButton = document.createElement("button");
askButton.id = "ask-btn";
askButton.textContent = "Ask";
const correctBtn = document.createElement("button");
correctBtn.id = "correct-btn";
correctBtn.textContent = "Correct";
const translateBtn = document.createElement("button");
translateBtn.id = "translate-btn";
translateBtn.textContent = "Translate";
const explainBtn = document.createElement("button");
explainBtn.id = "explain-btn";
explainBtn.textContent = "Explain";
const defineBtn = document.createElement("button");
defineBtn.id = "define-btn";
defineBtn.textContent = "Define";
const removeButton = document.createElement("button");
removeButton.id = "remove-btn";
removeButton.textContent = "Hide";
// Append buttons to toolbar
toolbar.appendChild(askButton);
toolbar.appendChild(correctBtn);
toolbar.appendChild(translateBtn);
toolbar.appendChild(explainBtn);
toolbar.appendChild(defineBtn);
toolbar.appendChild(removeButton);
// Create content area
const contentArea = document.createElement("div");
contentArea.id = "content";
contentArea.contentEditable = true; // Allow user to select text
// Append toolbar and content area to the body
document.body.appendChild(toolbar);
document.body.appendChild(contentArea);
// Function to get selected text
function getSelectedText() {
return window.getSelection().toString();
}
// Implement functionalities for each button (same as before)
function ask(prompt) {
let currentLineString = utils.getCurrentLineString(document.activeElement);
let selectText = window.getSelection().toString();
prompt=`${prompt} **${selectText.length >= 1 ? selectText : currentLineString}** `
utils.displayMarkdown(prompt+'...');
utils.AIComplete(prompt,{
url: '/openai/v1/chat/completions',
model: 'llama3-8b-8192',
max_tokens:8000,
});
}
askButton.addEventListener("click", () => {
ask(' ');
});
// Correct Button:
correctBtn.addEventListener("click", () => {
ask('correct mistakes of the text: \n');
});
// Translate Button:
translateBtn.addEventListener("click", () => {
ask(`translate to ${config.first_language}:\n `);
});
// Explain Button:
explainBtn.addEventListener("click", () => {
ask('explain this for english seconds language learner in simple english:\n ');
});
// Define Button:
defineBtn.addEventListener("click", () => {
ask('define the word , first in simple english , and give some usage example:\n ' )
});
removeButton.addEventListener('click', () => toolbar.style.display = 'none')
// Style the toolbar
toolbar.style.position = "fixed";
toolbar.style.top = "0%";
toolbar.style.left = "0";
toolbar.style.width = "wrap-content";
toolbar.style.backgroundColor = "black"; // Light gray background
toolbar.style.padding = "5px";
toolbar.style.boxShadow = "0 2px 4px rgba(0, 0, 0, 0.1)"; // Add a subtle shadow
// Style the buttons
const buttonStyles = {
backgroundColor: "black", // Green background
border: "none",
color: "white",
padding: "2px",
textAlign: "center",
textDecoration: "none",
display: "inline-block",
fontSize: "small",
margin: "2px",
cursor: "pointer",
borderRadius: "5px", // Rounded corners
};
// Apply styles to each button
for (const button of [askButton, correctBtn, translateBtn, explainBtn, defineBtn, removeButton]) {
Object.assign(button.style, buttonStyles);
utils.makeButtonFeedback(button);
}
setTimeout(() => {
utils.displayMarkdown(`
hello, this is note for language learner
code will display like this:
\`\`\`
this code
\`\`\`
`)
view.createMenu(window.innerWidth*0.9, 300);
}, 1000);