diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-22 12:11:36 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-23 12:45:48 +0800 |
| commit | c17a238414ae4e2cc4b77d5186a66a4798b8e368 (patch) | |
| tree | a879c12fb1d3c9f896beac28f55b241a418f110b /addon | |
| parent | 5afa841fa06a095d63a435c8606d1ccd34b55ec7 (diff) | |
feat: set dumbymap just once
Diffstat (limited to 'addon')
| -rw-r--r-- | addon/index.mjs | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/addon/index.mjs b/addon/index.mjs index e2fede3..057cd90 100644 --- a/addon/index.mjs +++ b/addon/index.mjs | |||
| @@ -1,15 +1,5 @@ | |||
| 1 | console.log('content script loaded') | 1 | console.log('content script loaded') |
| 2 | 2 | ||
| 3 | browser.runtime.onMessage.addListener((message, sender, sendResponse) => { | ||
| 4 | console.log('receive message', message) | ||
| 5 | sendResponse('received') | ||
| 6 | if (message === 'map-inline') { | ||
| 7 | alert('msg', message) | ||
| 8 | return Promise.resolve('done') | ||
| 9 | } | ||
| 10 | return false | ||
| 11 | }) | ||
| 12 | |||
| 13 | const url = new URL(window.location) | 3 | const url = new URL(window.location) |
| 14 | const use = url.searchParams.get('use') | 4 | const use = url.searchParams.get('use') |
| 15 | if (url.host === 'www.ptt.cc') { | 5 | if (url.host === 'www.ptt.cc') { |
| @@ -23,17 +13,13 @@ if (url.host === 'www.ptt.cc') { | |||
| 23 | }) | 13 | }) |
| 24 | } | 14 | } |
| 25 | 15 | ||
| 26 | const blockSelectors = { | 16 | const contentSelectors = { |
| 27 | 'developer.mozilla': '.section-content', | 17 | 'developer.mozilla': ':has(.section-content)', |
| 28 | 'hackmd.io': '#doc > *', | 18 | 'hackmd.io': '#doc', |
| 29 | 'www.ptt.cc': '#main-content > span', | 19 | 'www.ptt.cc': '#main-content', |
| 30 | 'prosemirror.net': '.ProseMirror > *', | 20 | 'prosemirror.net': '.ProseMirror', |
| 31 | } | 21 | } |
| 32 | const blockSelector = blockSelectors[url.host] | 22 | const contentSelector = contentSelectors[url.host] |
| 33 | |||
| 34 | const addBlocks = blockSelector | ||
| 35 | ? root => Array.from(root.querySelectorAll(blockSelector)) | ||
| 36 | : undefined | ||
| 37 | 23 | ||
| 38 | const simpleRender = window.mapclay.renderWith(config => ({ | 24 | const simpleRender = window.mapclay.renderWith(config => ({ |
| 39 | use: use ?? 'Leaflet', | 25 | use: use ?? 'Leaflet', |
| @@ -47,12 +33,16 @@ const simpleRender = window.mapclay.renderWith(config => ({ | |||
| 47 | }, | 33 | }, |
| 48 | })) | 34 | })) |
| 49 | 35 | ||
| 50 | if (!document.querySelector('.Dumby')) { | 36 | browser.runtime.onMessage.addListener((message, sender, sendResponse) => { |
| 51 | window.generateMaps(document.querySelector('main') ?? document.body, { | 37 | console.log('receive message', message) |
| 52 | crs: url.searchParams.get('crs') ?? 'EPSG:4326', | 38 | sendResponse('received') |
| 53 | addBlocks, | 39 | if (message === 'map-inline-add') { |
| 54 | initialLayout: 'sticky', | 40 | window.generateMaps(document.querySelector(contentSelector ?? 'main') ?? document.body, { |
| 55 | render: simpleRender, | 41 | crs: url.searchParams.get('crs') ?? 'EPSG:4326', |
| 56 | autoMap: false, | 42 | initialLayout: 'sticky', |
| 57 | }) | 43 | render: simpleRender, |
| 58 | } | 44 | }) |
| 45 | return Promise.resolve('done') | ||
| 46 | } | ||
| 47 | return false | ||
| 48 | }) | ||