{"_id":"@dxf-tools/maplibre","_rev":"4-88fa229b3a3b1154118c3b5d7235e7f6","name":"@dxf-tools/maplibre","dist-tags":{"latest":"0.2.4"},"versions":{"0.1.0":{"name":"@dxf-tools/maplibre","version":"0.1.0","keywords":["dxf","maplibre","cad","crs","proj4","overlay"],"author":{"name":"Amjed Ali K"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@dxf-tools/maplibre@0.1.0","maintainers":[{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"}],"homepage":"https://amjed-ali-k.github.io/dxf-tools/","bugs":{"url":"https://github.com/amjed-ali-k/dxf-tools/issues"},"dist":{"shasum":"734279c25a2273c9adbb1a7fe869e48d8431550d","tarball":"https://registry.npmjs.org/@dxf-tools/maplibre/-/maplibre-0.1.0.tgz","fileCount":8,"integrity":"sha512-xPbbhE3Q6YPfMQZSSghKpND/wu8Z5hMwiiBjQf/ECzc8oE2fjOMsaXHxOVN4HAOHXoN1RZQX9avar6t08SG6zQ==","signatures":[{"sig":"MEQCIGPB5Xd2NLT6gL5sI98Qis5qJqhWeL55rDq3zZ/28INzAiBr+fNb3R3U/LxQ+0aZWBYjQIj4s/UnctvL1tZGkW+Gog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35927},"main":"./dist/index.js","type":"module","_from":"file:C:/Users/amjed/AppData/Local/Temp/dxf-publish-maplibre-C1YOav/dxf-tools-maplibre-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --pretty false --noEmit","test:watch":"vitest"},"_npmUser":{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"},"_resolved":"C:\\Users\\amjed\\AppData\\Local\\Temp\\dxf-publish-maplibre-C1YOav\\dxf-tools-maplibre-0.1.0.tgz","_integrity":"sha512-xPbbhE3Q6YPfMQZSSghKpND/wu8Z5hMwiiBjQf/ECzc8oE2fjOMsaXHxOVN4HAOHXoN1RZQX9avar6t08SG6zQ==","repository":{"url":"git+https://github.com/amjed-ali-k/dxf-tools.git","type":"git","directory":"packages/maplibre"},"_npmVersion":"11.11.0","description":"MapLibre DXF overlay (DxfMapOverlay) with CRS/proj4 placement","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"proj4":"^2.20.9","@dxf-tools/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22","maplibre-gl":"^5.6.0","@types/proj4":"^2.19.0","@dxf-tools/webgl":"^0.1.0"},"peerDependencies":{"maplibre-gl":"^5.6.0","@dxf-tools/webgl":"^0.1.0"},"peerDependenciesMeta":{"maplibre-gl":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/maplibre_0.1.0_1783873478435_0.01828690497303631","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@dxf-tools/maplibre","version":"0.2.2","keywords":["dxf","maplibre","cad","crs","proj4","overlay"],"author":{"name":"Amjed Ali K"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@dxf-tools/maplibre@0.2.2","maintainers":[{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"}],"homepage":"https://amjed-ali-k.github.io/dxf-tools/","bugs":{"url":"https://github.com/amjed-ali-k/dxf-tools/issues"},"dist":{"shasum":"5a93132c7c780dd7329b5a5ae35fa132027cdb22","tarball":"https://registry.npmjs.org/@dxf-tools/maplibre/-/maplibre-0.2.2.tgz","fileCount":8,"integrity":"sha512-4I9U5CXjS04UBRKIECGgDWTG0r61id1+3gKulpxZJDGupO89EIwrBtGOz3joZVw0OI4ZqoaGVb/t0bO/f5GIVQ==","signatures":[{"sig":"MEQCIF7LQOJ9LyocK5fULDJvVl8duLsH2TVC77mQ6PQAh/URAiAagw4mflAy6ScZLBx8sbQEOlRujO3e8x0Gl/iD89FQEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43192},"main":"./dist/index.js","type":"module","_from":"file:C:/Users/amjed/AppData/Local/Temp/dxf-publish-maplibre-tEqps3/dxf-tools-maplibre-0.2.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --pretty false --noEmit","test:watch":"vitest"},"_npmUser":{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"},"_resolved":"C:\\Users\\amjed\\AppData\\Local\\Temp\\dxf-publish-maplibre-tEqps3\\dxf-tools-maplibre-0.2.2.tgz","_integrity":"sha512-4I9U5CXjS04UBRKIECGgDWTG0r61id1+3gKulpxZJDGupO89EIwrBtGOz3joZVw0OI4ZqoaGVb/t0bO/f5GIVQ==","repository":{"url":"git+https://github.com/amjed-ali-k/dxf-tools.git","type":"git","directory":"packages/maplibre"},"_npmVersion":"11.11.0","description":"MapLibre DXF overlay (DxfMapOverlay) with CRS/proj4 placement","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"proj4":"^2.20.9","@dxf-tools/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22","maplibre-gl":"^5.6.0","@types/proj4":"^2.19.0","@dxf-tools/webgl":"^0.1.0"},"peerDependencies":{"maplibre-gl":"^5.6.0","@dxf-tools/webgl":"^0.1.0"},"peerDependenciesMeta":{"maplibre-gl":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/maplibre_0.2.2_1783956723294_0.6482885188135317","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@dxf-tools/maplibre","version":"0.2.3","keywords":["dxf","maplibre","cad","crs","proj4","overlay"],"author":{"name":"Amjed Ali K"},"license":"PolyForm-Noncommercial-1.0.0","_id":"@dxf-tools/maplibre@0.2.3","maintainers":[{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"}],"homepage":"https://amjed-ali-k.github.io/dxf-tools/","bugs":{"url":"https://github.com/amjed-ali-k/dxf-tools/issues"},"dist":{"shasum":"9bd1ddbf55b51267e2d08c20ba04925a7b4eebb2","tarball":"https://registry.npmjs.org/@dxf-tools/maplibre/-/maplibre-0.2.3.tgz","fileCount":8,"integrity":"sha512-d+/Sk+e6aDAlxpQyeJxPFvherB2XbXFfVXxiFJ4xwm5QaQBKpHRLDnl+edK8A5th1o1WabOCNbiijDtx5s7YVg==","signatures":[{"sig":"MEYCIQDkmF9NxonCK8LR59qTadt2EJut+VsgHBHIK03Uv9e1qgIhAPUipkcof2jF/uEYgPmQBGjEYodDnc1R0Bfo1sr2dEhT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45351},"main":"./dist/index.js","type":"module","_from":"file:C:/Users/amjed/AppData/Local/Temp/dxf-publish-maplibre-DF0Uwv/dxf-tools-maplibre-0.2.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc -p tsconfig.json --pretty false --noEmit","test:watch":"vitest"},"_npmUser":{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"},"_resolved":"C:\\Users\\amjed\\AppData\\Local\\Temp\\dxf-publish-maplibre-DF0Uwv\\dxf-tools-maplibre-0.2.3.tgz","_integrity":"sha512-d+/Sk+e6aDAlxpQyeJxPFvherB2XbXFfVXxiFJ4xwm5QaQBKpHRLDnl+edK8A5th1o1WabOCNbiijDtx5s7YVg==","repository":{"url":"git+https://github.com/amjed-ali-k/dxf-tools.git","type":"git","directory":"packages/maplibre"},"_npmVersion":"11.11.0","description":"MapLibre DXF overlay (DxfMapOverlay) with CRS/proj4 placement","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","dependencies":{"proj4":"^2.20.9","@dxf-tools/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22","maplibre-gl":"^5.6.0","@types/proj4":"^2.19.0","@dxf-tools/webgl":"^0.1.0"},"peerDependencies":{"maplibre-gl":"^5.6.0","@dxf-tools/webgl":"^0.1.0"},"peerDependenciesMeta":{"maplibre-gl":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/maplibre_0.2.3_1784035243093_0.24070499732542583","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@dxf-tools/maplibre","version":"0.2.4","description":"MapLibre DXF overlay (DxfMapOverlay) with CRS/proj4 placement","type":"module","license":"PolyForm-Noncommercial-1.0.0","author":{"name":"Amjed Ali K"},"homepage":"https://amjed-ali-k.github.io/dxf-tools/","repository":{"type":"git","url":"git+https://github.com/amjed-ali-k/dxf-tools.git","directory":"packages/maplibre"},"bugs":{"url":"https://github.com/amjed-ali-k/dxf-tools/issues"},"keywords":["dxf","maplibre","cad","crs","proj4","overlay"],"sideEffects":false,"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup","typecheck":"tsc -p tsconfig.json --pretty false --noEmit","test":"vitest run","test:watch":"vitest"},"dependencies":{"@dxf-tools/core":"^0.2.4","proj4":"^2.20.9"},"peerDependencies":{"@dxf-tools/webgl":"^0.2.4","maplibre-gl":"^5.6.0"},"peerDependenciesMeta":{"maplibre-gl":{"optional":true}},"devDependencies":{"@dxf-tools/webgl":"^0.2.4","@types/node":"^22","@types/proj4":"^2.19.0","maplibre-gl":"^5.6.0","tsup":"^8.5.1","typescript":"^5.8.3","vitest":"^3.2.4"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@dxf-tools/maplibre@0.2.4","_integrity":"sha512-b0uqEai5Z7ZsY3qDSI1+lUd9Hzv07TDl3C69yquIG/uuRKUgJdVVo5crTD41UoqR/LJJ4UHQlPO7gPP+stXdPQ==","_resolved":"C:\\Users\\amjed\\AppData\\Local\\Temp\\dxf-publish-maplibre-OwlSde\\dxf-tools-maplibre-0.2.4.tgz","_from":"file:C:/Users/amjed/AppData/Local/Temp/dxf-publish-maplibre-OwlSde/dxf-tools-maplibre-0.2.4.tgz","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-b0uqEai5Z7ZsY3qDSI1+lUd9Hzv07TDl3C69yquIG/uuRKUgJdVVo5crTD41UoqR/LJJ4UHQlPO7gPP+stXdPQ==","shasum":"1693b86dac750ab628b050eb83168f9af1a7afa0","tarball":"https://registry.npmjs.org/@dxf-tools/maplibre/-/maplibre-0.2.4.tgz","fileCount":8,"unpackedSize":45351,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC027VRA0oVeA+Lzrd5a4j2LY6JaItr5aPDqz3xE90jugIgSrfkHPpKiU+U7VSptD3yEyfmyufTAvb5rcTG9AfGUpo="}]},"_npmUser":{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"},"directories":{},"maintainers":[{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/maplibre_0.2.4_1787274299789_0.15064130668640918"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-12T16:24:38.305Z","modified":"2026-08-21T01:05:00.201Z","0.1.0":"2026-07-12T16:24:38.583Z","0.2.2":"2026-07-13T15:32:03.432Z","0.2.3":"2026-07-14T13:20:43.236Z","0.2.4":"2026-08-21T01:05:00.002Z"},"bugs":{"url":"https://github.com/amjed-ali-k/dxf-tools/issues"},"author":{"name":"Amjed Ali K"},"license":"PolyForm-Noncommercial-1.0.0","homepage":"https://amjed-ali-k.github.io/dxf-tools/","keywords":["dxf","maplibre","cad","crs","proj4","overlay"],"repository":{"type":"git","url":"git+https://github.com/amjed-ali-k/dxf-tools.git","directory":"packages/maplibre"},"description":"MapLibre DXF overlay (DxfMapOverlay) with CRS/proj4 placement","maintainers":[{"name":"amjed-ali-k-2","email":"amjed.mgm@gmail.com"}],"readme":"# @dxf-tools/maplibre\r\n\r\nMapLibre integration for DXF scenes: a **CAD-accurate overlay** (`DxfMapOverlay`) with optional **CRS / proj4** placement.\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @dxf-tools/core @dxf-tools/webgl @dxf-tools/maplibre maplibre-gl\r\n```\r\n\r\nPeers: `maplibre-gl` ^5.6, `@dxf-tools/webgl` ^0.1.\r\n\r\n## Overlay (recommended)\r\n\r\n```ts\r\nimport { parseDxf, buildScene } from \"@dxf-tools/core\";\r\nimport { loadFontCatalog, styleFontsFromDoc } from \"@dxf-tools/webgl\";\r\nimport { DxfMapOverlay } from \"@dxf-tools/maplibre\";\r\nimport maplibregl from \"maplibre-gl\";\r\n\r\nconst map = new maplibregl.Map({ /* … */ });\r\nconst overlay = new DxfMapOverlay(map, { crs: \"EPSG:2240\" });\r\n\r\nconst buf = await file.arrayBuffer();\r\nconst doc = parseDxf(buf);\r\nconst fonts = await loadFontCatalog(styleFontsFromDoc(doc.tables.styles.values()));\r\nconst scene = buildScene(doc, { fonts, textMode: \"glyphs\" });\r\n\r\noverlay.setScene(scene);\r\noverlay.fit();\r\n```\r\n\r\nLarge survey coordinates are recentered in `buildScene` via `scene.origin`; the overlay applies that origin when projecting. Camera sync uses a 3-corner world→screen affine so CRS grid convergence / Web Mercator skew stay aligned with the basemap, and applies MapLibre’s raster pixel-grid snap (≤0.5 CSS px) so vectors match ortho/OSM tiles. The affine is recomputed and redrawn on every MapLibre render frame so the drawing stays locked during pan/zoom.\r\n\r\n## CRS helpers\r\n\r\n```ts\r\nimport {\r\n  listCrsOptions,\r\n  createCrsProjector,\r\n  registerCrsDef,\r\n  crsLabel,\r\n} from \"@dxf-tools/maplibre\";\r\n\r\nfor (const { value, label } of listCrsOptions()) {\r\n  // populate a <select>\r\n}\r\n\r\noverlay.setCrs(\"EPSG:6447\", true);\r\n// or a custom +proj= string / EPSG code\r\nregisterCrsDef(\"EPSG:9999\", \"+proj=…\");\r\n```\r\n\r\nBuilt-ins from `listCrsOptions()`: `local` (embed near [0°, 0°]), `EPSG:4326`, `EPSG:3857`, Georgia West `EPSG:2240` / `EPSG:6447`, Florida West `EPSG:6443`, North Carolina `EPSG:2264`.\r\n\r\n## Layers\r\n\r\n`DxfMapOverlay` forwards the same layer API as `DxfViewer`:\r\n\r\n```ts\r\noverlay.filterLayers({ query: \"ROAD\" });\r\noverlay.setLayerVisibility(\"HIDDEN\", false);\r\noverlay.soloLayers([\"SITE\"]);\r\noverlay.groupLayersByDelimiter();\r\n```\r\n\r\n## Live demo\r\n\r\nUpload + CRS UI: [Map overlay](https://amjed-ali-k.github.io/dxf-tools/map/) (or `bun run dev` → `/map/`).\r\n\r\n## License\r\n\r\n[PolyForm Noncommercial 1.0.0](./LICENSE) — free for personal / noncommercial use. Commercial use requires a paid license ([inquire](https://github.com/amjed-ali-k/dxf-tools/issues)).\r\n","readmeFilename":"README.md"}