From 0151c246004de1c0f3ad944f3da6c70a76a49c7e Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Mon, 4 Nov 2024 00:20:35 +0800 Subject: refactor(build): update build script for addon * To fit file size limit for addon submission of mozilla.org, add scripts for each renderers * add scripts/addon.sh for bundling, with simple rollup commands * scripts/rollup.config.js no more handle addon build --- addon/index.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 addon/index.js (limited to 'addon/index.js') diff --git a/addon/index.js b/addon/index.js new file mode 100644 index 0000000..2ce3423 --- /dev/null +++ b/addon/index.js @@ -0,0 +1,55 @@ +/* global browser */ +/* eslint-disable-next-line no-console */ +console.log('content script loaded') + +const url = new URL(window.location) +const use = url.searchParams.get('use') +if (url.host === 'www.ptt.cc') { + const content = document.querySelector('#main-content') + Array.from(content.childNodes) + .filter(n => !(n instanceof window.HTMLElement)) + .forEach(text => { + const span = document.createElement('span') + span.innerText = text.textContent + text.replaceWith(span) + }) +} + +const contentSelectors = { + 'developer.mozilla': ':has(.section-content)', + 'hackmd.io': '#doc', + 'www.ptt.cc': '#main-content', + 'prosemirror.net': '.ProseMirror', +} +const contentSelector = contentSelectors[url.host] + +const simpleRender = globalThis.renderWith(config => ({ + use: use ?? 'Leaflet', + width: '100%', + height: '200px', + XYZ: 'https://tile.openstreetmap.jp/styles/osm-bright/512/{z}/{x}/{y}.png', + ...config, + aliases: { + use: globalThis.mapclayRenderer, + ...(config.aliases ?? {}), + }, +})) + +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.id === 'map-inline-add') { + globalThis.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