From 29ec39b92b69a68a3a5801a7bce85c97b30ce541 Mon Sep 17 00:00:00 2001 From: "S. Andrew Sheppard" Date: Mon, 14 Feb 2022 17:37:29 +0900 Subject: [PATCH] fix wq/map.js AMD build --- packages/leaflet/package.json | 2 +- packages/leaflet/rollup.config.js | 32 +++++++++++++++++++++++--- packages/map/src/components/AutoMap.js | 8 +++++++ packages/map/src/map.js | 7 +++--- 4 files changed, 42 insertions(+), 7 deletions(-) diff --git a/packages/leaflet/package.json b/packages/leaflet/package.json index ac00627b..eeebfd97 100644 --- a/packages/leaflet/package.json +++ b/packages/leaflet/package.json @@ -39,7 +39,7 @@ "leaflet.wms": "^0.2.0", "mustache": "^4.0.1", "react-leaflet": "^2.7.0", - "react-leaflet-draw": "^0.19.0", + "react-leaflet-draw": "0.19.0", "react-leaflet-markercluster": "^2.0.0" }, "devDependencies": { diff --git a/packages/leaflet/rollup.config.js b/packages/leaflet/rollup.config.js index bf5ed102..0dc2d703 100644 --- a/packages/leaflet/rollup.config.js +++ b/packages/leaflet/rollup.config.js @@ -3,6 +3,7 @@ import commonjs from '@rollup/plugin-commonjs'; import resolve from '@rollup/plugin-node-resolve'; import replace from '@rollup/plugin-replace'; import json from '@rollup/plugin-json'; +import * as path from 'path'; import { makeBanner, wqDeps, babelAMD, outputAMD } from '../../rollup-utils.js'; const banners = { @@ -31,9 +32,34 @@ const banners = { 'redux-orm/src/index.js': { id: 'redux-orm', external: true } }; function resolveId(id) { + if (id.startsWith('default-from:')) { + return id; + } return deps[id]; } +function load(id) { + if (id.startsWith('default-from:')) { + const file = path.resolve(id.split(':')[1]); + return `import mod from '${file}'; export default mod`; + } + if (id.endsWith('geotools/index.js')) { + return ['GeoHelp', 'GeoLocate', 'GeoCode', 'GeoCoords'] + .map(emptyComponent) + .join('\n'); + } else if ( + id.endsWith('GeoTools.js') || + id.endsWith('StickyMap.js') || + id.endsWith('OffscreenMaps.js') + ) { + return emptyComponent(); + } +} +function emptyComponent(name) { + const exp = name ? 'export' : 'export default'; + return `${exp} function ${name || 'Empty'}() { return null; }`; +} + const replaceConf = { 'process.env.NODE_ENV': '"production"', @@ -66,7 +92,7 @@ const replaceConf = { export default [ // AMD (for wq.app Python package) { - input: 'packages/leaflet/src/index.js', + input: 'default-from:packages/leaflet/src/index.js', external: [ 'leaflet', 'leaflet.markercluster', @@ -93,7 +119,7 @@ export default [ "import Draw from './overlays/Draw'\n" + "import Accuracy from './overlays/Accuracy'\n" }), - { resolveId }, + { resolveId, load }, wqDeps('.'), babelAMD({ jsx: true }), resolve({ @@ -131,7 +157,7 @@ export default [ output: outputAMD('mapserv', banners.mapserv, 'leaflet'), plugins: [ replace(replaceConf), - { resolveId }, + { resolveId, load }, wqDeps('.'), babelAMD({ jsx: true }), resolve({ diff --git a/packages/map/src/components/AutoMap.js b/packages/map/src/components/AutoMap.js index 014b8746..45e28242 100644 --- a/packages/map/src/components/AutoMap.js +++ b/packages/map/src/components/AutoMap.js @@ -77,6 +77,14 @@ export default function AutoMap({ ); } +AutoMap.makeComponent = props => { + function Component() { + return ; + } + + return Component; +}; + AutoMap.propTypes = { name: PropTypes.string, containerStyle: PropTypes.object, diff --git a/packages/map/src/map.js b/packages/map/src/map.js index 633e8879..d0409922 100644 --- a/packages/map/src/map.js +++ b/packages/map/src/map.js @@ -316,7 +316,8 @@ map.runComponent = 'OffscreenMaps'; map.run = function ($page, routeInfo) { var mapconf = map.config.maps[routeInfo.page], mode = routeInfo.mode, - form = routeInfo.form, + context = routeInfo.context, + form = routeInfo.page_config.form, maps = []; if (!mapconf) { return; @@ -335,12 +336,12 @@ map.run = function ($page, routeInfo) { const fieldName = mapname === 'main' ? 'geometry' : mapname, { type } = form.find(field => field.name === fieldName) || {}, $field = $page.find(`[name=${fieldName}]`), - value = routeInfo.context[fieldName], + value = context[fieldName], setValue = data => $field.val(JSON.stringify(data)); Component = EmbeddedGeo.makeComponent({ type, value, setValue }); } else { - Component = AutoMap; + Component = AutoMap.makeComponent({ context }); } const detach = reactRenderer.attach(Component, $div[0], this.app);