Update webpack and leaflet

This commit is contained in:
uwap 2022-11-23 11:31:40 +01:00
parent 60178de93b
commit dd198d8aaa
6 changed files with 1123 additions and 2848 deletions

View file

@ -14,14 +14,15 @@
"dependencies": { "dependencies": {
"@emotion/react": "^11.10.5", "@emotion/react": "^11.10.5",
"@emotion/styled": "^11.10.5", "@emotion/styled": "^11.10.5",
"@fontsource/roboto": "^4.5.8",
"@mdi/react": "^1.4.0", "@mdi/react": "^1.4.0",
"@mui/material": "^5.10.15", "@mui/material": "^5.10.15",
"@mui/styles": "^5.10.15", "@mui/styles": "^5.10.15",
"leaflet": "^1.5.1", "leaflet": "^1.5.1",
"mqtt": "^4.2.1", "mqtt": "^4.2.1",
"react": "^16.8.6", "react": "^18.2.0",
"react-dom": "^16.8.6", "react-dom": "^18.2.0",
"react-leaflet": "^2.4.0" "react-leaflet": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/cli": "^7.5.5", "@babel/cli": "^7.5.5",
@ -31,29 +32,32 @@
"@babel/preset-env": "^7.5.5", "@babel/preset-env": "^7.5.5",
"@babel/preset-flow": "^7.0.0-rc.1", "@babel/preset-flow": "^7.0.0-rc.1",
"@babel/preset-react": "^7.0.0-rc.1", "@babel/preset-react": "^7.0.0-rc.1",
"@mdi/js": "^5.6.55", "@mdi/js": "^7.0.96",
"babel-eslint": "^10.0.2", "babel-eslint": "^10.0.2",
"babel-loader": "^8.0.6", "babel-loader": "^9.1.0",
"clean-webpack-plugin": "^3.0.0", "buffer": "^6.0.3",
"clean-webpack-plugin": "^4.0.0",
"core-js": "^3.6.0", "core-js": "^3.6.0",
"css-loader": "^4.3.0", "css-loader": "^6.7.2",
"eslint": "^7.10.0", "eslint": "^8.28.0",
"eslint-plugin-flowtype": "^5.2.0", "eslint-plugin-flowtype": "^8.0.3",
"eslint-plugin-fp": "^2.3.0", "eslint-plugin-fp": "^2.3.0",
"eslint-plugin-react": "^7.14.3", "eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^4.1.2", "eslint-plugin-react-hooks": "^4.1.2",
"file-loader": "^6.1.0", "file-loader": "^6.1.0",
"flow": "^0.2.3", "flow": "^0.2.3",
"flow-bin": "^0.135.0", "flow-bin": "^0.193.0",
"flow-typed": "^3.2.1", "flow-typed": "^3.2.1",
"html-webpack-plugin": "^4.5.0", "html-webpack-plugin": "^5.5.0",
"husky": "^4.3.0", "husky": "^8.0.2",
"lodash-es": "^4.17.15", "lodash-es": "^4.17.15",
"style-loader": "^1.3.0", "process": "^0.11.10",
"webpack": "^4.44.0", "style-loader": "^3.3.1",
"webpack-cli": "^3.3.0", "url": "^0.11.0",
"webpack-dev-server": "^3.7.2", "webpack": "^5.75.0",
"webpack-shell-plugin-next": "^1.2.0" "webpack-cli": "^5.0.0",
"webpack-dev-server": "^4.11.1",
"webpack-shell-plugin-next": "^2.3.1"
}, },
"license": "MIT" "license": "MIT"
} }

View file

@ -9,11 +9,7 @@ import throttle from "lodash/throttle";
import type { Config, Control, Topics } from "config/flowtypes"; import type { Config, Control, Topics } from "config/flowtypes";
import { import { withStyles } from "@mui/styles";
ThemeProvider, withStyles
} from "@mui/styles";
import { createTheme } from "@mui/material/styles";
import * as Colors from "@mui/material/colors";
import Snackbar from "@mui/material/Snackbar"; import Snackbar from "@mui/material/Snackbar";
import IconButton from "@mui/material/IconButton"; import IconButton from "@mui/material/IconButton";
import Typography from "@mui/material/Typography"; import Typography from "@mui/material/Typography";
@ -206,18 +202,6 @@ class App extends React.PureComponent<AppProps & Classes, AppState> {
} }
} }
const generateTheme = (config: Config) =>
createTheme({
palette: {
primary: Colors[config.space.color]
}
});
export default (props: AppProps) => {
const StyledApp = withStyles(App.styles)(App); export default withStyles(App.styles)(App);
return (
<ThemeProvider theme={generateTheme(props.config)}>
<StyledApp {...props} />
</ThemeProvider>
);
};

View file

@ -1,6 +1,6 @@
// @flow // @flow
import React from "react"; import React from "react";
import { Map, ImageOverlay, Marker, LayersControl } from "react-leaflet"; import { MapContainer, ImageOverlay, Marker, LayersControl } from "react-leaflet";
import { CRS, point, divIcon } from "leaflet"; import { CRS, point, divIcon } from "leaflet";
import map from "lodash/map"; import map from "lodash/map";
import filter from "lodash/filter"; import filter from "lodash/filter";
@ -45,7 +45,9 @@ const renderMarker = (props: ControlMapProps) =>
{({ state }) => ( {({ state }) => (
<Marker position={convertPoint(control.position)} <Marker position={convertPoint(control.position)}
icon={createLeafletIcon(control, state)} icon={createLeafletIcon(control, state)}
onClick={() => props.onChangeControl(control)} eventHandlers={{
click: () => props.onChangeControl(control)
}}
> >
</Marker> </Marker>
)} )}
@ -118,13 +120,13 @@ const renderLayers = (props: ControlMapProps) => (
); );
const ControlMap = (props: ControlMapProps) => ( const ControlMap = (props: ControlMapProps) => (
<Map center={center(props)} <MapContainer center={center(props)}
zoom={props.zoom} zoom={props.zoom}
crs={CRS.Simple} crs={CRS.Simple}
leaflet={{}}> leaflet={{}}>
{renderMarkers(props)} {renderMarkers(props)}
{renderLayers(props)} {renderLayers(props)}
</Map> </MapContainer>
); );
export default ControlMap; export default ControlMap;

View file

@ -2,11 +2,18 @@
import "core-js/stable"; import "core-js/stable";
import "regenerator-runtime/runtime"; import "regenerator-runtime/runtime";
import "../node_modules/leaflet/dist/leaflet.css"; import "../node_modules/leaflet/dist/leaflet.css";
import '@fontsource/roboto/300.css';
import '@fontsource/roboto/400.css';
import '@fontsource/roboto/500.css';
import '@fontsource/roboto/700.css';
import React from "react"; import React from "react";
import ReactDOM from "react-dom"; import ReactDOM from "react-dom";
import App from "components/App"; import App from "components/App";
import { createTheme } from "@mui/material/styles";
import { ThemeProvider } from "@mui/styles";
import * as Colors from "@mui/material/colors";
import "../css/styles.css"; import "../css/styles.css";
@ -16,6 +23,21 @@ const config: Config = window.config;
document.title = `${config.space.name} Map`; document.title = `${config.space.name} Map`;
const theme = createTheme({
palette: {
primary: {
main: Colors[config.space.color][500]
},
secondary: {
main: Colors.orange[500]
}
}
});
// $FlowFixMe // $FlowFixMe
const contentElement: Element = document.getElementById("content"); const contentElement: Element = document.getElementById("content");
ReactDOM.render(<App config={config} />, contentElement); ReactDOM.render((
<ThemeProvider theme={theme}>
<App config={config} />
</ThemeProvider>
), contentElement);

View file

@ -8,10 +8,10 @@ const preBuildScripts = process.env.NO_FLOW == undefined ?
: []; : [];
const configPath = env => { const configPath = env => {
if (env === true) { if (env.length < 3) {
throw "No config file was provided."; throw "No config file was provided.";
} }
return path.resolve(__dirname, `config/${env}`); return path.resolve(__dirname, `config/${Object.keys(env)[2]}`);
}; };
module.exports = env => ({ module.exports = env => ({
@ -25,7 +25,7 @@ module.exports = env => ({
alias: { alias: {
'lodash': 'lodash-es', 'lodash': 'lodash-es',
"leaflet": "leaflet/dist/leaflet-src.esm.js" "leaflet": "leaflet/dist/leaflet-src.esm.js"
} },
}, },
output: { output: {
path: path.resolve(__dirname, 'dist'), path: path.resolve(__dirname, 'dist'),
@ -51,6 +51,10 @@ module.exports = env => ({
new HtmlWebpackPlugin({ new HtmlWebpackPlugin({
title: 'Space Map', title: 'Space Map',
template: 'index.ejs' template: 'index.ejs'
}) }),
new webpack.ProvidePlugin({
Buffer: ['buffer', 'Buffer'],
process: 'process/browser',
}),
] ]
}); });

3865
yarn.lock

File diff suppressed because it is too large Load diff