Ground-up hooks rewrite of the app's core map. Removes the final batch of
React-19-blocking warnings (legacy context on Map/LayersControl/TileLayer/
Marker/CircleMarker/Circle/Tooltip + ReactDOM.render from the old controls).
Core: <Map> -> <MapContainer>; .leafletElement refs (6 files) -> the map/
layer instances directly, via a <MapReady> child (useMap) + plain refs on
Marker/Circle/GeoJSON; controlled viewport (onViewportChanged + state.center/
zoom) -> <MapEvents> (useMapEvents moveend/zoomend) + imperative setView;
onClick -> eventHandlers={{click}}; Path styling -> pathOptions/style;
subsUnion takes the L.Map directly.
The 4 v1-only plugins reimplemented (new in-repo helpers under Maps/):
- react-leaflet-control -> MapControl (L.Control + createPortal)
- react-leaflet-google -> GoogleMutantLayer (createLayerComponent +
leaflet.gridlayer.googlemutant; Google Maps API already loaded by Gkeys)
- react-leaflet-fullscreen -> createControlComponent + leaflet.fullscreen
- leaflet-sleep / leaflet-graphicscale kept as vanilla (work on leaflet 1.9)
Browser-verified: /fires (tiles, OSM+Google layer switch, custom control,
fullscreen, graphic scale, pan/zoom -> re-fetch, no NaN), fire detail
(GeoJSON rect + fitBounds), home (3 maps coexist; SelectionMap draggable
marker -> updatePosition + distance circle). Console now shows 0 React
warnings on home/fires. REST smoke byte-identical.
168 lines
4.3 KiB
JSON
168 lines
4.3 KiB
JSON
{
|
|
"name": "tcef",
|
|
"private": true,
|
|
"scripts": {
|
|
"start": "QT_QPA_PLATFORM='' MONGO_URL=mongodb://fuegos:fuegos@localhost:27017/fuegos meteor --settings settings-development.json",
|
|
"test": "jest"
|
|
},
|
|
"dependencies": {
|
|
"@babel/runtime": "^7.29.7",
|
|
"@cleverbeagle/dates": "^0.5.1",
|
|
"@sentry/browser": "^8.55.2",
|
|
"@sentry/node": "^8.55.2",
|
|
"@turf/buffer": "^5.1.5",
|
|
"babel-runtime": "^6.26.0",
|
|
"bcrypt": "^5.1.1",
|
|
"bootstrap-carousel-swipe": "0.0.6",
|
|
"commonmark": "^0.28.1",
|
|
"core-js": "^2.5.1",
|
|
"crypto-random-hex": "^1.0.0",
|
|
"emoji-flags": "^1.2.0",
|
|
"fs": "0.0.1-security",
|
|
"google-maps": "^3.2.1",
|
|
"google-maps-image-api-url": "^1.0.3",
|
|
"handlebars": "^4.0.11",
|
|
"history": "^5.3.0",
|
|
"html5-device-mockups": "^3.2.0",
|
|
"i18next": "^23.16.8",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"i18next-fs-backend": "^2.6.6",
|
|
"i18next-http-backend": "^2.7.3",
|
|
"immutability-helper": "^2.5.1",
|
|
"indexof": "0.0.1",
|
|
"iron": "^5.0.4",
|
|
"ismobilejs": "^0.4.1",
|
|
"jquery": "^2.2.4",
|
|
"jquery-validation": "^1.17.0",
|
|
"jsend": "^1.0.2",
|
|
"juice": "^4.2.2",
|
|
"leaflet": "^1.9.4",
|
|
"leaflet-graphicscale": "0.0.2",
|
|
"leaflet-sleep": "^0.5.1",
|
|
"leaflet.fullscreen": "^3.0.2",
|
|
"leaflet.gridlayer.googlemutant": "^0.14.1",
|
|
"lodash": "^4.17.4",
|
|
"loms.perlin": "^1.0.1",
|
|
"map-common-utils": "^0.5.0",
|
|
"maxmind": "^2.3.0",
|
|
"meteor-accounts-t9n": "^2.0.3",
|
|
"meteor-node-stubs": "^0.3.2",
|
|
"modernizr": "^3.6.0",
|
|
"moment": "^2.19.1",
|
|
"moment-timezone": "^0.5.14",
|
|
"node-geocoder": "^3.21.1",
|
|
"node-gyp": "^3.7.0",
|
|
"nodemailer": "^6.10.1",
|
|
"npm": "^5.8.0",
|
|
"pm2-master": "^1.1.3",
|
|
"popper.js": "^1.12.7",
|
|
"prerender-node": "^2.7.4",
|
|
"progressbar.js": "^1.1.1",
|
|
"prop-types": "^15.6.0",
|
|
"push.js": "^1.0.5",
|
|
"rc-slider": "^8.5.0",
|
|
"rc-tooltip": "^3.7.0",
|
|
"react": "^18.3.1",
|
|
"react-bootstrap": "^2.10.10",
|
|
"react-confirm": "^0.1.16",
|
|
"react-dom": "^18.3.1",
|
|
"react-helmet-async": "^2.0.5",
|
|
"react-i18next": "^14.1.3",
|
|
"react-leaflet": "^4.2.1",
|
|
"react-mobile-store-button": "0.0.3",
|
|
"react-places-autocomplete": "^5.4.3",
|
|
"react-resize-detector": "^1.1.0",
|
|
"react-router-bootstrap": "^0.26.3",
|
|
"react-router-dom": "^6.30.4",
|
|
"react-share": "^5.3.0",
|
|
"simpl-schema": "^1.5.0",
|
|
"simple-line-icons": "^2.4.1",
|
|
"store": "^2.0.12",
|
|
"twit": "^2.2.9"
|
|
},
|
|
"devDependencies": {
|
|
"babel-jest": "^21.2.0",
|
|
"babel-plugin-lodash": "^3.2.11",
|
|
"babel-preset-env": "^1.6.1",
|
|
"babel-preset-react": "^6.24.1",
|
|
"enzyme": "^3.1.0",
|
|
"eslint": "^4.10.0",
|
|
"eslint-config-airbnb": "^16.1.0",
|
|
"eslint-import-resolver-meteor": "^0.4.0",
|
|
"eslint-plugin-import": "^2.8.0",
|
|
"eslint-plugin-jsx-a11y": "^6.0.2",
|
|
"eslint-plugin-meteor": "^4.1.6",
|
|
"eslint-plugin-react": "^7.4.0",
|
|
"jest": "^21.2.1",
|
|
"sass": "^1.101.0"
|
|
},
|
|
"eslintConfig": {
|
|
"parserOptions": {
|
|
"ecmaFeatures": {
|
|
"jsx": true
|
|
}
|
|
},
|
|
"plugins": [
|
|
"meteor",
|
|
"react"
|
|
],
|
|
"extends": [
|
|
"airbnb",
|
|
"plugin:meteor/recommended",
|
|
"plugin:react/recommended"
|
|
],
|
|
"env": {
|
|
"browser": true
|
|
},
|
|
"globals": {
|
|
"expect": false
|
|
},
|
|
"rules": {
|
|
"import/no-unresolved": 0,
|
|
"import/no-extraneous-dependencies": 0,
|
|
"import/extensions": 0,
|
|
"jsx-a11y/anchor-is-valid": [
|
|
"error",
|
|
{
|
|
"components": [
|
|
"Link"
|
|
],
|
|
"specialLink": [
|
|
"to"
|
|
]
|
|
}
|
|
],
|
|
"max-len": 0,
|
|
"no-alert": 0,
|
|
"no-console": 0,
|
|
"no-restricted-globals": 0,
|
|
"no-return-assign": [
|
|
"error",
|
|
"except-parens"
|
|
],
|
|
"comma-dangle": [
|
|
"error",
|
|
"never"
|
|
],
|
|
"no-underscore-dangle": [
|
|
"error",
|
|
{
|
|
"allow": [
|
|
"_id",
|
|
"_ensureIndex",
|
|
"_verifyEmailToken",
|
|
"_resetPasswordToken",
|
|
"_name",
|
|
"_str"
|
|
]
|
|
}
|
|
],
|
|
"class-methods-use-this": 0,
|
|
"react/jsx-filename-extension": 0,
|
|
"react/forbid-prop-types": 0
|
|
},
|
|
"settings": {
|
|
"import/resolver": "meteor"
|
|
}
|
|
}
|
|
}
|