diff --git a/src/assets/lexicon_icon.js b/src/assets/lexicon_icon.js index 7b843b8605d5f0ff76923c105c351741d089f53a..2929fee20b3bb9437f34227045be257e7495b4a9 100644 --- a/src/assets/lexicon_icon.js +++ b/src/assets/lexicon_icon.js @@ -1,5 +1,3 @@ -console.log("lexicon_icon.js chargé"); - /** * Sélectionne aléatoirement une couleur dans une palette prédéfinie. * @returns {string} Une couleur au format hexadécimal ou HSL. @@ -65,7 +63,6 @@ function createColorCircle(color, size = 32) { return circle; } -// Exposez ces fonctions globalement pour qu'elles soient accessibles dans d'autres scripts. window.generateRandomColor = generateRandomColor; window.getOrCreateLexiconColor = getOrCreateLexiconColor; window.createColorCircle = createColorCircle; diff --git a/src/context_menu/custom_context_menu.js b/src/context_menu/custom_context_menu.js index c37004ac729b2534d8512d49a07af331eb0b7273..ae90611bbcbc3fc318caafca72f2dd8d141814f0 100644 --- a/src/context_menu/custom_context_menu.js +++ b/src/context_menu/custom_context_menu.js @@ -33,7 +33,6 @@ function injectWhiteBox() { if (!whiteBox) { whiteBox = document.createElement("div"); whiteBox.id = WHITE_BOX_ID; - // Styles essentiels whiteBox.style.position = "absolute"; whiteBox.style.zIndex = "9999"; whiteBox.style.backgroundColor = "#fff"; @@ -41,7 +40,6 @@ function injectWhiteBox() { whiteBox.style.padding = "5px"; whiteBox.style.borderRadius = "4px"; whiteBox.style.boxShadow = "0px 2px 10px rgba(0,0,0,0.2)"; - // Génération des URLs des icônes const addLexiconPath = browser.runtime.getURL("src/assets/icons/ajout_lexique.png"); const getDefinitionPath = browser.runtime.getURL("src/assets/icons/definition.png"); const loginPath = browser.runtime.getURL("src/assets/icons/connexion.png"); @@ -67,7 +65,6 @@ function injectWhiteBox() { document.body.appendChild(whiteBox); setupWhiteBoxActions(); } - // Empêcher la propagation des clics dans le menu whiteBox.addEventListener("mouseup", (e) => { e.stopPropagation(); }); @@ -186,7 +183,6 @@ function hideWhiteBox() { // Écoute globale pour la sélection de texte document.addEventListener("mouseup", (event) => { - // Si le clic se fait à l'intérieur du whiteBox, ne rien faire if (event.target.closest("#whiteBox")) return; const selectedText = window.getSelection().toString().trim(); if (selectedText) { @@ -222,13 +218,12 @@ browser.storage.onChanged.addListener((changes) => { } }); - // ───────────────────────────────────────────────────────────────────────────── -// Fonctions d'API pour l'ajout d'un mot via le picker +// Fonctions d'API pour l'ajout d'un mot via le sélecteur // ───────────────────────────────────────────────────────────────────────────── /** - * Crée (ou récupère) le picker de sélection des lexiques. + * Crée (ou récupère) le sélecteur des lexiques. */ function createPicker() { let picker = document.getElementById("lexiconPicker"); @@ -261,9 +256,8 @@ function createPicker() { return picker; } - /** - * Affiche le picker pour choisir le lexique dans lequel ajouter le mot. + * Affiche le sélecteur pour choisir le lexique dans lequel ajouter le mot. */ async function showPicker(event, selectedText) { let picker = document.getElementById("lexiconPicker"); @@ -283,18 +277,14 @@ async function showPicker(event, selectedText) { if (!Array.isArray(lexicons) || lexicons.length === 0) { picker.innerHTML = "<p style='color:#333;'>Aucun lexique trouvé.</p>"; } else { - // Ajout des icônes directement dans le picker for (const lex of lexicons) { const id = lex.id; const name = lex.category === "User" ? `Lexique personnel : ${lex.user?.pseudo || "Inconnu"} (${lex.id})` : `Lexique de groupe : ${lex.group?.name || "Inconnu"} (${lex.id})`; - // Obtenir la couleur et créer un cercle (l'icône) const color = await getOrCreateLexiconColor(id); const circleIcon = createColorCircle(color, 28); - - // Création du conteneur pour l'icône const iconContainer = document.createElement("div"); iconContainer.className = "lexicon-option"; iconContainer.dataset.lexiconId = id; @@ -312,7 +302,6 @@ async function showPicker(event, selectedText) { picker.appendChild(iconContainer); } - // Création du bouton de validation qui passera sur une nouvelle ligne const confirmButton = document.createElement("button"); confirmButton.className = "confirmButton"; confirmButton.textContent = "Ajouter le mot"; @@ -329,7 +318,7 @@ async function showPicker(event, selectedText) { try { definitions = await fetchLexiconDefinitions(selectedText); } catch (error) { - console.error("⌠Erreur lors de la récupération des définitions :", error); + console.error("Erreur lors de la récupération des définitions :", error); } const existingLexiconIds = new Set(); @@ -354,7 +343,7 @@ async function showPicker(event, selectedText) { try { console.log(`📡 Ajout du mot "${selectedText}" dans les lexiques :`, lexiconsToAdd); const result = await AddWord(authToken, selectedText, lexiconsToAdd, false); - console.log("✅ Réponse API :", result); + console.log("Réponse API :", result); await new Promise(resolve => setTimeout(resolve, 300)); browser.runtime.sendMessage({ action: "refreshUI" }); @@ -379,7 +368,6 @@ async function showPicker(event, selectedText) { picker.appendChild(confirmButton); } - // Positionner et afficher le picker picker.style.left = event.pageX + "px"; picker.style.top = event.pageY + "px"; picker.style.display = "flex"; @@ -401,17 +389,13 @@ document.addEventListener("mouseup", (event) => { const whiteBox = document.getElementById(WHITE_BOX_ID); const picker = document.getElementById("lexiconPicker"); - // Masquer whiteBox si le clic est en dehors if (whiteBox && !whiteBox.contains(event.target)) { hideWhiteBox(); } - - // Masquer picker si le clic est en dehors if (picker && !picker.contains(event.target)) { hideLexiconPicker(); } - - // Vérifier s'il y a du texte sélectionné + const selectedText = window.getSelection().toString().trim(); if (selectedText) { console.log("Texte sélectionné :", selectedText); diff --git a/src/sidebar/sidebar.html b/src/sidebar/sidebar.html index 6d189ef5945c9e1bde5e5d12bc135e436ef914f3..84ab2a28c0d0e272f945eac156287775ce676ace 100644 --- a/src/sidebar/sidebar.html +++ b/src/sidebar/sidebar.html @@ -164,7 +164,7 @@ overflow: visible; } - /* Style uniformisé pour tous les tooltips */ + /* Style pour tous les tooltips */ .tooltip { all: unset; display: block; @@ -194,7 +194,6 @@ opacity: 1; transform: translateX(-50%) translateY(-5px); } - /* Positionnement ajusté si le conteneur est trop proche des bords */ .tooltip-container.left .tooltip { left: 0; transform: translateX(0) translateY(-5px); @@ -256,11 +255,8 @@ filter: brightness(0) saturate(100%) invert(83%) sepia(89%) saturate(588%) hue-rotate(360deg); } - /* Cibler les tooltips à l'intérieur d'un bouton de surlignage */ button.lexique-highlight-toggle .tooltip { - /* Réinitialiser toute influence du style global du bouton */ all: unset; - /* Appliquer les styles désirés pour le tooltip */ display: block; box-sizing: border-box; position: absolute; @@ -284,14 +280,11 @@ line-height: normal; } - /* Lors du survol du conteneur, afficher le tooltip */ button.lexique-highlight-toggle:hover .tooltip { opacity: 1; transform: translateX(-50%) translateY(-5px); } - - /* Autres styles divers */ .lexicon-section { margin-bottom: 10px; } diff --git a/src/sidebar/sidebar.js b/src/sidebar/sidebar.js index c937cc67870a842cb4b7943fb14c349d79dbc6f1..8b8000124f211b1224065f359e63978b6ae60900 100644 --- a/src/sidebar/sidebar.js +++ b/src/sidebar/sidebar.js @@ -224,7 +224,6 @@ async function displayLexiconsWithCheckbox(lexicons) { const lexiqueDiv = document.createElement("div"); lexiqueDiv.className = "lexique-item"; - // Obtenir la couleur associée de façon asynchrone const color = await getOrCreateLexiconColor(lexiconId); const circleIcon = createColorCircle(color, 24); @@ -255,7 +254,7 @@ async function displayLexiconsWithCheckbox(lexicons) { highlightButton.dataset.lexiconId = lexiconId; highlightButton.dataset.active = active ? "true" : "false"; const feutreIcon = document.createElement("img"); - feutreIcon.src = "../assets/icons/feutre.png"; // Vérifiez le chemin relatif + feutreIcon.src = "../assets/icons/feutre.png"; feutreIcon.alt = "Feutre"; feutreIcon.className = "feutre-icon"; const highlightTooltip = document.createElement("span"); @@ -280,8 +279,6 @@ async function displayLexiconsWithCheckbox(lexicons) { highlightButton.appendChild(feutreIcon); highlightButton.appendChild(highlightTooltip); - - // Assemblage final lexiqueDiv.appendChild(iconDiv); lexiqueDiv.appendChild(labelSpan); lexiqueDiv.appendChild(checkboxContainer); @@ -290,7 +287,6 @@ async function displayLexiconsWithCheckbox(lexicons) { lexiquesContainer.appendChild(lexiqueDiv); } - // Ajustement dynamique des tooltips (après un court délai) setTimeout(() => { const menu = document.getElementById("menu"); if (!menu) return; @@ -315,9 +311,6 @@ async function displayLexiconsWithCheckbox(lexicons) { }, 100); } - - - function initModal() { console.log("initModal appelé"); const modalOverlay = document.getElementById("modalOverlay"); @@ -353,11 +346,6 @@ async function handleAuthButtonClick() { // ───────────────────────────────────────────────────────────────────────────── // ▌ Ajout d'un mot au(x) lexique(s) // ───────────────────────────────────────────────────────────────────────────── -/** - * Au clic sur le bouton "add-word-button", - * on récupère le mot sélectionné (#motSelectionne) - * et les lexiques cochés, puis on appelle AddWord. - */ async function handleAddWordClick() { openBlock("menuContent"); // 1) Vérifier la présence du token et du mot @@ -419,7 +407,7 @@ async function handleAddWordClick() { // 5) Déterminer les lexiques où ajouter le mot const lexiconsToAdd = selectedLexiconIds.filter(id => !existingLexiconIds.has(id)); if (lexiconsToAdd.length === 0) { - return; // Rien à ajouter, tous les lexiques sélectionnés contiennent déjà le mot + return; } // 6) Envoi d’une seule requête pour tous les lexiques restants @@ -427,7 +415,7 @@ async function handleAddWordClick() { console.log(`📡 Envoi de l'ajout du mot "${selectedWord}" dans les lexiques :`, lexiconsToAdd); const result = await window.AddWord(authToken, selectedWord, lexiconsToAdd, false); - console.log("✅ Réponse API :", result); + console.log("Réponse API :", result); // Rafraîchir l'UI et la liste des entrées await new Promise(resolve => setTimeout(resolve, 300)); @@ -441,17 +429,13 @@ async function handleAddWordClick() { } } catch (error) { - console.error("⌠Erreur lors de l’ajout du mot :", error); + console.error("Erreur lors de l’ajout du mot :", error); if (lexiconResultElement) { lexiconResultElement.textContent = "Erreur lors de l’ajout : " + error.message; } } } - - - - // ───────────────────────────────────────────────────────────────────────────── // ▌ Réception des messages // ───────────────────────────────────────────────────────────────────────────── @@ -611,18 +595,15 @@ document.addEventListener("DOMContentLoaded", async () => { }); document.querySelectorAll('.toggle-btn').forEach(btn => { - // Forcer l'affichage initial à "+" btn.textContent = '+'; btn.style.fontSize = '15px'; - // Gestion du clic sur le bouton btn.addEventListener('click', (event) => { event.stopPropagation(); const header = btn.parentElement; const content = header.nextElementSibling; if (content) { content.classList.toggle('hidden'); - // Mettre à jour le texte du bouton selon l'état du bloc btn.textContent = content.classList.contains('hidden') ? '+' : '–'; } }); @@ -635,10 +616,10 @@ document.querySelectorAll('.toggle-btn').forEach(btn => { const blockContent = this.parentElement.nextElementSibling; if (blockContent.classList.contains('hidden')) { blockContent.classList.remove('hidden'); - this.textContent = '–'; // affiche le symbole pour fermer + this.textContent = '–'; } else { blockContent.classList.add('hidden'); - this.textContent = '+'; // affiche le symbole pour ouvrir + this.textContent = '+'; } }); });