From 3e78ee2ffbb9f10f4d8fa30723f02a752fa402e1 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Wed, 30 Oct 2024 23:03:13 +0800 Subject: feat: add context menu-item to disable custom menu --- addon/background.js | 23 ++++++++++++++++++++--- addon/index.mjs | 9 +++++++-- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'addon') diff --git a/addon/background.js b/addon/background.js index ac742ab..c723b4c 100644 --- a/addon/background.js +++ b/addon/background.js @@ -4,7 +4,23 @@ browser.contextMenus.create( { id: 'map-inline-add', title: 'Add Links and Maps by content', - contexts: ['page'], + contexts: ['all'], + }, +) + +browser.contextMenus.create( + { + id: 'map-inline-menu', + title: 'Enable Menu', + type: 'checkbox', + checked: true, + contexts: ['all'], + }, +) + +browser.contextMenus.create( + { + type: 'separator', }, ) @@ -12,16 +28,17 @@ browser.contextMenus.create( { id: 'map-inline-open', title: 'Open in DumbyMap', - contexts: ['page', 'selection'], + contexts: ['all'], }, () => browser.runtime.lastError, ) browser.contextMenus.onClicked.addListener((info, tab) => { const id = info.menuItemId + const checked = info.checked if (!id.match(/^map-inline/)) return - browser.tabs.sendMessage(tab.id, id) + browser.tabs.sendMessage(tab.id, { id, checked }) }) browser.browserAction.onClicked.addListener((info) => { diff --git a/addon/index.mjs b/addon/index.mjs index 10af4bd..dd8fa11 100644 --- a/addon/index.mjs +++ b/addon/index.mjs @@ -35,16 +35,21 @@ const simpleRender = mapclay.renderWith(config => ({ }, })) +const container = document.querySelector(contentSelector ?? 'main') ?? document.body + browser.runtime.onMessage.addListener((message, sender, sendResponse) => { /* eslint-disable-next-line no-console */ console.log('receive message', message) sendResponse('received') - if (message === 'map-inline-add') { - generateMaps(document.querySelector(contentSelector ?? 'main') ?? document.body, { + if (message.id === 'map-inline-add') { + generateMaps(container, { crs: url.searchParams.get('crs') ?? 'EPSG:4326', render: simpleRender, }) return Promise.resolve('done') + } else if (message.id === 'map-inline-menu') { + container.dataset.menu = message.checked ? 'enabled' : 'disabled' + return Promise.resolve('done') } return false }) -- cgit v1.2.3-70-g09d2