fix(extension): bannière visible dès l'injection + exclusion store-assets
Bug réel : la bannière 'Surlignez le texte à clipper' n'apparaissait jamais en pratique parce que le side panel envoyait SET_PICK_MODE avant que le content script ne soit prêt (race condition MV3 entre chrome.scripting.executeScript et la mise en place du listener chrome.runtime.onMessage). Le retry PING dans ensureContentScript ne suffisait pas : le listener sidepanel peut aussi être en retard. Fix radical : content.js affiche la bannière IMMÉDIATEMENT à l'initialisation, sans attendre SET_PICK_MODE. L'utilisateur voit immédiatement que l'extension est active. Un bouton ✕ permet de la fermer (state local au tab). Pas de dépendance sur le side panel pour le feedback visuel. + manifest : retrait de optional_host_permissions (redondant avec host_permissions http://*/* et https://*/*, peut perturber Chrome en dev). + bannière rediseignée : max-width 640px responsive, animation slideIn, bouton ✕ accessible. + nouvelles clés i18n bannerDismiss dans les 15 locales. + build : exclusion de store-assets/ du zip et du xpi (sinon le package Store faisait 327 Ko au lieu de 47 Ko).
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "إغلاق"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Schließen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Dismiss"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Cerrar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "بستن"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Ignorer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "बंद करें"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Chiudi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "閉じる"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "닫기"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Sluiten"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Zamknij"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Fechar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Закрыть"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "关闭"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
/**
|
/**
|
||||||
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
||||||
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l’onglet était déjà ouvert.
|
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l'onglet était déjà ouvert.
|
||||||
|
*
|
||||||
|
* IMPORTANT : la bannière "Surlignez le texte à clipper" s'affiche dès
|
||||||
|
* l'injection du script, sans dépendre de SET_PICK_MODE. C'est volontaire :
|
||||||
|
* en MV3, le routage des messages entre side panel et content script
|
||||||
|
* peut être flaky (race conditions entre injection et listeners), donc
|
||||||
|
* on rend la bannière visible dès qu'on est là. L'utilisateur peut la
|
||||||
|
* fermer via le bouton ✕.
|
||||||
*/
|
*/
|
||||||
;(function initMementoClipperContent() {
|
;(function initMementoClipperContent() {
|
||||||
if (globalThis.__mementoClipperContent) return
|
if (globalThis.__mementoClipperContent) return
|
||||||
@@ -11,8 +18,13 @@
|
|||||||
const STYLE_ID = 'memento-clipper-styles'
|
const STYLE_ID = 'memento-clipper-styles'
|
||||||
|
|
||||||
let pickMode = false
|
let pickMode = false
|
||||||
|
let bannerDismissed = false
|
||||||
let debounceTimer = null
|
let debounceTimer = null
|
||||||
|
|
||||||
|
function isRestrictedUrl(url) {
|
||||||
|
return !url || /^(chrome|chrome-extension|edge|about|moz-extension|devtools|file):/i.test(url)
|
||||||
|
}
|
||||||
|
|
||||||
function getSelectionText() {
|
function getSelectionText() {
|
||||||
return window.getSelection()?.toString().trim() || ''
|
return window.getSelection()?.toString().trim() || ''
|
||||||
}
|
}
|
||||||
@@ -113,40 +125,64 @@
|
|||||||
|
|
||||||
function ensureBanner() {
|
function ensureBanner() {
|
||||||
if (document.getElementById(BANNER_ID)) return
|
if (document.getElementById(BANNER_ID)) return
|
||||||
|
if (!shouldShowBanner()) return
|
||||||
|
|
||||||
const bannerText =
|
const bannerText =
|
||||||
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
||||||
'Highlight the text to clip'
|
'Highlight the text on the page, or clip the whole page.'
|
||||||
|
const dismissLabel =
|
||||||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerDismiss')) ||
|
||||||
|
'Dismiss'
|
||||||
|
|
||||||
const host = document.createElement('div')
|
const host = document.createElement('div')
|
||||||
host.id = BANNER_ID
|
host.id = BANNER_ID
|
||||||
|
// Le host est positionné en fixed (hors flux) au top-center.
|
||||||
host.style.cssText =
|
host.style.cssText =
|
||||||
'all:initial;position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:none;font-family:Inter,system-ui,sans-serif;'
|
'position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:auto;font-family:Inter,system-ui,-apple-system,sans-serif;'
|
||||||
|
|
||||||
const shadow = host.attachShadow({ mode: 'open' })
|
const shadow = host.attachShadow({ mode: 'open' })
|
||||||
shadow.innerHTML = `
|
shadow.innerHTML = `
|
||||||
<style>
|
<style>
|
||||||
.pill {
|
:host { all: initial; }
|
||||||
display: flex; align-items: center; gap: 10px;
|
.wrap {
|
||||||
padding: 10px 18px; border-radius: 999px;
|
display: inline-flex; align-items: center; gap: 10px;
|
||||||
|
padding: 10px 10px 10px 18px; border-radius: 999px;
|
||||||
background: #1c1c1c; color: #faf9f5;
|
background: #1c1c1c; color: #faf9f5;
|
||||||
box-shadow: 0 12px 32px rgba(0,0,0,0.22);
|
box-shadow: 0 12px 32px rgba(0,0,0,0.32);
|
||||||
font-size: 12px; font-weight: 600;
|
font-size: 12px; font-weight: 600;
|
||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.01em;
|
||||||
|
max-width: min(640px, calc(100vw - 24px));
|
||||||
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
||||||
}
|
}
|
||||||
.logo {
|
.logo {
|
||||||
width: 22px; height: 22px; border-radius: 7px;
|
width: 22px; height: 22px; border-radius: 7px;
|
||||||
background: #faf9f5; color: #1c1c1c;
|
background: #faf9f5; color: #1c1c1c;
|
||||||
display: flex; align-items: center; justify-content: center;
|
display: flex; align-items: center; justify-content: center;
|
||||||
font-family: Georgia, serif; font-weight: 900; font-size: 12px;
|
font-family: Georgia, serif; font-weight: 900; font-size: 13px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.dot {
|
.dot {
|
||||||
width: 8px; height: 8px; border-radius: 50%;
|
width: 8px; height: 8px; border-radius: 50%;
|
||||||
background: #a47148; animation: pulse 1.2s ease infinite;
|
background: #a47148; animation: pulse 1.2s ease infinite;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
width: 22px; height: 22px; border-radius: 50%;
|
||||||
|
background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.7);
|
||||||
|
border: none; cursor: pointer; display: flex;
|
||||||
|
align-items: center; justify-content: center;
|
||||||
|
font-size: 14px; line-height: 1; font-weight: 700;
|
||||||
|
flex-shrink: 0; transition: background 0.15s, color 0.15s;
|
||||||
|
}
|
||||||
|
.close:hover {
|
||||||
|
background: rgba(255,255,255,0.18); color: #fff;
|
||||||
}
|
}
|
||||||
@keyframes slideIn {
|
@keyframes slideIn {
|
||||||
from { opacity: 0; transform: translateY(-8px); }
|
from { opacity: 0; transform: translateY(-10px); }
|
||||||
to { opacity: 1; transform: translateY(0); }
|
to { opacity: 1; transform: translateY(0); }
|
||||||
}
|
}
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
@@ -154,13 +190,26 @@
|
|||||||
50% { opacity: 0.5; transform: scale(0.85); }
|
50% { opacity: 0.5; transform: scale(0.85); }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="pill">
|
<div class="wrap" role="status" aria-live="polite">
|
||||||
<span class="logo">M</span>
|
<span class="logo">M</span>
|
||||||
<span class="dot"></span>
|
<span class="dot"></span>
|
||||||
<span>${bannerText.replace(/</g, '<')}</span>
|
<span class="text">${bannerText.replace(/</g, '<')}</span>
|
||||||
|
<button type="button" class="close" aria-label="${dismissLabel}">×</button>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|
||||||
document.documentElement.appendChild(host)
|
document.documentElement.appendChild(host)
|
||||||
|
|
||||||
|
// Bind le bouton ✕ — ferme la bannière pour cette session d'onglet.
|
||||||
|
const closeBtn = shadow.querySelector('.close')
|
||||||
|
if (closeBtn) {
|
||||||
|
closeBtn.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault()
|
||||||
|
e.stopPropagation()
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPickMode(enabled) {
|
function setPickMode(enabled) {
|
||||||
@@ -181,15 +230,21 @@
|
|||||||
if (pickMode) paintHighlight()
|
if (pickMode) paintHighlight()
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('selectionchange', broadcastSelection)
|
// Ne rien faire sur les pages restreintes (chrome://, file://, etc.)
|
||||||
document.addEventListener('mouseup', broadcastSelection)
|
if (isRestrictedUrl(location.href)) {
|
||||||
document.addEventListener('keyup', broadcastSelection)
|
// On écoute quand même les messages au cas où le side panel veut
|
||||||
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
// quand même parler (ex: pour info).
|
||||||
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
} else {
|
||||||
|
document.addEventListener('selectionchange', broadcastSelection)
|
||||||
|
document.addEventListener('mouseup', broadcastSelection)
|
||||||
|
document.addEventListener('keyup', broadcastSelection)
|
||||||
|
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
||||||
|
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
||||||
|
}
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
||||||
if (message?.type === 'PING') {
|
if (message?.type === 'PING') {
|
||||||
sendResponse({ ok: true })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (message?.type === 'GET_CONTEXT') {
|
if (message?.type === 'GET_CONTEXT') {
|
||||||
@@ -204,8 +259,24 @@
|
|||||||
sendResponse({ ok: true, pickMode })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if (message?.type === 'DISMISS_BANNER') {
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
sendResponse({ ok: true })
|
||||||
|
return true
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// === AFFICHAGE IMMÉDIAT DE LA BANNIÈRE ===
|
||||||
|
// On n'attend pas SET_PICK_MODE — le side panel peut être lent à nous
|
||||||
|
// parler (race conditions MV3). La bannière est le seul signal visuel
|
||||||
|
// pour l'utilisateur que l'extension est active et qu'il peut clipper.
|
||||||
|
// L'utilisateur peut la fermer via le bouton ✕.
|
||||||
|
if (!isRestrictedUrl(location.href)) {
|
||||||
|
setPickMode(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notifie le side panel qu'on est là (peut aider à amorcer).
|
||||||
broadcastSelection()
|
broadcastSelection()
|
||||||
})()
|
})()
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "إغلاق"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Schließen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Dismiss"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Cerrar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "بستن"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Ignorer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "बंद करें"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Chiudi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "閉じる"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "닫기"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Sluiten"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Zamknij"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Fechar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Закрыть"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "关闭"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
/**
|
/**
|
||||||
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
||||||
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l’onglet était déjà ouvert.
|
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l'onglet était déjà ouvert.
|
||||||
|
*
|
||||||
|
* IMPORTANT : la bannière "Surlignez le texte à clipper" s'affiche dès
|
||||||
|
* l'injection du script, sans dépendre de SET_PICK_MODE. C'est volontaire :
|
||||||
|
* en MV3, le routage des messages entre side panel et content script
|
||||||
|
* peut être flaky (race conditions entre injection et listeners), donc
|
||||||
|
* on rend la bannière visible dès qu'on est là. L'utilisateur peut la
|
||||||
|
* fermer via le bouton ✕.
|
||||||
*/
|
*/
|
||||||
;(function initMementoClipperContent() {
|
;(function initMementoClipperContent() {
|
||||||
if (globalThis.__mementoClipperContent) return
|
if (globalThis.__mementoClipperContent) return
|
||||||
@@ -11,8 +18,13 @@
|
|||||||
const STYLE_ID = 'memento-clipper-styles'
|
const STYLE_ID = 'memento-clipper-styles'
|
||||||
|
|
||||||
let pickMode = false
|
let pickMode = false
|
||||||
|
let bannerDismissed = false
|
||||||
let debounceTimer = null
|
let debounceTimer = null
|
||||||
|
|
||||||
|
function isRestrictedUrl(url) {
|
||||||
|
return !url || /^(chrome|chrome-extension|edge|about|moz-extension|devtools|file):/i.test(url)
|
||||||
|
}
|
||||||
|
|
||||||
function getSelectionText() {
|
function getSelectionText() {
|
||||||
return window.getSelection()?.toString().trim() || ''
|
return window.getSelection()?.toString().trim() || ''
|
||||||
}
|
}
|
||||||
@@ -113,40 +125,64 @@
|
|||||||
|
|
||||||
function ensureBanner() {
|
function ensureBanner() {
|
||||||
if (document.getElementById(BANNER_ID)) return
|
if (document.getElementById(BANNER_ID)) return
|
||||||
|
if (!shouldShowBanner()) return
|
||||||
|
|
||||||
const bannerText =
|
const bannerText =
|
||||||
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
||||||
'Highlight the text to clip'
|
'Highlight the text on the page, or clip the whole page.'
|
||||||
|
const dismissLabel =
|
||||||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerDismiss')) ||
|
||||||
|
'Dismiss'
|
||||||
|
|
||||||
const host = document.createElement('div')
|
const host = document.createElement('div')
|
||||||
host.id = BANNER_ID
|
host.id = BANNER_ID
|
||||||
|
// Le host est positionné en fixed (hors flux) au top-center.
|
||||||
host.style.cssText =
|
host.style.cssText =
|
||||||
'all:initial;position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:none;font-family:Inter,system-ui,sans-serif;'
|
'position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:auto;font-family:Inter,system-ui,-apple-system,sans-serif;'
|
||||||
|
|
||||||
const shadow = host.attachShadow({ mode: 'open' })
|
const shadow = host.attachShadow({ mode: 'open' })
|
||||||
shadow.innerHTML = `
|
shadow.innerHTML = `
|
||||||
<style>
|
<style>
|
||||||
.pill {
|
:host { all: initial; }
|
||||||
display: flex; align-items: center; gap: 10px;
|
.wrap {
|
||||||
padding: 10px 18px; border-radius: 999px;
|
display: inline-flex; align-items: center; gap: 10px;
|
||||||
|
padding: 10px 10px 10px 18px; border-radius: 999px;
|
||||||
background: #1c1c1c; color: #faf9f5;
|
background: #1c1c1c; color: #faf9f5;
|
||||||
box-shadow: 0 12px 32px rgba(0,0,0,0.22);
|
box-shadow: 0 12px 32px rgba(0,0,0,0.32);
|
||||||
font-size: 12px; font-weight: 600;
|
font-size: 12px; font-weight: 600;
|
||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.01em;
|
||||||
|
max-width: min(640px, calc(100vw - 24px));
|
||||||
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
||||||
}
|
}
|
||||||
.logo {
|
.logo {
|
||||||
width: 22px; height: 22px; border-radius: 7px;
|
width: 22px; height: 22px; border-radius: 7px;
|
||||||
background: #faf9f5; color: #1c1c1c;
|
background: #faf9f5; color: #1c1c1c;
|
||||||
display: flex; align-items: center; justify-content: center;
|
display: flex; align-items: center; justify-content: center;
|
||||||
font-family: Georgia, serif; font-weight: 900; font-size: 12px;
|
font-family: Georgia, serif; font-weight: 900; font-size: 13px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.dot {
|
.dot {
|
||||||
width: 8px; height: 8px; border-radius: 50%;
|
width: 8px; height: 8px; border-radius: 50%;
|
||||||
background: #a47148; animation: pulse 1.2s ease infinite;
|
background: #a47148; animation: pulse 1.2s ease infinite;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
width: 22px; height: 22px; border-radius: 50%;
|
||||||
|
background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.7);
|
||||||
|
border: none; cursor: pointer; display: flex;
|
||||||
|
align-items: center; justify-content: center;
|
||||||
|
font-size: 14px; line-height: 1; font-weight: 700;
|
||||||
|
flex-shrink: 0; transition: background 0.15s, color 0.15s;
|
||||||
|
}
|
||||||
|
.close:hover {
|
||||||
|
background: rgba(255,255,255,0.18); color: #fff;
|
||||||
}
|
}
|
||||||
@keyframes slideIn {
|
@keyframes slideIn {
|
||||||
from { opacity: 0; transform: translateY(-8px); }
|
from { opacity: 0; transform: translateY(-10px); }
|
||||||
to { opacity: 1; transform: translateY(0); }
|
to { opacity: 1; transform: translateY(0); }
|
||||||
}
|
}
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
@@ -154,13 +190,26 @@
|
|||||||
50% { opacity: 0.5; transform: scale(0.85); }
|
50% { opacity: 0.5; transform: scale(0.85); }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="pill">
|
<div class="wrap" role="status" aria-live="polite">
|
||||||
<span class="logo">M</span>
|
<span class="logo">M</span>
|
||||||
<span class="dot"></span>
|
<span class="dot"></span>
|
||||||
<span>${bannerText.replace(/</g, '<')}</span>
|
<span class="text">${bannerText.replace(/</g, '<')}</span>
|
||||||
|
<button type="button" class="close" aria-label="${dismissLabel}">×</button>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|
||||||
document.documentElement.appendChild(host)
|
document.documentElement.appendChild(host)
|
||||||
|
|
||||||
|
// Bind le bouton ✕ — ferme la bannière pour cette session d'onglet.
|
||||||
|
const closeBtn = shadow.querySelector('.close')
|
||||||
|
if (closeBtn) {
|
||||||
|
closeBtn.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault()
|
||||||
|
e.stopPropagation()
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPickMode(enabled) {
|
function setPickMode(enabled) {
|
||||||
@@ -181,15 +230,21 @@
|
|||||||
if (pickMode) paintHighlight()
|
if (pickMode) paintHighlight()
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('selectionchange', broadcastSelection)
|
// Ne rien faire sur les pages restreintes (chrome://, file://, etc.)
|
||||||
document.addEventListener('mouseup', broadcastSelection)
|
if (isRestrictedUrl(location.href)) {
|
||||||
document.addEventListener('keyup', broadcastSelection)
|
// On écoute quand même les messages au cas où le side panel veut
|
||||||
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
// quand même parler (ex: pour info).
|
||||||
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
} else {
|
||||||
|
document.addEventListener('selectionchange', broadcastSelection)
|
||||||
|
document.addEventListener('mouseup', broadcastSelection)
|
||||||
|
document.addEventListener('keyup', broadcastSelection)
|
||||||
|
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
||||||
|
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
||||||
|
}
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
||||||
if (message?.type === 'PING') {
|
if (message?.type === 'PING') {
|
||||||
sendResponse({ ok: true })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (message?.type === 'GET_CONTEXT') {
|
if (message?.type === 'GET_CONTEXT') {
|
||||||
@@ -204,8 +259,24 @@
|
|||||||
sendResponse({ ok: true, pickMode })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if (message?.type === 'DISMISS_BANNER') {
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
sendResponse({ ok: true })
|
||||||
|
return true
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// === AFFICHAGE IMMÉDIAT DE LA BANNIÈRE ===
|
||||||
|
// On n'attend pas SET_PICK_MODE — le side panel peut être lent à nous
|
||||||
|
// parler (race conditions MV3). La bannière est le seul signal visuel
|
||||||
|
// pour l'utilisateur que l'extension est active et qu'il peut clipper.
|
||||||
|
// L'utilisateur peut la fermer via le bouton ✕.
|
||||||
|
if (!isRestrictedUrl(location.href)) {
|
||||||
|
setPickMode(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notifie le side panel qu'on est là (peut aider à amorcer).
|
||||||
broadcastSelection()
|
broadcastSelection()
|
||||||
})()
|
})()
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 49 KiB |
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "إغلاق"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Schließen"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Dismiss"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Cerrar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "بستن"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Ignorer"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "बंद करें"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Chiudi"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "閉じる"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "닫기"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Sluiten"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Zamknij"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Fechar"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Закрыть"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,5 +186,8 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "关闭"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,13 @@
|
|||||||
/**
|
/**
|
||||||
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
* Content script Memento — sélection live, surlignage, communication avec le side panel.
|
||||||
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l’onglet était déjà ouvert.
|
* Injecté automatiquement sur http(s) ; ré-injecté à la demande si l'onglet était déjà ouvert.
|
||||||
|
*
|
||||||
|
* IMPORTANT : la bannière "Surlignez le texte à clipper" s'affiche dès
|
||||||
|
* l'injection du script, sans dépendre de SET_PICK_MODE. C'est volontaire :
|
||||||
|
* en MV3, le routage des messages entre side panel et content script
|
||||||
|
* peut être flaky (race conditions entre injection et listeners), donc
|
||||||
|
* on rend la bannière visible dès qu'on est là. L'utilisateur peut la
|
||||||
|
* fermer via le bouton ✕.
|
||||||
*/
|
*/
|
||||||
;(function initMementoClipperContent() {
|
;(function initMementoClipperContent() {
|
||||||
if (globalThis.__mementoClipperContent) return
|
if (globalThis.__mementoClipperContent) return
|
||||||
@@ -11,8 +18,13 @@
|
|||||||
const STYLE_ID = 'memento-clipper-styles'
|
const STYLE_ID = 'memento-clipper-styles'
|
||||||
|
|
||||||
let pickMode = false
|
let pickMode = false
|
||||||
|
let bannerDismissed = false
|
||||||
let debounceTimer = null
|
let debounceTimer = null
|
||||||
|
|
||||||
|
function isRestrictedUrl(url) {
|
||||||
|
return !url || /^(chrome|chrome-extension|edge|about|moz-extension|devtools|file):/i.test(url)
|
||||||
|
}
|
||||||
|
|
||||||
function getSelectionText() {
|
function getSelectionText() {
|
||||||
return window.getSelection()?.toString().trim() || ''
|
return window.getSelection()?.toString().trim() || ''
|
||||||
}
|
}
|
||||||
@@ -113,40 +125,64 @@
|
|||||||
|
|
||||||
function ensureBanner() {
|
function ensureBanner() {
|
||||||
if (document.getElementById(BANNER_ID)) return
|
if (document.getElementById(BANNER_ID)) return
|
||||||
|
if (!shouldShowBanner()) return
|
||||||
|
|
||||||
const bannerText =
|
const bannerText =
|
||||||
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerPickText')) ||
|
||||||
'Highlight the text to clip'
|
'Highlight the text on the page, or clip the whole page.'
|
||||||
|
const dismissLabel =
|
||||||
|
(typeof chrome !== 'undefined' && chrome.i18n?.getMessage?.('bannerDismiss')) ||
|
||||||
|
'Dismiss'
|
||||||
|
|
||||||
const host = document.createElement('div')
|
const host = document.createElement('div')
|
||||||
host.id = BANNER_ID
|
host.id = BANNER_ID
|
||||||
|
// Le host est positionné en fixed (hors flux) au top-center.
|
||||||
host.style.cssText =
|
host.style.cssText =
|
||||||
'all:initial;position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:none;font-family:Inter,system-ui,sans-serif;'
|
'position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:2147483647;pointer-events:auto;font-family:Inter,system-ui,-apple-system,sans-serif;'
|
||||||
|
|
||||||
const shadow = host.attachShadow({ mode: 'open' })
|
const shadow = host.attachShadow({ mode: 'open' })
|
||||||
shadow.innerHTML = `
|
shadow.innerHTML = `
|
||||||
<style>
|
<style>
|
||||||
.pill {
|
:host { all: initial; }
|
||||||
display: flex; align-items: center; gap: 10px;
|
.wrap {
|
||||||
padding: 10px 18px; border-radius: 999px;
|
display: inline-flex; align-items: center; gap: 10px;
|
||||||
|
padding: 10px 10px 10px 18px; border-radius: 999px;
|
||||||
background: #1c1c1c; color: #faf9f5;
|
background: #1c1c1c; color: #faf9f5;
|
||||||
box-shadow: 0 12px 32px rgba(0,0,0,0.22);
|
box-shadow: 0 12px 32px rgba(0,0,0,0.32);
|
||||||
font-size: 12px; font-weight: 600;
|
font-size: 12px; font-weight: 600;
|
||||||
letter-spacing: 0.02em;
|
letter-spacing: 0.01em;
|
||||||
|
max-width: min(640px, calc(100vw - 24px));
|
||||||
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
animation: slideIn 0.35s cubic-bezier(0.22,1,0.36,1);
|
||||||
}
|
}
|
||||||
.logo {
|
.logo {
|
||||||
width: 22px; height: 22px; border-radius: 7px;
|
width: 22px; height: 22px; border-radius: 7px;
|
||||||
background: #faf9f5; color: #1c1c1c;
|
background: #faf9f5; color: #1c1c1c;
|
||||||
display: flex; align-items: center; justify-content: center;
|
display: flex; align-items: center; justify-content: center;
|
||||||
font-family: Georgia, serif; font-weight: 900; font-size: 12px;
|
font-family: Georgia, serif; font-weight: 900; font-size: 13px;
|
||||||
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.dot {
|
.dot {
|
||||||
width: 8px; height: 8px; border-radius: 50%;
|
width: 8px; height: 8px; border-radius: 50%;
|
||||||
background: #a47148; animation: pulse 1.2s ease infinite;
|
background: #a47148; animation: pulse 1.2s ease infinite;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
.close {
|
||||||
|
width: 22px; height: 22px; border-radius: 50%;
|
||||||
|
background: rgba(255,255,255,0.08); color: rgba(255,255,255,0.7);
|
||||||
|
border: none; cursor: pointer; display: flex;
|
||||||
|
align-items: center; justify-content: center;
|
||||||
|
font-size: 14px; line-height: 1; font-weight: 700;
|
||||||
|
flex-shrink: 0; transition: background 0.15s, color 0.15s;
|
||||||
|
}
|
||||||
|
.close:hover {
|
||||||
|
background: rgba(255,255,255,0.18); color: #fff;
|
||||||
}
|
}
|
||||||
@keyframes slideIn {
|
@keyframes slideIn {
|
||||||
from { opacity: 0; transform: translateY(-8px); }
|
from { opacity: 0; transform: translateY(-10px); }
|
||||||
to { opacity: 1; transform: translateY(0); }
|
to { opacity: 1; transform: translateY(0); }
|
||||||
}
|
}
|
||||||
@keyframes pulse {
|
@keyframes pulse {
|
||||||
@@ -154,13 +190,26 @@
|
|||||||
50% { opacity: 0.5; transform: scale(0.85); }
|
50% { opacity: 0.5; transform: scale(0.85); }
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<div class="pill">
|
<div class="wrap" role="status" aria-live="polite">
|
||||||
<span class="logo">M</span>
|
<span class="logo">M</span>
|
||||||
<span class="dot"></span>
|
<span class="dot"></span>
|
||||||
<span>${bannerText.replace(/</g, '<')}</span>
|
<span class="text">${bannerText.replace(/</g, '<')}</span>
|
||||||
|
<button type="button" class="close" aria-label="${dismissLabel}">×</button>
|
||||||
</div>
|
</div>
|
||||||
`
|
`
|
||||||
|
|
||||||
document.documentElement.appendChild(host)
|
document.documentElement.appendChild(host)
|
||||||
|
|
||||||
|
// Bind le bouton ✕ — ferme la bannière pour cette session d'onglet.
|
||||||
|
const closeBtn = shadow.querySelector('.close')
|
||||||
|
if (closeBtn) {
|
||||||
|
closeBtn.addEventListener('click', (e) => {
|
||||||
|
e.preventDefault()
|
||||||
|
e.stopPropagation()
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setPickMode(enabled) {
|
function setPickMode(enabled) {
|
||||||
@@ -181,15 +230,21 @@
|
|||||||
if (pickMode) paintHighlight()
|
if (pickMode) paintHighlight()
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('selectionchange', broadcastSelection)
|
// Ne rien faire sur les pages restreintes (chrome://, file://, etc.)
|
||||||
document.addEventListener('mouseup', broadcastSelection)
|
if (isRestrictedUrl(location.href)) {
|
||||||
document.addEventListener('keyup', broadcastSelection)
|
// On écoute quand même les messages au cas où le side panel veut
|
||||||
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
// quand même parler (ex: pour info).
|
||||||
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
} else {
|
||||||
|
document.addEventListener('selectionchange', broadcastSelection)
|
||||||
|
document.addEventListener('mouseup', broadcastSelection)
|
||||||
|
document.addEventListener('keyup', broadcastSelection)
|
||||||
|
window.addEventListener('scroll', onScrollOrResize, { passive: true, capture: true })
|
||||||
|
window.addEventListener('resize', onScrollOrResize, { passive: true })
|
||||||
|
}
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
||||||
if (message?.type === 'PING') {
|
if (message?.type === 'PING') {
|
||||||
sendResponse({ ok: true })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (message?.type === 'GET_CONTEXT') {
|
if (message?.type === 'GET_CONTEXT') {
|
||||||
@@ -204,8 +259,24 @@
|
|||||||
sendResponse({ ok: true, pickMode })
|
sendResponse({ ok: true, pickMode })
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if (message?.type === 'DISMISS_BANNER') {
|
||||||
|
bannerDismissed = true
|
||||||
|
removeBanner()
|
||||||
|
sendResponse({ ok: true })
|
||||||
|
return true
|
||||||
|
}
|
||||||
return false
|
return false
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// === AFFICHAGE IMMÉDIAT DE LA BANNIÈRE ===
|
||||||
|
// On n'attend pas SET_PICK_MODE — le side panel peut être lent à nous
|
||||||
|
// parler (race conditions MV3). La bannière est le seul signal visuel
|
||||||
|
// pour l'utilisateur que l'extension est active et qu'il peut clipper.
|
||||||
|
// L'utilisateur peut la fermer via le bouton ✕.
|
||||||
|
if (!isRestrictedUrl(location.href)) {
|
||||||
|
setPickMode(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Notifie le side panel qu'on est là (peut aider à amorcer).
|
||||||
broadcastSelection()
|
broadcastSelection()
|
||||||
})()
|
})()
|
||||||
|
|||||||
@@ -15,9 +15,6 @@
|
|||||||
"https://memento-note.com/*",
|
"https://memento-note.com/*",
|
||||||
"https://www.memento-note.com/*"
|
"https://www.memento-note.com/*"
|
||||||
],
|
],
|
||||||
"optional_host_permissions": [
|
|
||||||
"https://*/*"
|
|
||||||
],
|
|
||||||
"background": {
|
"background": {
|
||||||
"service_worker": "background.js"
|
"service_worker": "background.js"
|
||||||
},
|
},
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 49 KiB |
@@ -13,273 +13,275 @@ const VERSION = "0.4.0"
|
|||||||
// post-edited with placeholder hardening.
|
// post-edited with placeholder hardening.
|
||||||
|
|
||||||
const PACK_B64 = `
|
const PACK_B64 = `
|
||||||
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
|
||||||
`
|
`
|
||||||
|
|
||||||
function loadStrings () {
|
function loadStrings () {
|
||||||
|
|||||||
@@ -189,6 +189,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Dismiss"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fr": {
|
"fr": {
|
||||||
@@ -379,6 +382,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Ignorer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"de": {
|
"de": {
|
||||||
@@ -569,6 +575,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Schließen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es": {
|
"es": {
|
||||||
@@ -759,6 +768,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Cerrar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"it": {
|
"it": {
|
||||||
@@ -949,6 +961,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Chiudi"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pt": {
|
"pt": {
|
||||||
@@ -1139,6 +1154,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Fechar"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nl": {
|
"nl": {
|
||||||
@@ -1329,6 +1347,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Sluiten"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pl": {
|
"pl": {
|
||||||
@@ -1519,6 +1540,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Zamknij"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ru": {
|
"ru": {
|
||||||
@@ -1709,6 +1733,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "Закрыть"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"zh": {
|
"zh": {
|
||||||
@@ -1899,6 +1926,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "关闭"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ja": {
|
"ja": {
|
||||||
@@ -2089,6 +2119,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "閉じる"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ko": {
|
"ko": {
|
||||||
@@ -2279,6 +2312,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "닫기"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ar": {
|
"ar": {
|
||||||
@@ -2469,6 +2505,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "إغلاق"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fa": {
|
"fa": {
|
||||||
@@ -2659,6 +2698,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "بستن"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hi": {
|
"hi": {
|
||||||
@@ -2849,6 +2891,9 @@
|
|||||||
"content": "$1"
|
"content": "$1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"bannerDismiss": {
|
||||||
|
"message": "बंद करें"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,9 +12,6 @@
|
|||||||
"http://*/*",
|
"http://*/*",
|
||||||
"https://*/*"
|
"https://*/*"
|
||||||
],
|
],
|
||||||
"optional_host_permissions": [
|
|
||||||
"https://*/*"
|
|
||||||
],
|
|
||||||
"background": {
|
"background": {
|
||||||
"service_worker": "background.js"
|
"service_worker": "background.js"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ async function build() {
|
|||||||
copyFiles(extRoot, distDir, [
|
copyFiles(extRoot, distDir, [
|
||||||
// Top-level directories to skip entirely (do not even create empty folders)
|
// Top-level directories to skip entirely (do not even create empty folders)
|
||||||
(rel, isDir) => isDir && /^dist-/i.test(rel),
|
(rel, isDir) => isDir && /^dist-/i.test(rel),
|
||||||
(rel, isDir) => isDir && (rel === 'scripts' || rel === 'i18n'),
|
(rel, isDir) => isDir && (rel === 'scripts' || rel === 'i18n' || rel === 'store-assets'),
|
||||||
// File-level patterns
|
// File-level patterns
|
||||||
/\.md$/,
|
/\.md$/,
|
||||||
/^node_modules$/,
|
/^node_modules$/,
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ async function build() {
|
|||||||
log('📋 Copying extension files...', 'blue')
|
log('📋 Copying extension files...', 'blue')
|
||||||
copyFiles(extRoot, distDir, [
|
copyFiles(extRoot, distDir, [
|
||||||
(rel, isDir) => isDir && /^dist-/i.test(rel),
|
(rel, isDir) => isDir && /^dist-/i.test(rel),
|
||||||
(rel, isDir) => isDir && (rel === 'scripts' || rel === 'i18n'),
|
(rel, isDir) => isDir && (rel === 'scripts' || rel === 'i18n' || rel === 'store-assets'),
|
||||||
/\.md$/,
|
/\.md$/,
|
||||||
/^node_modules$/,
|
/^node_modules$/,
|
||||||
/^diagnose\.js$/,
|
/^diagnose\.js$/,
|
||||||
|
|||||||