{"_id":"@orange-groove/react-map-annotate","_rev":"25-f1d4d70b6f448b9ece02655d27c4eb09","name":"@orange-groove/react-map-annotate","dist-tags":{"latest":"0.3.21"},"versions":{"0.1.0":{"name":"@orange-groove/react-map-annotate","version":"0.1.0","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.1.0","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://github.com/orange-groove/react-map-annotate#readme","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"b8e05bdfdfd6db639faf522a0aadc26e877d2fca","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.1.0.tgz","fileCount":130,"integrity":"sha512-pDXBL37lcbw/YLndWUw5JJvYaGU8AaIRqhk7/TxKL8Kufrv/lmuqE2Q6EV3OHNV7EveLopogiesjOLSnBV89+A==","signatures":[{"sig":"MEUCIQCjZnmYTSHCJWy+1VokLI3tl44U1+uuFZjLv+czuhBlTAIgIMrmAIKmQFUV7apFsqt9EUtL+U/28RBeiG77t5bA8K4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2626957},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"09307b0019c22eda40336b616879d750f5fc67c9","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.1.0_1788644314607_0.37315375902806447","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@orange-groove/react-map-annotate","version":"0.1.1","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.1.1","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://github.com/orange-groove/react-map-annotate#readme","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"4e1a9aa277cd3500dc33b6a78fbe750d00db89fa","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.1.1.tgz","fileCount":130,"integrity":"sha512-zTh83gLEw/UC0tCtJOKfZ/XZkqn3XfyRkGEJSV3p02ZzC27Uo9GBb5hjBS30V84BjqK+WTVI5xEz7pwru2bo5g==","signatures":[{"sig":"MEQCICzOaTK+mx2GYkA2QzsmKruVlXf8en9Ichwgzs5ezbaAAiB0u5WuyqCC/47arf0+3os4Lvp68+TDrN8/Z0rI0FYFVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2626957},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"3094868c7dffefa9b7a44103416f54274252cdd0","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.1.1_1788644477356_0.1625693533244017","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@orange-groove/react-map-annotate","version":"0.2.0","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.2.0","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://github.com/orange-groove/react-map-annotate#readme","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"dc788435da43125f9ae8568b258a6ac611f7e76f","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.2.0.tgz","fileCount":146,"integrity":"sha512-w8QotAcriqzTPcKazuywXDCfmNfm+LzSkpxLg1+e4rAhe2SU5UGRnnd3O2NmqOPJ72VEj9OzD1GJmmCrLaesGg==","signatures":[{"sig":"MEYCIQCAkBCavx1ij6sqO8QyuWUTdjdS5ZcTbQLDy6SVMr5P3gIhAOcl7YSJ6hB7nGASIiFOIP98qM0ZPd2aUQAiZMV7inRO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2824533},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"7c774a2bd5621099cd7460b76cc765fe255d180d","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.2.0_1788655279519_0.929748726975997","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@orange-groove/react-map-annotate","version":"0.3.0","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.0","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://github.com/orange-groove/react-map-annotate#readme","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"0645ceabfe60bfd913309021d95cb08fe3f9b960","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.0.tgz","fileCount":154,"integrity":"sha512-YOwMHNG2rY7QRzj0GuJJljDbwLW/cXMqp5acO6LUVhEixVn39sSL83IYmWppdnAVmKnSAQphMRXbGDjniaNKuA==","signatures":[{"sig":"MEYCIQCaeRcihPcfy8atbQPNeWCwrtE64IC9JnMJcwXGU0jVxAIhANZ7jmMJJokWh1YCtzuA7E6tYMYCcEaq9l52P/hykUfn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3648137},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"14df84b338d02af8dac87b61ae7014d7ea4bdcf1","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.0_1788793563091_0.5633894804229524","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@orange-groove/react-map-annotate","version":"0.3.1","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.1","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"dfbb0ecb905e732252c16540363497834d7ec3a9","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.1.tgz","fileCount":157,"integrity":"sha512-Zgd5FX1VVvirWT3C9+ugqsrrqZwG10IzUXoPlS2l0YmFZ2JJJhMyYjSS/sKshhH3sIihD5dz7IfhrxRF39dmvg==","signatures":[{"sig":"MEUCIQDlFCqP8L+94UPZ5PZ1AcV9ndyPpzlKTqRmuRyrpZpIIAIgU0GaYF2BHcEVEW9dDQhGUUu8aKRxY+F53hPqD3npfrc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3653649},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"0cc996aadec35f0ded1f29b9c882b3aea9c50ccc","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.1_1788795882993_0.8587802449021327","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@orange-groove/react-map-annotate","version":"0.3.2","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.2","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"d0901340f78aee8a0b1f1ccca904cd9afe9dba71","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.2.tgz","fileCount":163,"integrity":"sha512-iBJKo/atwIT01fNID1bO/FgCVkMx1DjowD6u6epDBWiWP644ujKvF5/IVbL+4egCyLSVmY1dmbqSphMNu+SPzA==","signatures":[{"sig":"MEYCIQDJUXjmSGsq/sN1VCpy+K/H9HUsd3hA4fSVMZ910gZa5gIhAI/vP1GniWyAdSn19S78xhKzx4bP8D44jPfaDHc3ysTW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3993556},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"9cb8eb993ca3cd71af13709fbdb0b03c9f019521","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.2_1788809687596_0.9607623452317986","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@orange-groove/react-map-annotate","version":"0.3.3","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.3","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"d879c8a2d4137975e3f7a7fd6af06145a781d27a","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.3.tgz","fileCount":165,"integrity":"sha512-WGOI9qkrz743S5yvz7HqUnQjQtss0ccAzscFin6vtvnIjvYkcBHYpGlHjJo7h5iMhA5UnUraGywJsHCvM8R+Lw==","signatures":[{"sig":"MEUCIDQWoqPytAd5LC3OSMczA6CHJWhm6ONeLBZ6/qcMOBCCAiEApgmMPXljdQMLk/dzJYZ8W6BDL4ttHXU/2Fgqi0iZYRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4415905},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"3fe27032898f2c8cf88bd650d85b3c70e766a9ac","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.3_1788813199978_0.24829021165541332","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@orange-groove/react-map-annotate","version":"0.3.4","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.4","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"9eed96a34df0d50904bfd9c52f3ee91b50959e1c","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.4.tgz","fileCount":165,"integrity":"sha512-PDa0PSef5WzaTMNUxg8JTWPGuDitvffW2llXbPF4CaYzdJcjNtjjlywNgIb7JLvxoOEpvYP9SkMS3Y/MJTdILw==","signatures":[{"sig":"MEUCIDly0fdT3mnhjssABiYMdXkqMJxUbpAogHuHpGfUJExqAiEAojmj1epwYPylikpTyjtdz/X1z+MVJaE+ZWxt0+jgej4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4507235},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"bfa6887120488fe7289d7f1f9f1fc0bc932a3372","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.4_1788822315968_0.8603330938438232","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@orange-groove/react-map-annotate","version":"0.3.5","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.5","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"c0b3386d688f64c65843ba32bce86ee4e3d1de06","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.5.tgz","fileCount":165,"integrity":"sha512-aK9eJG7h/2nJNnHXa68HLrpSVZ67tGTQvOpuNa/ALk63xcfYeBw6/F11bgcTZ4TI04AQQ2o6E6Hb0u+fNKgnew==","signatures":[{"sig":"MEQCIAxjm1cWhH5Su8p6RdIUYeJgN+MjEhOamg9PJYWRvoxgAiANjIE9eBp3frrrJdxEqMfgbztG8sYSU1N3MaYjk/ME6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4537223},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"59383063052d76cb8b7f98055ce66c488f82020b","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.5_1788824319031_0.9440078654154027","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@orange-groove/react-map-annotate","version":"0.3.6","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.6","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"fea75ad8360126f888751fdd9a504cabfa1a10bb","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.6.tgz","fileCount":165,"integrity":"sha512-PeuDbEg7GmSnwU58cQBTDZBmxaGpCkj061ImtZuX9C1tSD+J5XXoukzymVx36UIRIRP22qccTlKekIYChLRZ5g==","signatures":[{"sig":"MEUCIQCqB7Ej4vpue4OFaRjE6sBIj8SSEEIjZYf3HFr/W7hK3wIgbAAOTDXVlLlr8GbzEQuvJ1l0RHU1nvZYnXZT0+HZHxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4415978},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"a2732ba29c5e4a258f2fd15d0ed6ceb4acfc93a3","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.6_1788825446770_0.9234624859377585","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@orange-groove/react-map-annotate","version":"0.3.7","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.7","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"1b5cccc655db7db702bff64aa4b1ff65d66290a2","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.7.tgz","fileCount":168,"integrity":"sha512-7l/tJiOvXJxGtaKGLqZcLriF+aFL8kA/nwtHSVndZCxEPyaAHy7I8ZJ7vLQ+hOMkuAIj/H8qDKOF+t0LRaWC4A==","signatures":[{"sig":"MEYCIQD2m+gA1PNMBxHcmo9tpGwi+c+s/wkSuWQeV1Ag5MkQeAIhAKCdPDoVTRqgnrvx/QiW5iD5BSemO21g64HlqyP9gT/d","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5119435},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"6f27b4e16ca36b37448b06398dcccedb019c32e8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.7_1788875723331_0.3844310929930326","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@orange-groove/react-map-annotate","version":"0.3.8","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.8","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"151aa3e62cfc648f4d607692392d928a283b70e3","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.8.tgz","fileCount":168,"integrity":"sha512-nqZX68fhSFJCZw0HL00siixjYhgH5Sd4XjuhsCNqhy5f9S1iEKzSnPnqan8HqVeJlS/velgEX5gfSp2GiWqTAw==","signatures":[{"sig":"MEQCIGYWzb1MHDfAxNIsRN3BK05eK6MR76kiUjXnkeWey9s/AiBwjiSadTyG5j4JaJrtZIJwK6IIKSIhNhHrzYd38bdmLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5128234},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"08a4f3640ecbbf3c4e8815cf2e7fb4a188008cd8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.8_1788876371862_0.7948522223427856","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@orange-groove/react-map-annotate","version":"0.3.9","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.9","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"3dd1964311a29e2eeae6ad7c7e11a478982fdf0e","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.9.tgz","fileCount":169,"integrity":"sha512-4R1SYR5rAF4LmWGHstKlZyvR4x9Sq/yGLKft7ZF4rcb2tInFmAuBgpepn3cTxaSr8L9W/F8y1DSbzvlxKJS3jg==","signatures":[{"sig":"MEUCICodyorfeJEXUWVwxjVNmre9z/TFDCECQ0lYCYa4VrKPAiEA5hBWqEiILU5Zc8V13SN2kIuiTNRBv4r6eN78csxzjf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5377180},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"73e6300a9e164add0068882e9f10bb7c4eaf580f","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.9_1788878333955_0.2957625710088516","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@orange-groove/react-map-annotate","version":"0.3.10","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.10","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"532111524f56820b54e350f7de6abb2db3254ff0","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.10.tgz","fileCount":170,"integrity":"sha512-yaeTUTEO5mDDecKMe5vGrgFW+ea5NYPC/P1cIWsm6uk9vOpgHtrjUFAlGSvpUI4eDgbyOBHri0QTBlZH9x3XsA==","signatures":[{"sig":"MEUCIQDnA2wWG0Q8jlWiH54hg8cZthVoeqTM05WG71Mwl4d16AIgZP43g73uft2tOYyhqhWdBpsu7O1QaeknXJ/UC7N88XY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5387186},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"ea5bb79dce1d585b421cd51324682879fd958c37","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.10_1788881012520_0.519770588297743","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@orange-groove/react-map-annotate","version":"0.3.11","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.11","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"191dbf1713c62636d649de82b188aedacc8a0a03","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.11.tgz","fileCount":170,"integrity":"sha512-RkL+BhDW0Bfe+52uZtNk3oxiMa1u1OtQJKyzj8UpiFNu9KBvIqbaSyQahnxP3SuZFrcekpaPmLPOK4sDctD/PA==","signatures":[{"sig":"MEUCIQC6W2oFTWwP+k082pOOmzgVyevjPiw1I8c3j3zO4hZcdQIgRNm3K5lBRa7YYMo+tba0hln9Bs6QoEyHTYIZyTTtLXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5695529},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"716ca794eb10652d95fb33294f46f546fc10dfad","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.11_1788892267517_0.5924541975834845","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@orange-groove/react-map-annotate","version":"0.3.12","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.12","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"cda14474e66aa921d9567b416f20dd296199a4ff","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.12.tgz","fileCount":170,"integrity":"sha512-EDpwoYsNBmv6CeoIW9AdZv8KfhAV1gtmbkCWP89wvVUU6PHt+WidfjGpemY16/MCqdQFG5d2Ku3lnGmTUjTdKg==","signatures":[{"sig":"MEYCIQCHXjJDwIN3A416HskTej4uIAzt/XoM4SancM7dMwKdbgIhAJkt5iotDCU2fnBepBRvxZfgPMB1qF6ARABYfBr6KxTA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5694288},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"5e8751a58b423cbf05c411cfac57a0cd0e4179e0","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.12_1788980039032_0.3312308888833173","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@orange-groove/react-map-annotate","version":"0.3.13","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.13","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"50411dffd269499737dc172c1c18eaff13873e5f","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.13.tgz","fileCount":173,"integrity":"sha512-lLvGlsSruq0C3df6H6rqll/gBeJkTwDI7RL9KpE22OK/F5qEFJItjQxwQk+unZCPA1P2jVy2Nue8R/4fvfb/vg==","signatures":[{"sig":"MEUCIBncmPuy+KDDn8RixTZNAzId/w7xb/dm9wlJ45svsXfZAiEAt/PSYDtoImKDF2lyMlAuFfhMpkkxt2y8FoNG3PX6wHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5904401},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"8b02ff93de84b03eae62e5d37a79f8f05900e5b8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.13_1788987374418_0.06942152270714841","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@orange-groove/react-map-annotate","version":"0.3.14","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.14","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"704bfb0e4e279f406db62ed3e784c4d244338cfa","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.14.tgz","fileCount":177,"integrity":"sha512-t/Wp3313tOlVfgwK2iBMbzjBtZBPHGIUT8FXCkF9HfAOM5zRxPmJ+/pjfjTydgPICeLroDNqiGTQW3x70d4CtQ==","signatures":[{"sig":"MEUCIQDwRo7HLhv0ZIY/RPSdm8XkNYDAMYt6ygsg/EF1r1bR2QIgI3z++Xj89rXWNFHhMTyYOeepzSHcjklkVTS43TgsnhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6179700},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"786901425329e867c1ce6b4ef9ef366b89a8fbd8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.14_1788992058044_0.979800439182583","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@orange-groove/react-map-annotate","version":"0.3.15","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.15","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"6e37582890e40f88346c61e94ac76c9ad069b090","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.15.tgz","fileCount":177,"integrity":"sha512-tjsF2TgO1GgVFFKhrYfVX5ig0zQHjo3DxgKxvrar809giMEOU+ASmJwKOrMTPqQ3Ku7CnqrqucA0tb8+UNkpOQ==","signatures":[{"sig":"MEQCIAI2Ow+qS8le26vJHXLcOQDus8cA9KaqLnnLWTiPtgpPAiBhh/Y7MumjJJ2DQbs6hS83tnpwsqVhUjJZZCHwz646RQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6213111},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"96d47122eab2a04c62933a729914a40419ff0e6b","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.15_1788993412598_0.2347107942693838","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@orange-groove/react-map-annotate","version":"0.3.16","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.16","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"a50900a2e491d882ac2fab17de1b29c6db684167","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.16.tgz","fileCount":177,"integrity":"sha512-5bq43cPL0jcdk4pQvwKcqYIaLaVRIL8GMoplX/Xkae1iBPEAan5G5cI7S8ozHphDKhGQzni/OerDb1iuk8p4aQ==","signatures":[{"sig":"MEUCIAXz485fdN/MdM7opzgGV1DF2pAwyool/04vEjmcM52gAiEA9pwnlhpTnnn0e7FcK/RRbPokz7q8TFaVQl8RiIccQQA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6262681},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"43281f87968cdbed2dd2b84f9af2913f1781fdef","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.16_1789033112882_0.2718053111575667","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"@orange-groove/react-map-annotate","version":"0.3.17","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.17","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"23d730b754908572cb8eacfded671a19da043bf8","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.17.tgz","fileCount":177,"integrity":"sha512-Ew0VtvrBd2I6aK91Ho3Lwq8hlHwPK7VTe2cCOQsaghgvaKqRfyXkigRpWBPEy+4Gb2T8qi5+WRTC+k6UwgVtvQ==","signatures":[{"sig":"MEUCIHC7ZD/4Uif/r1QPa4DtwNzSojxZK96DI90ES2Ka5EZCAiEAumvSKG2Gb7der8jn9Pbhtp1Q21zjDHO8IHOAZzKFU6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6303972},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"662c57e8cf6a9c3f7674a3feaacf2843b0a7d24e","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.17_1789034738522_0.5089154511952056","host":"s3://npm-registry-packages-npm-production"}},"0.3.18":{"name":"@orange-groove/react-map-annotate","version":"0.3.18","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.18","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"2ecc5313c379aae461cb59c5b09b547faa1d3bd2","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.18.tgz","fileCount":177,"integrity":"sha512-5FEo4mLQm5Mfk7/B/b10fQ9vsxwkPlRzqKsQeJF3KjEJwVkEMd2zs//z7f4+r1Sf2N7vTbMrnwQ6cUpOUrrnEA==","signatures":[{"sig":"MEQCIHoKVZ4c3nKMAwR2XhU9ASW0zS0D/6JRIs5g+aGGy6buAiABXs4M7L7XZBu/mVHLGMnSCpzXyYu4rlVvvljJG8W2mQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6307590},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"d76fd09b1e7ba41f5df835e3ad99704118830e6f","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.18_1789036236134_0.395783034320764","host":"s3://npm-registry-packages-npm-production"}},"0.3.19":{"name":"@orange-groove/react-map-annotate","version":"0.3.19","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.19","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"99503f06878609765b87f1e8d3fd5637c26b9dba","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.19.tgz","fileCount":177,"integrity":"sha512-hcU0QQxXoir7bgJXjyIxqQjECvhnOTdsbG1RZxyZXYU/jc4NOpQ8d5zZP7azRmOUx4lFNe1g+xRtbG7eBJWEMQ==","signatures":[{"sig":"MEUCIC4juUOAcoAiGflx7jvU/1MgrUO77pnbKAWudMdBaOv1AiEA8jhiED+lR33CGCvgchBK08pd6MKXiaLd15bd+aTo0gY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6307618},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"a54e981c7aecd59ef1c36f3870be10bd6eb514f8","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.19_1789071148161_0.09472827991537347","host":"s3://npm-registry-packages-npm-production"}},"0.3.20":{"name":"@orange-groove/react-map-annotate","version":"0.3.20","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"author":{"name":"orange-groove"},"license":"MIT","_id":"@orange-groove/react-map-annotate@0.3.20","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"dist":{"shasum":"d41d67a6460b6558e7d568c03a2ba441ec7bd9a0","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.20.tgz","fileCount":179,"integrity":"sha512-A4f0O2WzN/52dBDGv5w5rgPeqyqYI/JG9xsDJcbDI9+DzwH5TqTAvcz8Q5ljenUxHtVF5jAAKZ+sQR9XUWeerg==","signatures":[{"sig":"MEQCIECW7Gb5nOSrD+0RtyrO3q4aLNpTZiMd0QhoaJiSkDiDAiAOa5gfcZNRK18Kh5KFXQWH7ftIKx6exrK1f7UjEBfjjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6363408},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./styles.css":"./dist/styles.css"},"gitHead":"84b84c2886b3cae70ded53c5572348380f8f05d5","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"vitest run","build":"tsup && cp src/styles.css dist/styles.css","check":"npm run typecheck && npm run lint && npm run format:check && npm test","format":"prettier --write .","prepare":"tsup && cp src/styles.css dist/styles.css","lint:fix":"eslint . --fix","typecheck":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"repository":{"url":"git+https://github.com/orange-groove/react-map-annotate.git","type":"git"},"_npmVersion":"11.17.0","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"20.19.5","dependencies":{"lucide-react":"^1.42.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^29.1.1","react":"^19.2.8","eslint":"^9.39.5","vitest":"^3.2.0","globals":"^16.5.0","leaflet":"^1.9.4","prettier":"^3.9.6","mapbox-gl":"^3.29.0","react-dom":"^19.2.8","@eslint/js":"^9.39.5","typescript":"^5.8.0","maplibre-gl":"^5.24.0","@types/react":"^19","react-map-gl":"^8.1.2","react-leaflet":"^5.0.0","@types/geojson":"^7946.0.16","@types/leaflet":"^1.9.21","@types/react-dom":"^19","typescript-eslint":"^8.69.0","@types/google.maps":"^3.66.2","eslint-plugin-react":"^7.37.5","@testing-library/react":"^16.3.3","eslint-config-prettier":"^10.1.8","@vis.gl/react-google-maps":"^1.10.0","eslint-plugin-react-hooks":"^5.2.0","@testing-library/user-event":"^14.6.7"},"peerDependencies":{"react":">=18","leaflet":">=1.9","mapbox-gl":">=3","react-dom":">=18","maplibre-gl":">=4","@arcgis/core":">=4.28","react-map-gl":">=8","react-leaflet":">=4","@vis.gl/react-google-maps":">=1"},"peerDependenciesMeta":{"leaflet":{"optional":true},"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@arcgis/core":{"optional":true},"react-map-gl":{"optional":true},"react-leaflet":{"optional":true},"@vis.gl/react-google-maps":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/react-map-annotate_0.3.20_1789075161914_0.2362825099989765","host":"s3://npm-registry-packages-npm-production"}},"0.3.21":{"name":"@orange-groove/react-map-annotate","version":"0.3.21","description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","license":"MIT","author":{"name":"orange-groove"},"repository":{"type":"git","url":"git+https://github.com/orange-groove/react-map-annotate.git"},"homepage":"https://react-map-annotate-demo.onrender.com/","bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./core":{"types":"./dist/core.d.ts","import":"./dist/core.js","require":"./dist/core.cjs"},"./mapbox":{"types":"./dist/mapbox.d.ts","import":"./dist/mapbox.js","require":"./dist/mapbox.cjs"},"./maplibre":{"types":"./dist/maplibre.d.ts","import":"./dist/maplibre.js","require":"./dist/maplibre.cjs"},"./google":{"types":"./dist/google.d.ts","import":"./dist/google.js","require":"./dist/google.cjs"},"./leaflet":{"types":"./dist/leaflet.d.ts","import":"./dist/leaflet.js","require":"./dist/leaflet.cjs"},"./arcgis":{"types":"./dist/arcgis.d.ts","import":"./dist/arcgis.js","require":"./dist/arcgis.cjs"},"./osm":{"types":"./dist/osm.d.ts","import":"./dist/osm.js","require":"./dist/osm.cjs"},"./styles.css":"./dist/styles.css"},"sideEffects":["**/*.css"],"scripts":{"build":"tsup && cp src/styles.css dist/styles.css","dev":"tsup --watch","prepare":"tsup && cp src/styles.css dist/styles.css","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","typecheck":"tsc --noEmit","check":"npm run typecheck && npm run lint && npm run format:check && npm test","test":"vitest run"},"peerDependencies":{"@arcgis/core":">=4.28","@vis.gl/react-google-maps":">=1","leaflet":">=1.9","mapbox-gl":">=3","maplibre-gl":">=4","react":">=18","react-dom":">=18","react-leaflet":">=4","react-map-gl":">=8"},"peerDependenciesMeta":{"mapbox-gl":{"optional":true},"maplibre-gl":{"optional":true},"@vis.gl/react-google-maps":{"optional":true},"leaflet":{"optional":true},"react-leaflet":{"optional":true},"react-map-gl":{"optional":true},"@arcgis/core":{"optional":true}},"devDependencies":{"@eslint/js":"^9.39.5","@testing-library/react":"^16.3.3","@testing-library/user-event":"^14.6.7","@types/geojson":"^7946.0.16","@types/google.maps":"^3.66.2","@types/leaflet":"^1.9.21","@types/react":"^19","@types/react-dom":"^19","@vis.gl/react-google-maps":"^1.10.0","eslint":"^9.39.5","eslint-config-prettier":"^10.1.8","eslint-plugin-react":"^7.37.5","eslint-plugin-react-hooks":"^5.2.0","globals":"^16.5.0","jsdom":"^29.1.1","leaflet":"^1.9.4","mapbox-gl":"^3.29.0","maplibre-gl":"^5.24.0","prettier":"^3.9.6","react":"^19.2.8","react-dom":"^19.2.8","react-leaflet":"^5.0.0","react-map-gl":"^8.1.2","tsup":"^8.4.0","typescript":"^5.8.0","typescript-eslint":"^8.69.0","vitest":"^3.2.0"},"publishConfig":{"access":"public"},"keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"dependencies":{"lucide-react":"^1.42.0"},"gitHead":"4e2aa09d75325b51d0da68929ef0478067bbf53f","_id":"@orange-groove/react-map-annotate@0.3.21","_nodeVersion":"20.19.5","_npmVersion":"11.17.0","dist":{"integrity":"sha512-dKOqDlGpGvcVTt1m6HazRHxtI5rZX6VxJlA590pbqZeLYmm75Yk6jcFFj8DlEy5IfUW7h230ruQ7yBr6x3sYAQ==","shasum":"2be45429451be540b7343e8d3d57a14d9ce0e520","tarball":"https://registry.npmjs.org/@orange-groove/react-map-annotate/-/react-map-annotate-0.3.21.tgz","fileCount":192,"unpackedSize":6692039,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEnMbI3rGOaa2FIQsFbWvDUdfLNbfZJhqtn1F2hbw9c2AiBEfyBqGSdcQhVLVCkXvDCggLUcOc78Bsto9JuPigtbkQ=="}]},"_npmUser":{"name":"orange-groove","email":"agroves333@gmail.com"},"directories":{},"maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-map-annotate_0.3.21_1789120966570_0.9116540904946104"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-05T21:38:34.464Z","modified":"2026-09-11T10:02:47.009Z","0.1.0":"2026-09-05T21:38:34.742Z","0.1.1":"2026-09-05T21:41:17.508Z","0.2.0":"2026-09-06T00:41:19.686Z","0.3.0":"2026-09-07T15:06:03.271Z","0.3.1":"2026-09-07T15:44:43.155Z","0.3.2":"2026-09-07T19:34:47.786Z","0.3.3":"2026-09-07T20:33:20.129Z","0.3.4":"2026-09-07T23:05:16.154Z","0.3.5":"2026-09-07T23:38:39.208Z","0.3.6":"2026-09-07T23:57:26.933Z","0.3.7":"2026-09-08T13:55:23.504Z","0.3.8":"2026-09-08T14:06:12.018Z","0.3.9":"2026-09-08T14:38:54.127Z","0.3.10":"2026-09-08T15:23:32.675Z","0.3.11":"2026-09-08T18:31:07.713Z","0.3.12":"2026-09-09T18:53:59.203Z","0.3.13":"2026-09-09T20:56:14.644Z","0.3.14":"2026-09-09T22:14:18.233Z","0.3.15":"2026-09-09T22:36:52.774Z","0.3.16":"2026-09-10T09:38:33.078Z","0.3.17":"2026-09-10T10:05:38.689Z","0.3.18":"2026-09-10T10:30:36.318Z","0.3.19":"2026-09-10T20:12:28.376Z","0.3.20":"2026-09-10T21:19:22.136Z","0.3.21":"2026-09-11T10:02:46.834Z"},"bugs":{"url":"https://github.com/orange-groove/react-map-annotate/issues"},"author":{"name":"orange-groove"},"license":"MIT","homepage":"https://react-map-annotate-demo.onrender.com/","keywords":["react-map-annotate","react-map-gl","mapbox","mapbox-gl","maplibre","maplibre-gl","google-maps","leaflet","react-leaflet","arcgis","arcgis-js","draw","drawing","annotate","annotation","measure","haversine","geodesic","geojson"],"repository":{"type":"git","url":"git+https://github.com/orange-groove/react-map-annotate.git"},"description":"Draw on Mapbox, MapLibre, Google Maps, Leaflet, or ArcGIS in React: freehand, arrows, shapes, geodesic measure, and labeled markers — with your React state and your toolbar.","maintainers":[{"name":"orange-groove","email":"agroves333@gmail.com"}],"readme":"# @orange-groove/react-map-annotate\n\nDraw on Mapbox, MapLibre, Google, Leaflet, or ArcGIS. The map only paints. **You**\ncall `setTool` and `finish` from your own buttons, and persist the `Annotation[]`\n`onCommit` hands you like any other React state.\n\n[npm](https://www.npmjs.com/package/@orange-groove/react-map-annotate)\n[demo](https://react-map-annotate-demo.onrender.com/)\n[CI](https://github.com/orange-groove/react-map-annotate/actions/workflows/ci.yml)\n[license](./LICENSE)\n\n[Live demo](https://react-map-annotate-demo.onrender.com/) — Mapbox, MapLibre, Google, Leaflet, and ArcGIS.\n\n## Install\n\n```bash\nnpm install @orange-groove/react-map-annotate\n```\n\nPeers: `react` and `react-dom` ≥ 18. Import the CSS once, or skip it and style\nthe session yourself.\n\n```ts\nimport \"@orange-groove/react-map-annotate/styles.css\";\n```\n\n| Map      | Also install                                          |\n| -------- | ----------------------------------------------------- |\n| Mapbox   | `react-map-gl` ≥ 8, `mapbox-gl` ≥ 3                   |\n| MapLibre | `react-map-gl` ≥ 8, `maplibre-gl` ≥ 4                 |\n| Google   | `@vis.gl/react-google-maps` ≥ 1                       |\n| Leaflet  | `leaflet` ≥ 1.9, `react-leaflet` ≥ 4 (v5 on React 19) |\n| ArcGIS   | `@arcgis/core` ≥ 4.28                                 |\n\n## Quick start\n\nThe first snippet is headless on purpose. Stock chrome is below if you want a\ntoolbar today.\n\n```tsx\nimport { useState } from \"react\";\nimport Map from \"react-map-gl/mapbox\";\nimport {\n  AnnotateProvider,\n  useAnnotate,\n  type Annotation,\n} from \"@orange-groove/react-map-annotate/core\";\nimport { Annotate } from \"@orange-groove/react-map-annotate/mapbox\";\nimport \"@orange-groove/react-map-annotate/styles.css\";\n\nfunction FenceControls() {\n  const { setTool, finish, canFinish } = useAnnotate();\n  return (\n    <>\n      <button type=\"button\" onClick={() => setTool(\"polygon\")}>\n        Fence\n      </button>\n      <button type=\"button\" disabled={!canFinish} onClick={finish}>\n        Done\n      </button>\n    </>\n  );\n}\n\nexport function MapWithDraw({ token }: { token: string }) {\n  const [annotations, setAnnotations] = useState<Annotation[]>([]);\n\n  return (\n    <AnnotateProvider annotations={annotations} onChange={setAnnotations}>\n      <Map\n        mapboxAccessToken={token}\n        initialViewState={{ longitude: -73.9857, latitude: 40.7484, zoom: 14 }}\n        mapStyle=\"mapbox://styles/mapbox/streets-v12\"\n        style={{ width: \"100%\", height: \"100%\" }}\n      >\n        <Annotate />\n      </Map>\n      <FenceControls />\n    </AnnotateProvider>\n  );\n}\n```\n\n`Annotate` must be a child of `Map`. Controls can live anywhere under\n`AnnotateProvider`.\n\n### Fast start: stock toolbar and list\n\n```tsx\nimport {\n  AnnotateList,\n  AnnotateToolbar,\n} from \"@orange-groove/react-map-annotate/core\";\n\n<AnnotateProvider annotations={annotations} onChange={setAnnotations}>\n  <Map mapboxAccessToken={token} /* ... */>\n    <Annotate />\n  </Map>\n  <AnnotateToolbar />\n  <AnnotateList />\n</AnnotateProvider>;\n```\n\nThose two components are example consumers of `useAnnotateTools()` and\n`useAnnotateItems()`. Replace them when your design system shows up. Full\nsamples: [examples/](./examples).\n\n## Compare\n\n[Terra Draw](https://github.com/JamesLMilner/terra-draw) is a capable\nadapter-based drawing engine. You can drive it from your own UI (`setMode`,\n`addFeatures`) and read GeoJSON from its store. Use it when you want that\ncontrol without a React session, or when you need OpenLayers.\n\nThis library is for when the drawing session itself is React state: the same\n`Annotation[]` your toolbar, list, and database already speak.\n\n|                       | This library                                                                 | Terra Draw                                                                                             | Mapbox GL Draw                                                | Leaflet.Draw                        | Google Drawing Manager                      |\n| --------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------- | ----------------------------------- | ------------------------------------------- |\n| React state ownership | `Annotation[]` on the provider. `onCommit` is the write path.                | Internal GeoJSON store. Snapshot it (`getSnapshot`) and subscribe to change events to sync into React. | Draw's feature store (`getAll` / `set`). Sync out via events. | Layers on the map.                  | Overlay objects on the map.                 |\n| Custom UI APIs        | Headless hooks: `useAnnotate()`, `useAnnotateTools()`, `useAnnotateItems()`. | Imperative instance API. Fully controllable; no React hooks.                                           | `changeMode`; hide or restyle the default control.            | Custom `L.Control`, or hide theirs. | `drawingControl: false` + `setDrawingMode`. |\n| Supported engines     | Mapbox, MapLibre, Google, Leaflet, ArcGIS                                    | Mapbox, MapLibre, Google, Leaflet, OpenLayers                                                          | Mapbox (MapLibre via community ports)                         | Leaflet                             | Google Maps                                 |\n| Built-in editing      | Move, vertex drag, rotate, mid-edge insert, vertex delete, undo / redo       | Select mode (drag, scale, rotate) plus undo / redo                                                     | `simple_select` / `direct_select`                             | Edit / delete handlers              | Limited after the shape is placed           |\n| Measurement           | Geodesic path, 10 m samples, optional terrain elevation                      | Not built in. Measure from the GeoJSON you already have.                                               | Not built in.                                                 | Not built in.                       | Not built in.                               |\n\nEngine-locked managers (Mapbox GL Draw, Leaflet.Draw, Google Drawing Manager)\nare the right tool when you want their control on that one map. They were not\nbuilt as a React session.\n\n## Recipes\n\n### Build a custom toolbar\n\n```tsx\nimport { useAnnotate } from \"@orange-groove/react-map-annotate/core\";\n\nconst { setTool, finish, canFinish } = useAnnotate();\nsetTool(\"polygon\");\nfinish();\n```\n\nFor a row of buttons with undo, redo, and icons, use `useAnnotateTools()` —\nsee [examples/custom-toolbar.tsx](./examples/custom-toolbar.tsx). For a\nsidebar that names, recolors, and deletes rows, see\n[examples/custom-list.tsx](./examples/custom-list.tsx).\n\n### Click twice, or press and drag\n\nCircles, rectangles, lines, arrows, and measures all take two points. `drawMode`\ndecides how you give them:\n\n```tsx\n<AnnotateProvider drawMode=\"drag\">\n```\n\n| `drawMode`          | The gesture                                                      |\n| ------------------- | ---------------------------------------------------------------- |\n| `\"click\"` (default) | Click the first point, move, click again to finish.              |\n| `\"drag\"`            | Press at the first point, drag, release at the second to finish. |\n\nTwo clicks are the default because they survive a shaky hand, a trackpad, and a\ntouch screen, and because the shape follows the cursor between the clicks so you\ncan see what you are about to commit. Pick `\"drag\"` when your users come from a\ndesktop drawing tool and expect to hold the button down.\n\nThe gesture is all that changes. The same `Annotation[]` comes out either way,\nand the tools that only have one honest gesture keep it: freehand is always a\ndrag, polygon is always a click per vertex, and marker, text, and trace are\nalways a single click.\n\n`drawMode` also takes a per-map override on `Annotate`, for a session that\ndrives two maps:\n\n```tsx\n<Annotate drawMode=\"drag\" />\n```\n\n### A drag does not go through your state\n\nDragging a shape does not call `onChange`, and does not update\n`useAnnotate().annotations`. The library paints the in-flight geometry itself,\nat most once per frame, and hands you the result once the gesture ends. A\ntoolbar or a layers list reading `annotations` is a frame or two stale mid-drag\nand correct as soon as the pointer comes up. Nothing you write in `onChange`\ncan make a drag stutter.\n\n`onChange` fires when a change lands: the end of a gesture, and every discrete\nchange (add, delete, style, label, group, undo, redo). `onCommit` fires for the\nsame set and is the one to persist from.\n\n```tsx\n<AnnotateProvider\n  annotations={annotations}\n  onChange={setAnnotations}\n  onCommit={(next, meta) => {\n    void fetch(\"/api/annotations\", {\n      method: \"PATCH\",\n      body: JSON.stringify({ annotations: next, changed: meta.ids }),\n    });\n  }}\n>\n```\n\nBoth callbacks receive `(annotations, meta)`. `meta.reason` is `\"live\"` or\n`\"commit\"`, `meta.cause` names the change (`add`, `edit`, `style`, `label`,\n`delete`, `group`, `ungroup`, `undo`, `redo`, `set`), and `meta.ids` lists the\nannotations it touched. `useAnnotate()` also exposes `isEditing` if your own UI\nneeds to know a gesture is in flight.\n\nIf you do want the in-flight geometry, ask for it explicitly rather than paying\nfor it everywhere:\n\n```tsx\nimport { useLiveAnnotations } from \"@orange-groove/react-map-annotate/core\";\n\n// Re-renders once per frame during a drag, and only this component.\nconst live = useLiveAnnotations(useAnnotate().annotations);\n```\n\n`emitLiveChanges` on `AnnotateProvider` brings back a live `onChange`, throttled\nto one call per frame with `meta.reason === \"live\"`. It costs you a render per\nframe for geometry you will be handed again on commit, so leave it off unless\nsomething outside the map has to follow the pointer.\n\nIn controlled mode the provider ignores incoming `annotations` while a gesture\nis running, and treats an array you hand straight back as your echo rather than\nnew truth. Remapping colors or adding your own fields on the way through no\nlonger resets undo or fights the drag.\n\nYou do not have to hand the same array back. If you keep annotations in your own\nshape and remap on the way in — through GeoJSON, a store, a fetch — every render\ngives the provider a new array, so it cannot recognise your echo by reference.\nIt falls back to what it just committed, and to the list that commit replaced. A\nprop carrying either one is a render your store has not caught up with, and is\ndropped. That covers a move whose new position has not landed yet, and an add or\na delete your store applies a turn later. This is the whole host:\n\n```tsx\n<AnnotateProvider\n  annotations={toLibAnnotations(annotations)}\n  onCommit={(next) => setAnnotations((current) => merge(next, current))}\n/>\n```\n\nNothing else is required: no `onChange`, no `onUpdate`, no `flushSync`. Every\nchange lands in `onCommit` exactly once — the end of a drag, add, delete, style,\nlabel, group, ungroup, undo, redo — and a gesture that moved nothing does not\ncommit at all, so a click on a shape will not mark your project dirty.\n\nAnything that is neither the commit nor what it replaced is real news and\napplies: a project load, a collaborator, an edit you made yourself. Order does\nnot count as a difference, so a merge is free to reorder. Once your array agrees\nwith the last commit the library steps back and your geometry is authoritative\nagain. To move existing geometry from outside the map without waiting for that,\ncall `setAnnotations` from `useAnnotate()` instead of routing it through the\nprop.\n\n### Persist annotations to a database\n\nPersist from `onCommit`. It fires once per landed change — the end of a drag,\nadd, move, resize, label, color, delete, group, ungroup, undo, redo — and never\nmid-gesture, so a save is one request per change rather than one per frame. A\ngesture that moved nothing does not commit at all. Put `Annotation[]` in the\nrequest body and load the same array back into `annotations`.\n\n```tsx\n<AnnotateProvider\n  annotations={annotations}\n  onChange={setAnnotations}\n  onCommit={(next) => {\n    void fetch(\"/api/annotations\", {\n      method: \"PUT\",\n      headers: { \"Content-Type\": \"application/json\" },\n      body: JSON.stringify(next),\n    });\n  }}\n>\n```\n\n`onChange` is the session write path: keep your React state in step with it.\n`onCommit` is the persistence path. If your state is the annotations array\nitself, use both as above; if you keep annotations in your own shape and remap\non the way in, drop `onChange` and set state from `onCommit` alone — see\n[A drag does not go through your state](#a-drag-does-not-go-through-your-state).\n\nGranular `onAdd` / `onDelete` / `onLabelChange` / `onColorChange` are there\nwhen you need an audit trail. Full file:\n[examples/persist.tsx](./examples/persist.tsx).\n\n### Use with Zustand\n\nThe provider does not care where the array lives. Pass store getters and\nsetters as `annotations` / `onChange`, and add `onCommit` where you persist.\n\n```tsx\nimport { create } from \"zustand\";\nimport type { Annotation } from \"@orange-groove/react-map-annotate/core\";\n\nconst useAnnotations = create<{\n  annotations: Annotation[];\n  setAnnotations: (annotations: Annotation[]) => void;\n}>((set) => ({\n  annotations: [],\n  setAnnotations: (annotations) => set({ annotations }),\n}));\n\nconst annotations = useAnnotations((state) => state.annotations);\nconst setAnnotations = useAnnotations((state) => state.setAnnotations);\n\n<AnnotateProvider annotations={annotations} onChange={setAnnotations}>\n```\n\n[examples/zustand.tsx](./examples/zustand.tsx). Redux, Jotai, and\n`localStorage` follow the same two props.\n\n### Switch from Mapbox to MapLibre\n\nKeep the provider, hooks, and `Annotation[]`. Change the map component and the\n`Annotate` import.\n\n```tsx\nimport Map from \"react-map-gl/maplibre\";\nimport { Annotate } from \"@orange-groove/react-map-annotate/maplibre\";\nimport \"maplibre-gl/dist/maplibre-gl.css\";\n\n<Map\n  initialViewState={{ longitude: -73.9857, latitude: 40.7484, zoom: 14 }}\n  mapStyle=\"https://basemaps.cartocdn.com/gl/positron-gl-style/style.json\"\n>\n  <Annotate />\n</Map>;\n```\n\n[examples/maplibre.tsx](./examples/maplibre.tsx). Other engines:\n\n| Engine   | `Annotate` import                                | Example                                          |\n| -------- | ------------------------------------------------ | ------------------------------------------------ |\n| Mapbox   | `@orange-groove/react-map-annotate` or `/mapbox` | [examples/mapbox.tsx](./examples/mapbox.tsx)     |\n| MapLibre | `/maplibre`                                      | [examples/maplibre.tsx](./examples/maplibre.tsx) |\n| Google   | `/google`                                        | [examples/google.tsx](./examples/google.tsx)     |\n| Leaflet  | `/leaflet`                                       | [examples/leaflet.tsx](./examples/leaflet.tsx)   |\n| ArcGIS   | `/arcgis`                                        | [examples/arcgis.tsx](./examples/arcgis.tsx)     |\n\nSession imports stay on `/core`. Engine entries still re-export the session so\nexisting `/mapbox` (and root) imports keep working. `/osm` is the optional\nOpenStreetMap Trace reader for the raster engines; see\n[Enable Trace on Google, Leaflet, and ArcGIS](#enable-trace-on-google-leaflet-and-arcgis).\n\nMapbox `enableTerrain` uses the Mapbox terrain DEM. MapLibre needs an explicit\nraster-DEM (`terrainSource`). Terrain is a no-op on Google, Leaflet, and\nArcGIS. Google needs a `mapId` (the public `DEMO_MAP_ID` is enough) so labels\nand handles can use Advanced Markers. Leaflet coordinates stay `[lng, lat]` in\nyour state; isolate the map in a stacking context so panes do not cover your\nchrome. ArcGIS: pass the `MapView` through `ArcgisViewProvider` — do not mount\nReact children inside `MapView.container`. If you render `<arcgis-map>`, put\n`<Annotate />` inside it.\n\n### Create a measurement tool\n\n```tsx\nconst { setTool, finish, canFinish } = useAnnotate();\n\n<button type=\"button\" onClick={() => setTool(\"measure\")}>\n  Measure\n</button>\n<button type=\"button\" disabled={!canFinish} onClick={finish}>\n  Done\n</button>\n\n<Map /* ... */>\n  <Annotate enableTerrain sampleIntervalMeters={10} />\n</Map>\n```\n\nTwo clicks complete a measure, or one press-drag-release under\n`drawMode=\"drag\"`. The distance reads out at the head of the path the whole\ntime, so you can stretch the line to the number you want before committing it.\nThat live figure is geodesic from the vertices; the elevation samples are the\none part that waits for the commit, because sampling terrain per frame is what\nmakes a drag stutter.\n\nThe saved annotation carries `distanceMeters`, the samples when terrain is\nenabled, and the same formatted string on `caption`.\n[examples/measure.tsx](./examples/measure.tsx).\n\n### Trace takes one block, not the whole road\n\nA vector tile hands back a whole road feature, which runs for as many blocks as\nits tags stay the same — trace 9th Avenue and you get every block of it. So\nTrace cuts the road at its crossroads and keeps the block under the pointer.\nClick the next block to extend.\n\nThe crossroads are already in the data: where two roads meet at grade they\nshare a node, so a vertex of this road that another road also owns is a\njunction. A bridge or tunnel crosses without sharing a node and stays whole,\nand a crosswalk, driveway, or alley is too small to cut at.\n\n```tsx\n// Whole feature, the way it came out of the tile.\n<Annotate trace={{ splitAtJunctions: false }} />\n```\n\n`junctionToleranceMeters` (default 2) sets how close two vertices have to be to\ncount as one node — raise it for a source whose roads do not quite meet.\n\n### Enable Trace on Google, Leaflet, and ArcGIS\n\nMapbox and MapLibre already know which road or building is under the pointer.\nTheir vector styles expose `queryRenderedFeatures`, so Trace is on by default:\nhover highlights the rendered outline, click keeps `kind: \"trace\"`. You do not\npass a `trace` prop on those engines.\n\nGoogle, Leaflet, and ArcGIS paint a raster basemap. There is no rendered\nfeature graph to query, so the library cannot guess a road. You supply one:\npass `trace` on **that engine's** `<Annotate />`. The library fires hover and\nclick with `lngLat` (and the screen point) and paints whatever `{ coordinates }`\nyou return. The callback may be async.\n\nDo **not** put this on `AnnotateProvider` if you also mount Mapbox or MapLibre\nin the same session — that replaces their built-in query.\n\n`/osm` ships a ready-made one so those engines behave like the vector engines,\nblocks and all. It is a separate entry point: import it and nothing else in the\npackage grows, and no request is made unless you pass the callback.\n\n```tsx\nimport { Annotate } from \"@orange-groove/react-map-annotate/leaflet\";\nimport { createOsmTrace } from \"@orange-groove/react-map-annotate/osm\";\n\n// Module scope, not per render — it keeps what it has already read.\nconst trace = createOsmTrace();\n\n<MapContainer center={[40.7484, -73.9857]} zoom={16}>\n  <TileLayer url=\"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png\" />\n  <Annotate trace={trace} />\n</MapContainer>;\n```\n\nIt reads the viewport off the map on the first hover, keeps the ways, and cuts\nthem into blocks at their shared nodes — the same rule the vector engines use,\nbut with real OSM node ids, so the cuts are exact rather than matched by\nposition. There is nothing to prefetch and no `useEffect` to wire.\n\nThree things to know before you ship it. OSM data is ODbL, so credit\nOpenStreetMap wherever the annotations are shown. The defaults are shared\ncommunity endpoints — Overpass, then the OSM map API — which are rate limited\nand go down; point it at your own service for real traffic. And the payload is\nworth a thought: Overpass is asked for roads (and buildings) alone, but the map\nAPI fallback cannot filter, so the same request comes back tens of megabytes in\na dense city. `buildings: false` cuts it a long way if you only trace roads.\n\n```tsx\nconst trace = createOsmTrace({\n  loadWays: async (bbox, signal) => myRoadsApi(bbox, signal), // your service\n  overpassEndpoints: [], // or keep the fallback, pointed at your instance\n  hitMeters: 36,\n  buildings: false,\n  splitAtJunctions: false, // whole ways, the old behaviour\n});\n```\n\n`loadWays` returns `OsmWay[]` — `{ id, coordinates, nodes, tags }`, where\n`nodes` is one key per coordinate. Any two ways that use the same key are\ntreated as meeting there, so if your source has no node ids, pass the\ncoordinate and the split still works.\n\nOr write the whole callback yourself: hit-test a GeoJSON layer, call an\ninternal roads API, whatever you have. `splitPathAtJunctions(path, others)` is\nexported from the root for that case, so you can reuse the block split over any\nset of lines.\n\nGoogle's tiles are not OSM. If you pick from OSM on Google, the highlight can\ndisagree with the basemap. Leaflet or ArcGIS on OSM tiles will match more\nclosely.\n\n`trace={false}` turns Trace off on every engine, including Mapbox and MapLibre.\n\n## Host fields on an annotation\n\n`data` is a passthrough bag the library never reads, and `visible: false` hides\nan annotation from paint and hit-testing without removing it from the array. Use\nthem instead of keeping a parallel list and merging it back on every change.\n\n```tsx\nconst next: Annotation = {\n  ...annotation,\n  visible: false,\n  data: { layerId, sortOrder, featureId },\n};\n```\n\n`data` is cloned with `structuredClone` for undo, so it must hold plain JSON —\nno functions, class instances, or store handles.\n\n`label` is yours and the library never overwrites it. Derived text lives on\n`caption`: a measure writes its distance there and repaints it on every edit,\nso a sidebar can show \"Measurement 3\" while the map shows `1.2 km`.\n\n## Styling strokes and fills\n\n| Field              | What it does                                            |\n| ------------------ | ------------------------------------------------------- |\n| `color`            | Stroke and fill color.                                  |\n| `strokeWidth`      | Line width, and area outline width.                     |\n| `strokeOpacity`    | Stroke alpha. Defaults to 0.95.                         |\n| `fillOpacity`      | Resting fill alpha for areas. Defaults to 0.            |\n| `hoverFillOpacity` | Fill alpha on hover. Defaults to `fillOpacity` or 0.18. |\n\nKeep `color` to `#RRGGBB` or a CSS color. Mapbox and MapLibre read the color\nfrom a data property, and 8-digit `#RRGGBBAA` is not valid there — the shaft\nfalls back to black while SVG arrow heads still honor it. Put the alpha in\n`strokeOpacity` or `fillOpacity` instead.\n\n## Mounting alongside your own layers\n\n`Annotate` waits for the map style to load before adding its sources, so\n`enableTerrain` restyles no longer drop the annotation layers. `onStyleReady`\nfires once they are mounted.\n\nWhen your app selects its own layers on the same map, ask whether a click was\nalready ours:\n\n```tsx\nimport { annotateClickTarget } from \"@orange-groove/react-map-annotate/core\";\n\nmap.on(\"click\", (event) => {\n  const { consumed, id } = annotateClickTarget(\n    map.queryRenderedFeatures(event.point),\n  );\n  if (consumed) return; // the annotation session handled it\n  selectProjectFeature(event);\n});\n```\n\n`isAnnotateLayerId(layerId)` is the lower-level check if you need it.\n\n## Fonts\n\nPass a catalog on `AnnotateProvider`. The stock list uses it, new text can\ndefault to one of your families, and custom UI reads the same list from\n`useAnnotateFonts()`.\n\n```tsx\nimport {\n  AnnotateProvider,\n  TEXT_FONTS,\n  type AnnotateFont,\n} from \"@orange-groove/react-map-annotate/core\";\n\nconst fonts: AnnotateFont[] = [\n  ...TEXT_FONTS,\n  {\n    family: '\"Inter\"',\n    label: \"Inter\",\n    stylesheet:\n      \"https://fonts.googleapis.com/css2?family=Inter:wght@700&display=swap\",\n  },\n  {\n    family: \"Outfit\",\n    label: \"Outfit\",\n    source: \"url(/fonts/outfit.woff2)\",\n  },\n];\n\n<AnnotateProvider fonts={fonts} defaultFontFamily='\"Inter\"'>\n  {/* map, toolbar, list */}\n</AnnotateProvider>;\n```\n\n`stylesheet` injects a `<link>`. `source` registers a `FontFace`. `family` is\nwhat gets stored on `annotation.style.fontFamily` and applied to the map text.\nOmit `fonts` to keep the built-in web-safe list. Spread `TEXT_FONTS` if you\nwant those plus your own.\n\n```tsx\nconst fonts = useAnnotateFonts();\nitem.setStyle({ fontFamily: fonts[1]?.family });\n```\n\n## How drawing feels\n\nPick a tool. Draw. Press **Finish**, Enter, or Escape to commit.\n\n- **Select** — click an annotation to select it. Shift-click or ⌘/Ctrl-click\n  adds or removes. Drag an empty area to draw a dotted box; everything inside\n  is selected. Hold Shift while dragging the box to add to the selection.\n- **Trace** — hover a road or building outline to highlight it. Click to\n  keep that feature. Roads arrive one block at a time, cut at their crossroads;\n  click the next block to extend. Move the finished shape by its bounds box; it\n  has no vertex handles.\n- **Circle, rectangle, line, arrow, bidirectional arrow, measure** — click to\n  place the first point, click again to finish. Set `drawMode=\"drag\"` to take\n  the whole shape from one press-drag-release instead.\n- **Freehand** — sketch with the button held; completes on mouse up.\n- **Measure** — the distance so far reads out at the head of the path from the\n  first point on, not only once the shape is finished.\n- **Polygon** — click vertices, then Finish.\n- **Marker** — click to drop a pin.\n- **Text** — click to place. Type to edit. Corner handle resizes. Rotate\n  handle turns it. Color from the list.\n- **Edit** — hover or select a finished shape to move it, or drag it by its\n  label. End handles resize\n  lines, arrows, and measures. Vertices resize polygons and rectangles. A\n  diagonal handle resizes circles. A rotate handle turns drawings, rectangles,\n  polygons, and text around their center. Hollow mid-edge handles insert vertices on\n  polygons and paths. Double-click a vertex (or select it and press Delete) to\n  remove it. Click empty map to deselect. Shift-click or ⌘/Ctrl-click to select more than one annotation.\n  With the Select tool, drag a dotted rectangle to select everything inside\n  (Shift-drag adds to the selection). Click Select again, or press Finish /\n  Enter / Escape, to return to pan so the map can move. Selecting one member of a group selects\n  the rest. Hover a grouped annotation to see a dotted box around the group.\n  Drag a selected shape, or its label, to move the whole selection. Vertex\n  handles stay hidden while more than one item is selected.\n  ⌘G / Ctrl+G groups the selection; ⇧⌘G / Ctrl+Shift+G ungroups it. Undo /\n  redo from the toolbar or ⌘Z / ⇧⌘Z. Right-click opens Duplicate, Copy, Paste,\n  Group, Ungroup, and Delete. ⌘D / Ctrl+D duplicates the selection to the\n  right. ⌘C / Ctrl+C copies the selected set; ⌘V / Ctrl+V pastes it at the\n  pointer, keeping relative spacing and group membership.\n\n```tsx\n<Annotate\n  enableTerrain\n  defaultColor=\"#2563eb\"\n  defaultStrokeWidth={3}\n  drawMode=\"click\"\n  sampleIntervalMeters={10}\n  renderArrowHead={({ bearing, color, size }) => (\n    <svg width={size} height={size} viewBox=\"0 0 24 24\">\n      <path\n        d=\"M12 2 L20 20 L12 16 L4 20 Z\"\n        fill={color}\n        style={{ transform: `rotate(${bearing}deg)` }}\n      />\n    </svg>\n  )}\n  renderLabel={({ annotation }) => (\n    <span className=\"chip\">{annotation.label}</span>\n  )}\n/>\n```\n\nMeasure paths are densified along the geodesic every 10 meters. With terrain\nenabled, each sample records ground height.\n\n## Tools\n\n| Tool                  | What it does                                                                                                                                              |\n| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Select                | Click to select. Shift/⌘-click for more than one. Drag a dotted box to select several at once.                                                            |\n| Freehand              | Sketch a path. Hover for a bounds box; drag to move. Corner handle resizes; rotate handle turns it.                                                       |\n| Trace                 | Hover a rendered road or building outline, click to adopt it. No freehand, no per-vertex handles.                                                         |\n| Line                  | Two points. Hover ends to resize.                                                                                                                         |\n| Arrow / bidirectional | Line plus SVG heads. Size from the list, or `setStyle({ strokeWidth })` — widens the shaft and the heads.                                                 |\n| Circle                | Center, then radius. Hover for a resize handle.                                                                                                           |\n| Rectangle             | Two opposite corners. Hover vertices to resize, rotate handle to turn.                                                                                    |\n| Polygon               | Click vertices, Finish to close. Rotate handle turns it.                                                                                                  |\n| Measure               | Geodesic length, live while you draw, optional terrain samples.                                                                                           |\n| Marker                | Labeled map pin. Drag the pin to move it.                                                                                                                 |\n| Text                  | Click to place. Drag to move, corner to resize, rotate handle to turn. Color and font from the list, or `setStyle({ fontFamily })`. Double-click to edit. |\n| Finish                | Commit the draft (same as Enter).                                                                                                                         |\n\nMapbox and MapLibre query rendered road and building layers — no `trace` prop.\nGoogle, Leaflet, and ArcGIS need a `trace` callback; see\n[Enable Trace on Google, Leaflet, and ArcGIS](#enable-trace-on-google-leaflet-and-arcgis).\n`trace={false}` turns it off.\n\n## API snapshot\n\n| Export                 | Role                                                                              |\n| ---------------------- | --------------------------------------------------------------------------------- |\n| `/core`                | Session, hooks, types, utils, toolbar, list — no `Annotate`.                      |\n| `AnnotateProvider`     | Session. Optional `annotations` / `onChange` / `onCommit` / `drawMode` / `fonts`. |\n| `Annotate`             | Map child. Drawing, hover handles, layers.                                        |\n| `AnnotateToolbar`      | Stock icon toolbar — optional.                                                    |\n| `AnnotateList`         | Stock label / color / font / size / delete list — optional.                       |\n| `useAnnotate()`        | Full session: `setTool`, `setLabel`, `setStyle`, `fonts`, …                       |\n| `useAnnotateTools()`   | `{ items, finish, canFinish, deleteSelected, undo, redo }`                        |\n| `useAnnotateItems()`   | Rows with `isSelected`, `select`, `setLabel`, `setColor`, `setStyle`, `remove`.   |\n| `useAnnotateFonts()`   | Font catalog from the provider.                                                   |\n| `useLiveAnnotations()` | In-flight geometry during a gesture, one render per frame.                        |\n| `AnnotateToolIcon`     | Bundled tool SVG.                                                                 |\n\nTypes ship with the package: `Annotation`, `AnnotateTool`, `AnnotateSession`,\nand the rest.\n\n## Compatibility\n\nCI runs `npm run check` (typecheck, lint, Prettier, Vitest) on Node 20 and 22.\nTests are jsdom unit tests, not live map tiles.\n\n| Package                     | Peer floor | Tested in this repo |\n| --------------------------- | ---------- | ------------------- |\n| `react` / `react-dom`       | ≥ 18       | 19.2                |\n| `react-map-gl`              | ≥ 8        | 8.1                 |\n| `mapbox-gl`                 | ≥ 3        | 3.29                |\n| `maplibre-gl`               | ≥ 4        | 5.24                |\n| `@vis.gl/react-google-maps` | ≥ 1        | 1.10                |\n| `leaflet`                   | ≥ 1.9      | 1.9.4               |\n| `react-leaflet`             | ≥ 4        | 5.0                 |\n| `@arcgis/core`              | ≥ 4.28     | peer only           |\n\nReact 18 and react-leaflet 4 stay in range. ArcGIS is an optional peer and is\nnot installed in the default CI graph.\n\n## Contributing\n\n- [Contributing guide](./CONTRIBUTING.md)\n- [Code of conduct](./CODE_OF_CONDUCT.md)\n- [Changelog](./CHANGELOG.md) · [Releases](https://github.com/orange-groove/react-map-annotate/releases)\n- [Bug report](https://github.com/orange-groove/react-map-annotate/issues/new?template=bug.yml) ·\n  [Feature request](https://github.com/orange-groove/react-map-annotate/issues/new?template=feature.yml)\n\n## License\n\nMIT. Works with [react-map-gl](https://visgl.github.io/react-map-gl/) on Mapbox\nand MapLibre, [@vis.gl/react-google-maps](https://visgl.github.io/react-google-maps/)\non Google Maps, [react-leaflet](https://react-leaflet.js.org/) on Leaflet, and\n[ArcGIS Maps SDK for JavaScript](https://developers.arcgis.com/javascript/).\n","readmeFilename":"README.md"}