From 68c34dfd8acd91bbd3d519e4ee660e4c2deef6a6 Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Sun, 3 Nov 2024 20:29:50 +0800 Subject: feat: add png files for icon --- addon/icons/default-0.png | Bin 0 -> 535 bytes addon/icons/default-1.png | Bin 0 -> 769 bytes addon/icons/default-2.png | Bin 0 -> 1122 bytes addon/icons/default.ico | Bin 15406 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 addon/icons/default-0.png create mode 100644 addon/icons/default-1.png create mode 100644 addon/icons/default-2.png delete mode 100644 addon/icons/default.ico (limited to 'addon') diff --git a/addon/icons/default-0.png b/addon/icons/default-0.png new file mode 100644 index 0000000..ead58eb Binary files /dev/null and b/addon/icons/default-0.png differ diff --git a/addon/icons/default-1.png b/addon/icons/default-1.png new file mode 100644 index 0000000..5d364aa Binary files /dev/null and b/addon/icons/default-1.png differ diff --git a/addon/icons/default-2.png b/addon/icons/default-2.png new file mode 100644 index 0000000..260c83f Binary files /dev/null and b/addon/icons/default-2.png differ diff --git a/addon/icons/default.ico b/addon/icons/default.ico deleted file mode 100644 index 2ddf495..0000000 Binary files a/addon/icons/default.ico and /dev/null differ -- cgit v1.2.3-70-g09d2 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 --- .gitignore | 20 +++++++++----- 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 +++ package.json | 2 +- scripts/addon.sh | 9 +++++++ scripts/rollup.config.js | 29 ++------------------ 11 files changed, 108 insertions(+), 94 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 create mode 100755 scripts/addon.sh (limited to 'addon') diff --git a/.gitignore b/.gitignore index 00ad946..84e6d3f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,21 @@ +# node +node_modules/ +package-lock.json +pnpm-lock.yaml +src/css/easymde.min.css + +# output dist/ docs/ + +# addon +addon.zip addon/**js +addon/renderers/**js addon/**css -addon.zip !addon/index** !addon/background** +!addon/src + +# others doc-coverage/ -node_modules/ -package-lock.json -pnpm-lock.yaml -mapclay -src/css/easymde.min.css 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 diff --git a/package.json b/package.json index c0f3a7f..a137ca1 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "style": "scripts/stylelint.sh", "docs": "jsdoc -c scripts/jsdoc.conf src/; xdg-open http://localhost:8080/docs/", "prepack": "npm run lint && npm run style && npm run build", - "addon": "mkdir -p addon/css; cp src/css/dumbymap.css addon/css; ADDON=true rollup -c scripts/rollup.config.js --watch", + "addon": "scripts/addon.sh", "addon.zip": "cd addon; zip -r ../addon.zip *", "dev-addon": "web-ext run -s addon" }, diff --git a/scripts/addon.sh b/scripts/addon.sh new file mode 100755 index 0000000..3b7bf3b --- /dev/null +++ b/scripts/addon.sh @@ -0,0 +1,9 @@ +#! /bin/bash + +mkdir -p addon/css +ln -f src/css/dumbymap.css addon/css/dumbymap.css + +mkdir -p addon/renderers/ +rollup addon/src/renderers/* --dir addon/renderers + +rollup addon/src/dumbymap.mjs --file addon/dumbymap.js diff --git a/scripts/rollup.config.js b/scripts/rollup.config.js index 547260b..b3a6139 100644 --- a/scripts/rollup.config.js +++ b/scripts/rollup.config.js @@ -6,7 +6,7 @@ import { join } from 'path' import { bundleStats } from 'rollup-plugin-bundle-stats' const prod = process.env.PRODUCTION -const addon = process.env.ADDON +const watch = process.env.ROLLUP_WATCH function resolve (file, origin) { // Your way to resolve local include path @@ -79,31 +79,6 @@ export default [ ] .map(config => ({ ...general, ...config })) .filter(config => { - if (addon) return config.input.match(/dumbymap/) - if (!prod) return config.input.match(/editor/) + if (watch) return config.input.match(/editor/) return true }) - .map(config => { - if (!addon) return config - - config.output.forEach(o => { o.dir = './addon' }) - config.plugins.push({ - name: 'remove-exports', - transform (code, id) { - if (id.includes(config.input)) { - // remove export keyword for addon - const transformedCode = code.replace(/\n(\s*)export\s*/g, '$1') - return { - code: [ - transformedCode, - 'globalThis.generateMaps = generateMaps', - 'globalThis.mapclay = mapclay', - ].join('\n'), - } - } - return null - }, - }) - - return config - }) -- cgit v1.2.3-70-g09d2