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 ++++++++++++++++++++++++++++++++++++++ addon/index.mjs | 55 -------------------------------------- addon/manifest.json | 15 +++++++---- addon/src/dumbymap.mjs | 5 ++++ addon/src/renderers/leaflet.mjs | 4 +++ addon/src/renderers/maplibre.mjs | 4 +++ addon/src/renderers/openlayers.mjs | 4 +++ 7 files changed, 82 insertions(+), 60 deletions(-) create mode 100644 addon/index.js delete mode 100644 addon/index.mjs create mode 100644 addon/src/dumbymap.mjs create mode 100644 addon/src/renderers/leaflet.mjs create mode 100644 addon/src/renderers/maplibre.mjs create mode 100644 addon/src/renderers/openlayers.mjs (limited to 'addon') 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 +}) diff --git a/addon/index.mjs b/addon/index.mjs deleted file mode 100644 index dd8fa11..0000000 --- a/addon/index.mjs +++ /dev/null @@ -1,55 +0,0 @@ -/* 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 = mapclay.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: mapclay.renderers, - ...(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') { - 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 -}) diff --git a/addon/manifest.json b/addon/manifest.json index e7bcbcf..92baf30 100644 --- a/addon/manifest.json +++ b/addon/manifest.json @@ -1,12 +1,14 @@ { "manifest_version": 2, - "name": "DumbyMap", + "name": "MapInline", "version": "1.0", - "description": "Add interatctive Map", + "description": "Add Interatctive Map", "icons": { - "48": "icons/default.ico" + "16": "icons/default-0.png", + "32": "icons/default-1.png", + "48": "icons/default-2.png" }, "browser_action": { @@ -22,8 +24,11 @@ "https://prosemirror.net/examples/*" ], "js": [ - "dumbymap.mjs", - "index.mjs" + "renderers/leaflet.js", + "renderers/maplibre.js", + "renderers/openlayers.js", + "dumbymap.js", + "index.js" ], "css": [ "css/dumbymap.css" diff --git a/addon/src/dumbymap.mjs b/addon/src/dumbymap.mjs new file mode 100644 index 0000000..07af342 --- /dev/null +++ b/addon/src/dumbymap.mjs @@ -0,0 +1,5 @@ +import { generateMaps } from '../../dist/dumbymap.mjs' +import { renderWith } from '../../node_modules/mapclay/dist/mapclay.mjs' + +globalThis.generateMaps = generateMaps +globalThis.renderWith = renderWith diff --git a/addon/src/renderers/leaflet.mjs b/addon/src/renderers/leaflet.mjs new file mode 100644 index 0000000..8e056f9 --- /dev/null +++ b/addon/src/renderers/leaflet.mjs @@ -0,0 +1,4 @@ +import { default as Leaflet } from '../../../node_modules/mapclay/dist/renderers/leaflet.mjs' + +if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} +globalThis.mapclayRenderers.Leaflet = Leaflet diff --git a/addon/src/renderers/maplibre.mjs b/addon/src/renderers/maplibre.mjs new file mode 100644 index 0000000..753af86 --- /dev/null +++ b/addon/src/renderers/maplibre.mjs @@ -0,0 +1,4 @@ +import { default as Maplibre } from '../../../node_modules/mapclay/dist/renderers/maplibre.mjs' + +if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} +globalThis.mapclayRenderers.Maplibre = Maplibre diff --git a/addon/src/renderers/openlayers.mjs b/addon/src/renderers/openlayers.mjs new file mode 100644 index 0000000..2c42757 --- /dev/null +++ b/addon/src/renderers/openlayers.mjs @@ -0,0 +1,4 @@ +import { default as Openlayers } from '../../../node_modules/mapclay/dist/renderers/openlayers.mjs' + +if (!globalThis.mapclayRenderers) globalThis.mapclayRenderers = {} +globalThis.mapclayRenderers.Openlayers = Openlayers -- cgit v1.2.3-70-g09d2