{"_id":"pcb-scene3d-viewer","_rev":"27-2648ca13dcdaade9f335f22813193d36","name":"pcb-scene3d-viewer","dist-tags":{"latest":"1.3.6"},"versions":{"1.0.1":{"name":"pcb-scene3d-viewer","version":"1.0.1","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.0.1","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"b4a3765ae002e538f878d376acbc4ae07a771431","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.0.1.tgz","fileCount":65,"integrity":"sha512-T4bONMRmlKC4ijmC6/7Jzln8b/80fA2JYJ9WV+TIoaS7mcYwNhqNv1g8V1sBnlATP4R1Ut7eW3WY0aV0V+c7Ow==","signatures":[{"sig":"MEYCIQC1rDwese502uI98V/TgaIbA1y+Tz0P67I4Sy+NevWGLgIhAPhxEdoXAZrIZSl/hGmDekEIG+EHZvZewNV3oZeVhGoH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":660771},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"d88335e7998cce015d1e6a6088ae88a3671495b6","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.10.1","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","occt-import-js":"^0.0.23","circuitjson-toolkit":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.0.1_1780944533025_0.9670927232288511","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"pcb-scene3d-viewer","version":"1.1.0","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.0","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"9c5b1b262bd85262fe27e3fd82d06a920b769080","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.0.tgz","fileCount":70,"integrity":"sha512-efwIwYEQzqkqo7YCP9M9GHFEqH3DOjpJLA5Jbm+VnJOOCDdz+lbABj7cdvYov22kvhpf1O4sfalKs2Oxk/0Dmw==","signatures":[{"sig":"MEUCIH6dx9/xNujhHBow6FHvtZMb7AKHsopkhaBb161/OV4XAiEAkNMEHx0sC6pyFg/AgUR0V9Hkn21mbsD+FWroNcVks5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":698770},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"89bc8b782374319d0932f60913e91761f7f7e81e","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","occt-import-js":"^0.0.23","circuitjson-toolkit":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.0_1781031336977_0.3172256207750732","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"pcb-scene3d-viewer","version":"1.1.1","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.1","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"bc109bb5213cae13376df166692ddc26088ff4b9","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.1.tgz","fileCount":71,"integrity":"sha512-TEhaRl4RN5oiU7yMFE8srB9l4YD+E/HwxqlJVC9Saoh+rbeUtbFFezrBzh0zoSe17pTAWMK0dlX+wKmjYiPXgw==","signatures":[{"sig":"MEYCIQDvhntyaIKS/ohAg6nhPROpfu+qFKe6+Gyd0gk/KOh2OQIhAOovop1/+kXxcJ8gWXFJiXq3tM6+zOV0E5oMEAzXV6UD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":704291},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"e7b48ed572b5d44b5cb062d2dc73061c426eb0a4","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","occt-import-js":"^0.0.23","circuitjson-toolkit":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.1_1781199299866_0.8623412032300266","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"pcb-scene3d-viewer","version":"1.1.2","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.2","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"2058f194fa7e36be47f9d75049e5599d23820f19","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.2.tgz","fileCount":79,"integrity":"sha512-AuScMJF0Qfk4239f3GSx183KFTq4LMA4J1MzXs4wjV7FIkGD4lOfa2kZ9M4qoP3OChc/k1i+XeA0fkaKICYEfg==","signatures":[{"sig":"MEUCIEd3a6do4NOW5JhQ3rOwOSigOuHwvvSLqwSIT6KVAnZzAiEAhhUPRdXXHM1RWdNM4IKnMAqAjfGJCvf2P49F0PZaFEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":790061},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"29a1e8b3c83e89c0e997c69dbe27035ae5615520","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.2_1781292163967_0.5818340442699259","host":"s3://npm-registry-packages-npm-production"}},"1.1.10":{"name":"pcb-scene3d-viewer","version":"1.1.10","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.10","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"786d818a0bd7e10ef5f7999a4435556ca74d3f04","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.10.tgz","fileCount":83,"integrity":"sha512-JhDF5db2heHO3aERSNiseS5ubV3dG+RUvqVHMp3CvDQCuRzX8RspWDJeG/FUvGvFQhW+V6iAF85G9CNlIFCWtA==","signatures":[{"sig":"MEUCIQC3Rw8LwFcNPtSTU70rfLGvj37uHlstRu8YrdzqHlhjtwIgREYqZ1V8nKiiWf1SsAK8ESgSchsLYCYaV6w/aFn2ldE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":816419},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"f2ab54897baa579aaccf204effddbfd7a89e7887","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.10_1781459749413_0.8891243343033373","host":"s3://npm-registry-packages-npm-production"}},"1.1.11":{"name":"pcb-scene3d-viewer","version":"1.1.11","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.11","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"c1f6388e5ae950d32d41c91b823145923a6e6f21","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.11.tgz","fileCount":92,"integrity":"sha512-HW4dp+HOd9kVEp/5plZrr9crIWYnvDU39Ylorrp41Nly3X+FuXIliWCym3j7DsiYpC62LqDemGKeL0SF34IgyA==","signatures":[{"sig":"MEQCIFqGZTK5hQa138XUoYP4iRYEHo4K95YTiu2MjI0ZCuPTAiBEsH82wmu+/A7F99dzAg56XAd6GFm3WsBTgaAwgdiUJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":902167},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"bcfc76d3ab7712d7a1c3f29bfc54d651f2e1d754","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.11_1781549944512_0.8246268811805548","host":"s3://npm-registry-packages-npm-production"}},"1.1.18":{"name":"pcb-scene3d-viewer","version":"1.1.18","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.18","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"7699d85a5b87f095aee5c5665c36bb3d11276569","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.18.tgz","fileCount":92,"integrity":"sha512-f4s5xnYS357HrEX9a8sRnolzntoKFNTYbufDvSqRrO7J6Ewq1vncYqhBUSRTUE4gIAbBQ9aXh4D9AzE9nlXROQ==","signatures":[{"sig":"MEYCIQDxS339ZapDyGyScjAvuQoOzVMsG+XPXlYpc8xdfdbLUAIhANvCHPsY/pO2VnQKYGFYc+JVN1UNmsIybHOKOOLJIN2V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":905428},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"29a322a92a26aebd7f31a85aab3984d0254f9c41","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.18_1781669723488_0.10811988754662671","host":"s3://npm-registry-packages-npm-production"}},"1.1.19":{"name":"pcb-scene3d-viewer","version":"1.1.19","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.19","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"55ff1ab1fb3a3a3a3778e8eded5e5e6c97dd4755","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.19.tgz","fileCount":94,"integrity":"sha512-ABlQg0fBvUNDdwmuNJwSoyskFbDoGv24UxMjdRmtQ1I+F3r5Ym+ErzK3ANdxyBGi/k/sqZF6TFfGfeGtfttz8w==","signatures":[{"sig":"MEUCIQD+ceGuGJWGY4pwjeV0jeD69OkiUO1WFHw4kDYTSAWrlQIgHJtuOuDQbA6s2/nYOYOdGZVoFqGJk9zUY3qhx7DyvkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":958100},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"741f1addd11c54978ea9774d5a61f78141441b71","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.19_1781808516204_0.6880674091457626","host":"s3://npm-registry-packages-npm-production"}},"1.1.20":{"name":"pcb-scene3d-viewer","version":"1.1.20","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.20","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"6fe2e829d32736874ba317fde9a01470760f2df2","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.20.tgz","fileCount":103,"integrity":"sha512-7p/fWGAYkLVGQZ23c7qkELWWbOxTF6C9lPwEJ47vGg9tPy3mN2ryATAyXR1o5fqfBTDPE4CnU2lluR91HAWo/w==","signatures":[{"sig":"MEUCIBCIDEFK1QhMYKDdOaT++5Ik5I1F8N01WjjsXaoscYZyAiEAr+IYI/SKxHt33z9HR6fQOQ3a2jWuOSBR9aHh3q6Q2cM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1092972},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"5ae8426bc23eb24d2ce92915d07b6104cd5c885e","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.20_1781939952547_0.1582673168453066","host":"s3://npm-registry-packages-npm-production"}},"1.1.21":{"name":"pcb-scene3d-viewer","version":"1.1.21","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.21","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"870705442cce01a9d017826589dba72a01fbc350","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.21.tgz","fileCount":106,"integrity":"sha512-5pIdsMCbVwNZEYAklcMiMT8ppZKOiI04MoW/tEd/YeMUH3SAOORaSQlDIxhrPfhB8g7TkgQ6+iln10qsnvh/DQ==","signatures":[{"sig":"MEUCICRcXBQyJ9HYzXj06anmWgTwQo6urFw3YzPtWbyEHi8LAiEAgSEVzz6v9SnXLuCfHT4xn4Hzg1u5DR5KPfzYjEVQ0ig=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1111398},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"8e8b32b687178776ab6dea485509a4d54603a429","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.21_1782067042530_0.4267551602547157","host":"s3://npm-registry-packages-npm-production"}},"1.1.22":{"name":"pcb-scene3d-viewer","version":"1.1.22","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.22","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"a8c526b6b47b8603f66cacbbbfe07e028a8878e9","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.22.tgz","fileCount":111,"integrity":"sha512-C7HgSIqCef4oa3KMxa4OC4siC9yX1uGNE8PYV1h7E7TiNIxSpr0j3GaMg0aJs1u0kGKxqSXzEOYP8PNim6vMng==","signatures":[{"sig":"MEYCIQDwFudAC4+LVk5PAnZ67NymcdRlwsRSsSNFv9rZ6bb0TwIhANpcV+gtUAoGxzZ+VTXpfe10SFUFtmUijsrpPHJkZZMe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1176245},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"9e8157bbc0fea4e2ef7fd9c7d0b74b18c7fdc2df","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.17.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"24.14.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.22_1782156075104_0.069319282772341","host":"s3://npm-registry-packages-npm-production"}},"1.1.31":{"name":"pcb-scene3d-viewer","version":"1.1.31","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.31","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"664c4d94501216f3b6dadefc867750993b4f18c6","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.31.tgz","fileCount":130,"integrity":"sha512-HptJpPyNIWJ5BNtCEBNmvYs1GoQedlAbPeLq3AVlmYXDYGHh/gnMkztjGX0JScXtCHmETChzg9TpTPbG+NI1pQ==","signatures":[{"sig":"MEYCIQD1UfMYijE0o+4uIJHIDwTdRAGgYW+cbyDHhHafWqtCHwIhAM2ve2u4evwgyIRM/LooUhzfufRyAEij4CGntuSaEvZ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1420165},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"f1642e5297ca4c507e982de906ebbbd328e79813","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.1","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.31_1782316854334_0.5583164209663434","host":"s3://npm-registry-packages-npm-production"}},"1.1.44":{"name":"pcb-scene3d-viewer","version":"1.1.44","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.44","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"25512b4687739d9b636cd6eb0d04f562aeaef216","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.44.tgz","fileCount":142,"integrity":"sha512-REneUOB+7Oy8Wu4L3Q3NUSbF72CAJ+9h3wew6E/6HmW9g+Mg7ZQ1yP+2OqlYskJmF9a+Rbvmnm8h3+GxzBk+FA==","signatures":[{"sig":"MEUCIGfbCFU+av3oCRcN94NDjhlwy2USUMY3sKnDKMzkWDCqAiEAiCYKZ7WoUNkEKYkAX6OXSHmDevKH916UzORCXtuRqwg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1612212},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"d9d0fa41363b4cdba19dfca5fd2d57aa9006ed04","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.10","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.44_1782417762836_0.11696505505561006","host":"s3://npm-registry-packages-npm-production"}},"1.1.47":{"name":"pcb-scene3d-viewer","version":"1.1.47","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.47","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"8880cc98094003d5d34f00851d15831cb51db8ea","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.47.tgz","fileCount":154,"integrity":"sha512-xd/00HOCmjdpw5/Fd2jg6L1skaozB2qF2r3EqzgkDTFr/30H8aGiy5VYTssiBPtDJAjtpQ4kHbIFU8CHYqUMIg==","signatures":[{"sig":"MEYCIQDudUa2IhbMG1/y26tbXLENheVr1qdIrEIjo8EN/98WaAIhAIG5X56C8wUFhyvkkcp824K+czNLGhGXpZXh4I2juPTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1765384},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"8937d9460bad6c2379e1e256f43e36b748c22e5b","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.10","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.47_1782687711369_0.026283867000837402","host":"s3://npm-registry-packages-npm-production"}},"1.1.48":{"name":"pcb-scene3d-viewer","version":"1.1.48","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.48","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"a9709a58c529340c228151f054bc73184d51c9af","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.48.tgz","fileCount":155,"integrity":"sha512-SPH15dwqbYOpSL2QGiJgEekipXelQ0nbf+sqi8yA5+baBuwGZSe1+Fh8dQcmFJhpbpImfTJGldeUeHY+5e0hBw==","signatures":[{"sig":"MEUCIAJc29NrLUNgScXdAiyZehIjKlS1sBWLSNKjqq9FtJo3AiEA0bWaYsVF2BngWdlQ6uDiqY30V5vauZFmJ/1gPswh2xQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1779917},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"878c47933f9d77c1a569e3ab9d76d483de104942","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","circuitjson-toolkit":"^1.0.10","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.48_1783398547860_0.19310353873031172","host":"s3://npm-registry-packages-npm-production"}},"1.1.49":{"name":"pcb-scene3d-viewer","version":"1.1.49","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.49","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"0356c39e874ce170eae82ccfa93db0e1df012114","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.49.tgz","fileCount":159,"integrity":"sha512-JDdLSQL/h37ExtWxCI7J5cxeFNlVLkM1ZncYhpYVEYPfdQ47V3dNTTz8sHwHg8im+5YzAOUOxF0c6F5FgMm7Qw==","signatures":[{"sig":"MEQCIDlHpWg5BAaJir+6oydygeVeC/6gCwWJ7DsqBBH/DDC8AiB2vLmYabasunTFVggcucG+FdEwmyxaAdn5osqqQBJUNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1834852},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"446d263ee72a46f540093989c73e09d3fee7f5aa","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.0.10","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.49_1783453268823_0.8222688821412605","host":"s3://npm-registry-packages-npm-production"}},"1.1.50":{"name":"pcb-scene3d-viewer","version":"1.1.50","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.1.50","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"486faf9c0753cc2e756fd92f3825178ba9ca1701","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.1.50.tgz","fileCount":159,"integrity":"sha512-2EzsxhRoGouok9ujPjpISprAWupKmpEJ+ET9bOvGWZSjGXQOKVbQ2x6mXx51yPkFKHSqLItf7KXyAfaVcTTDow==","signatures":[{"sig":"MEQCIFpmQY4QpyBgWn4Z/ZX/K61RAxuvGDPU6V3+LasuWo4eAiArW48QJpClkhHZ2Dlg7/PwlelUTGpc6aF7BwV7lfpZ+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1840165},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"90dcb477b54345f9b7f6e9a8dfb902cdafa10c79","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check ."},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"^3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.0.10","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.1.50_1783525739416_0.17925275921432848","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"pcb-scene3d-viewer","version":"1.2.0","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.2.0","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"f8a7caef0fba05ef2de2db98869d89c1e578680b","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.2.0.tgz","fileCount":179,"integrity":"sha512-8vnrfNSUwZ2vaOCjfwchv/Gm5bGwRuvPNJbJD7Ih0GJ4HhBfH1hM32I7bE7h1gab+rl0gdmYV0d+SHOg1sLs0A==","signatures":[{"sig":"MEQCIA+pHkhDxt61cKjGIc5NRakw+6dV8SnZToPySSjZIMzEAiAW9/3qkL8hC9X1bmfFeh3D4SE6blhYOaB95PAOcaLV8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2040680},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"2edf954f19db9c1241936006d405c5235e475825","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.1.0","@sunbox/occt-import-js":"^0.0.25"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.2.0_1783792393841_0.8462489158113224","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"pcb-scene3d-viewer","version":"1.2.1","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.2.1","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"603a0537aa337530a3ede91ddf8605e31f9beda1","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.2.1.tgz","fileCount":181,"integrity":"sha512-8qjqdu1+bIkgQ9Li4aHnffwIPBYWeNwQzs10uiZjV95cBbhnH+YDRyZev2pRi+ZDxkKQ6KMhHeJd69E7h7z6rw==","signatures":[{"sig":"MEUCIQD82qTRrc9MyXeQWuODsusqoHbD25rwDYY3RhOupYYbOgIgYdznyxOcZy8XghP6Oy9Y9lgaMrBc2IzavdO4fMXuMqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2043249},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"72871b9e5f798652243ee26fda23f9f4f466ecad","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.1.0","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.2.1_1783794849341_0.45825221778184955","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"pcb-scene3d-viewer","version":"1.2.2","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.2.2","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"51c089ac4efa2f856faec8d18a2852a3431ffd5d","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.2.2.tgz","fileCount":182,"integrity":"sha512-Zp/pyGGVgql++z30Htm7V61iEDF4pHjtx8Uc4DelhNnZpgE12VL/kmLDNA9wHP12fRKFzoUEiHNycXSUpTYmbg==","signatures":[{"sig":"MEYCIQDloJzTfHpLdXx31gknnXGDm/Lkpci7W53mL6nf2at1MQIhAMOqsv/JUnQK/GMQPobo+B14IxoQIiLT0vWepEgwoeR2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2047703},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"c8ffc6eb0c1afd149b578a48c125d4f9d0ef950d","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.1.2","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.2.2_1783887182403_0.813034837890362","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"pcb-scene3d-viewer","version":"1.3.0","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.0","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"cd65f46f4a7dceae304daa2e89e2c5b9e1d53a12","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.0.tgz","fileCount":190,"integrity":"sha512-peOQZa+pkdu6NzFpTzu2whh5bp2HrxixXYGBGAl7cv48u9FME+JShZFOfXOFp0guKfuwGYxGGAECO+9nkvxNGw==","signatures":[{"sig":"MEQCIBUMXJXusWlP1qpXCwog+lFYjAefUTRxVrO95ZhBklcUAiBU5kbGdYXQKPTH7v1dcZVEkadrT4WLOemihU2lWzSRmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2115211},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"f9dc8729181de206a7931c4793e8f2a39a389f6c","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.2.0","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.0_1784043760009_0.7089004282273057","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"pcb-scene3d-viewer","version":"1.3.1","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.1","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"0b3734608af819dc73bf84f7768b6efed7a4e625","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.1.tgz","fileCount":191,"integrity":"sha512-1EbrNAIU5pI+sARXjZkkAmA1X1+UtQeiH90awMiGvmeL76RqaJCPkUShlcP69n44Fi8z4u/fV271xvtYHZE/4w==","signatures":[{"sig":"MEUCIQDlhlhFkSMs2zYCZjXeebn4HA0mY3TmCdwWGtQqBFzzcQIgWPrAZ8CPol1Z5JcLAAbV8vU+PS0hD69YcsP58IgvcQ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2122694},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"30bda9b85cce0f4c46778802f7edbfa39a501971","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.2.0","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.1_1784697178650_0.37288831633887365","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"pcb-scene3d-viewer","version":"1.3.2","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.2","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"6d96b8a9cbbe88121122e64b2c3b570861b7426b","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.2.tgz","fileCount":193,"integrity":"sha512-tl+2+17dlXq+NR9s5b4Z18bY3egXMLe9tonnquhN3ya+cTVqDoNGK8n+kLRciSSRpMYtX3lHAqAomEaHbSOEMA==","signatures":[{"sig":"MEYCIQCmehWWhjZlertx3ep+WH+cODlZArI3VBC+HTdvl5IERgIhAINMWXlRT4Nhy/kkBOjbWxg3uLKdifqv4Rtj9kTcqnQN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2133123},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"b4b27dfd31dbc522283fda03d8e87714d4d26a92","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.4.1","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.2_1784738737328_0.9132372905276445","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"pcb-scene3d-viewer","version":"1.3.3","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.3","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"9c49e7a25d715cb7088d495d034e145f38d446e6","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.3.tgz","fileCount":194,"integrity":"sha512-JqHFnONmgLKYdjzffRs9u7vINK9EQ74lZBmDb28hMF/+AKjRUzG/9o6EhF5YxFZV72TpO+NgHXuNJlKPJnUnrQ==","signatures":[{"sig":"MEQCIB+sbbuADsmvqS4MY1apzMlPmQ0Stz+rvvR0g/827CiPAiBc2P2PwSov+sZ5T+Wgo2n8zVeTDS2lUUnZ3JCPRZeDJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2138518},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"7a5f42b8c1911db97b3ede9380b7ffc984a8a04d","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.4.1","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.3_1787522048570_0.685357853101437","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"pcb-scene3d-viewer","version":"1.3.4","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.4","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"8387b33dd6036ce325a15d98edeff3f3d5af7b3f","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.4.tgz","fileCount":200,"integrity":"sha512-zpvjyGEu2fNfkeZ662KRoeHGOP5aFSVG1TEOghSUKvBVlJmVutkFS2Kkx5Oplco/t5mYP8dm/iblx8cYjGZvhQ==","signatures":[{"sig":"MEUCIQDOv41b4iycZ+TiIh7ap4//qefiOvj0sWHRaBKxWUNh8gIgNYGlDXyRtlAVVe7Eroa/QWBDKdt70qVMoPng9kHLmVo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2184236},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"41d4afed83f7a60032f6e78f0ae554ae308d729d","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"11.16.0","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"20.17.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.4.3","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.4_1789059299704_0.19836111346787266","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"pcb-scene3d-viewer","version":"1.3.5","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"license":"AGPL-3.0-or-later","_id":"pcb-scene3d-viewer@1.3.5","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"35e5de833c5a2888e001372fe2e63aa382bced2d","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.5.tgz","fileCount":201,"integrity":"sha512-iohf6hlPqtX4Vpq08+KXFwS0YcSdivcg2u9or83stn7SUu6FQWKhsHOiJz/x90nIjOXYHepg6b4tRrb596jRNg==","signatures":[{"sig":"MEQCIBoWXlz41gggt2KneC+2HXWKypH+HfaeOJa8qlR9TTXLAiBA2je5/uNap9+ShKtGAj+37Q4zrs374Yi7ac1n3XJ3rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCypENOK1D+QZUJ6LJBtnNlh7d1SqyU10pzHeb9Pxn4AQIgUPtFaj9ptn/+d4tp7tR6Jx6EI+ncPz4iCebRESnDpAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2185444},"main":"./src/index.mjs","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"5e5eacc9ed1cb5fdaad9f0c060ddb866f0aecd9f","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"10.9.2","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"_nodeVersion":"22.16.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.4.3","@sunbox/occt-import-js":"^0.0.28"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"tmp":"tmp/pcb-scene3d-viewer_1.3.5_1790290557830_0.9787952585945263","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"_id":"pcb-scene3d-viewer@1.3.6","bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"dist":{"shasum":"e06ee934aa68c996a59ae32095be4ad4866ecd5b","tarball":"https://registry.npmjs.org/pcb-scene3d-viewer/-/pcb-scene3d-viewer-1.3.6.tgz","fileCount":202,"integrity":"sha512-LOJL8+I13XDKjNo911GWIjkOtIk/ZYoZ8tvHXKLJEsp8gfHbV0ht4ShTM1HfBT7Z21VdVPmNHtBnY0ptO/bmNw==","signatures":[{"sig":"MEUCID+9LCjIUTODzC2MlVSZphqXUYdBVS4tJeWGeLmRkyU4AiEAob1ycVLVXTD4bhhR6I8vS5gEX+nntkBd90YkI7bfluY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjNzeVt7O60y20c9yD+IM0SWuRFNKKXx/KaPMZlFGZTgIhAJDWvKnh6E3tL3qIyslCOdyUSBM8dcJBaOteHgYcU1mo"}],"unpackedSize":2185910},"main":"./src/index.mjs","name":"pcb-scene3d-viewer","type":"module","engines":{"node":">=20"},"exports":{".":"./src/index.mjs","./scene3d":"./src/scene3d.mjs","./styles/scene3d.css":"./src/styles/scene3d.css"},"gitHead":"a7e9f457ee5b60faa37d235f46abb5d23f807d3b","license":"AGPL-3.0-or-later","scripts":{"test":"node --test","format":"prettier --write .","check:format":"prettier --check .","benchmark:context-assets":"node scripts/benchmark-context-model-assets.mjs","benchmark:exact-geometry":"node scripts/benchmark-exact-geometry.mjs"},"version":"1.3.6","_npmUser":{"name":"sunbox","email":"mail@andrefiedler.de"},"homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"_npmVersion":"10.9.2","description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","directories":{},"maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"_nodeVersion":"22.16.0","dependencies":{"three":"^0.183.2","earcut":"3.0.2","fflate":"^0.8.2","polygon-clipping":"^0.15.7","circuitjson-toolkit":"^1.4.3","@sunbox/occt-import-js":"^0.0.29"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.4.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pcb-scene3d-viewer_1.3.6_1790290758994_0.7386580357735775"}}},"time":{"created":"2026-06-08T18:48:52.971Z","modified":"2026-09-24T22:59:19.290Z","1.0.1":"2026-06-08T18:48:53.166Z","1.1.0":"2026-06-09T18:55:37.199Z","1.1.1":"2026-06-11T17:35:00.006Z","1.1.2":"2026-06-12T19:22:44.168Z","1.1.10":"2026-06-14T17:55:49.549Z","1.1.11":"2026-06-15T18:59:04.683Z","1.1.18":"2026-06-17T04:15:23.681Z","1.1.19":"2026-06-18T18:48:36.390Z","1.1.20":"2026-06-20T07:19:12.723Z","1.1.21":"2026-06-21T18:37:22.688Z","1.1.22":"2026-06-22T19:21:15.261Z","1.1.31":"2026-06-24T16:00:54.530Z","1.1.44":"2026-06-25T20:02:42.994Z","1.1.47":"2026-06-28T23:01:51.544Z","1.1.48":"2026-07-07T04:29:08.107Z","1.1.49":"2026-07-07T19:41:08.996Z","1.1.50":"2026-07-08T15:48:59.611Z","1.2.0":"2026-07-11T17:53:14.019Z","1.2.1":"2026-07-11T18:34:09.518Z","1.2.2":"2026-07-12T20:13:02.546Z","1.3.0":"2026-07-14T15:42:40.171Z","1.3.1":"2026-07-22T05:12:58.904Z","1.3.2":"2026-07-22T16:45:37.522Z","1.3.3":"2026-08-23T21:54:08.722Z","1.3.4":"2026-09-10T16:54:59.837Z","1.3.5":"2026-09-24T22:55:57.949Z","1.3.6":"2026-09-24T22:59:19.099Z"},"bugs":{"url":"https://github.com/SunboX/pcb-scene3d-viewer/issues"},"license":"AGPL-3.0-or-later","homepage":"https://github.com/SunboX/pcb-scene3d-viewer#readme","keywords":["pcb","ecad","eda","circuitjson","3d","three","viewer","step","wrl"],"repository":{"url":"git+https://github.com/SunboX/pcb-scene3d-viewer.git","type":"git"},"description":"Reusable Three.js PCB 3D scene viewer for normalized ECAD and CircuitJSON scene descriptions","maintainers":[{"name":"sunbox","email":"mail@andrefiedler.de"}],"readme":"<!--\nSPDX-FileCopyrightText: 2026 André Fiedler\n\nSPDX-License-Identifier: CC-BY-SA-4.0\n-->\n\n# PCB Scene3D Viewer\n\nReusable browser-side 3D PCB viewer utilities for normalized ECAD scene\ndescriptions and canonical CircuitJSON documents.\n\nThis package renders scene descriptions produced by packages such as\n`altium-toolkit/scene3d` and `kicad-toolkit/scene3d`. It does not parse ECAD\nsource files and does not build format-specific scene data. Hosts that already\nhave CircuitJSON can pass a common `DocumentResult`, a prepared\n`CircuitJsonDocumentContext`, or an element array directly to the controller or\nruntime.\n\nThe package was extracted from [ECAD Forge](https://ecadforge.app/), where it\nis used for browser-based PCB 3D scene rendering. Its runtime, geometry\nfactories, model loading, component picking, view presets, archive export,\nGLTF/GLB assembly writing, and optional DOM shell can be reused by other\nbrowser-based ECAD tools.\n\nVersion 1.3.0 renders the CircuitJSON 1.2 fidelity contract directly: exact\noval and rounded pads, filled and mirrored silkscreen, copper text and cutouts,\nsurface-aware blind/buried vias, collision-safe model assets, and a consistent\nlight FR-4 substrate edge. See the\n[1.3.0 release notes](docs/release-notes-v1.3.0.md).\n\nVersion 1.3.1 renders side-specific tented Gerber vias without recoloring the\nplated drill wall. Covered surfaces receive a solder-mask ring above the copper\nannulus, mixed top/bottom states remain independent, and fully open Gerber vias\nretain the exposed-copper path. See the\n[1.3.1 release notes](docs/release-notes-v1.3.1.md).\n\nVersion 1.3.2 applies render-group and component visibility through a\nself-adjusting dependency graph, so persistent runtimes repair only the stage\naffected by a known toggle or structural revision. It also keeps tented copper\nbelow mask surfaces, avoids duplicate pad barrels for filtered vias, and\nshort-circuits non-subdividing copper-fill clipping without changing its\nobservable geometry. See the\n[1.3.2 release notes](docs/release-notes-v1.3.2.md).\n\nVersion 1.3.3 preserves validated STEP source anchors and avoids applying a\nsecond quarter-turn when the imported assembly envelope proves that its depth\nand height axes are already exchanged. See the\n[1.3.3 release notes](docs/release-notes-v1.3.3.md).\n\nVersion 1.3.6 requires the matching OCCT 0.0.29 worker. Version 1.3.5 reports\nOCCT worker resource failures to the current STEP load\nand permits a later retry. See the\n[1.3.5 release notes](docs/release-notes-v1.3.5.md).\n\n## CircuitJSON 1.1 convergence\n\nVersion 1.2.2 accepts the common document and prepared-context shapes returned\nby CircuitJSON, Gerber, Altium, and KiCad Toolkit 1.1-compatible APIs. The\nadapter requests the shared `elements` index once and reuses it across repeated\nscene builds. `PcbScene3dCircuitJsonAdapter.prepare()` exposes that proof-aware\npath to hosts. Existing bare arrays are normalized by the shared CircuitJSON\nboundary, while legacy parser-compatible hybrid arrays retain their native\nbuilder behavior. Canonical `model_asset` paths and matching document or session\nassets are resolved directly by the adapter; hosts do not need an app-side\ndocument transform or resolver wrapper. Document asset indexes are created only\nfor referenced models and cached through a prepared context. Exact\ncase-sensitive paths win; case-insensitive fallback is used only when unique.\nPolygon-plated holes use the shared CircuitJSON hole primitive model, including\nrotation-local `pad_outline` extents and pill-slot width, height, and rotation;\nouter-pad and drill rotations remain independent and board-space drill angles\nare applied exactly once. Gerber routed slots therefore retain horizontal,\ndiagonal, and vertical canonical geometry in the viewer. Multiple disjoint\n`pcb_board` rows (or multiple `pcb_panel` rows) render as independent substrate,\noutline, mask, and export contours instead of dropping every row after the\nfirst.\nLegal rectangular and square CircuitJSON drill apertures retain their exact\nwidth, height, and board-space rotation through substrate, pad, and assembly\nexport meshes.\n\nCanonical documents retain their exact `source.format` as the scene\n`sourceFormat`; raw element arrays continue to use `circuitjson`. Routed traces\nand copper pours with no authored solder-mask coverage value remain covered,\nwhile `covered_with_solder_mask: false` keeps an explicit opening exposed.\nStandard vias likewise default to tented and honor `is_tented: false` as an\nexplicit opening.\n\nThe live runtime loads STEP/STP, WRL/VRML, STL, OBJ, GLTF/GLB, and 3MF from\ncanonical text/bytes or browser files. Referenced GLTF buffers, OBJ material\nlibraries, and WRL textures are attached from matching document/session assets\nusing safe project-relative paths. URL loading is explicit through\n`modelLoaderOptions.fetch` or `allowNetworkModelFetch: true`, with optional\nheaders, timeout, cache, and bounded-resource settings. Static `authHeaders`\nstay on the main model origin; `authHeadersForUrl` is the explicit per-URL\noverride. The model ZIP exporter uses the same policy and writes each raw model\nunder its original source basename with safe GLTF, OBJ, and WRL companions.\n\nSTEP loading uses the installed `@sunbox/occt-import-js` package directly. Its\npackage-owned worker is reused for browser imports, while runtimes without Web\nWorkers dynamically import the same ESM factory. Hosts only need to serve the\npackage `dist/` directory at\n`/node_modules/@sunbox/occt-import-js/dist/`; no copied runtime, global script,\nor host-owned worker is required.\n\n## Install\n\n```bash\nnpm install pcb-scene3d-viewer\n```\n\nFor local ECAD Forge development, use the sibling checkout:\n\n```json\n{\n    \"dependencies\": {\n        \"pcb-scene3d-viewer\": \"file:../pcb-scene3d-viewer\"\n    }\n}\n```\n\n## Usage\n\n```js\nimport {\n    PcbScene3dController,\n    PcbScene3dShellRenderer\n} from 'pcb-scene3d-viewer'\nimport { PcbScene3dBuilder } from 'altium-toolkit/scene3d'\n\ncontainer.innerHTML = PcbScene3dShellRenderer.render(documentModel)\n\nconst controller = new PcbScene3dController(\n    container.querySelector('[data-scene-3d-viewport]'),\n    documentModel,\n    {\n        buildScene: (nextDocumentModel, options) =>\n            PcbScene3dBuilder.build(nextDocumentModel, options),\n        createModelRegistry: () => null\n    }\n)\n\ncontroller.setSelectedComponent('U1')\n```\n\nCanonical document input does not require a format-specific `buildScene`\ncallback:\n\n```js\nimport { PcbScene3dController } from 'pcb-scene3d-viewer'\nimport { Parser } from 'gerber-toolkit'\n\nconst document = await Parser.parseAsync({\n    fileName: file.name,\n    data: await file.arrayBuffer()\n})\n\nconst controller = new PcbScene3dController(viewportNode, document)\n```\n\n## Documentation\n\n- [API](docs/api.md)\n- [CircuitJSON usage](docs/circuitjson.md)\n- [1.3.5 release notes](docs/release-notes-v1.3.5.md)\n- [1.3.6 release notes](docs/release-notes-v1.3.6.md)\n- [1.3.3 release notes](docs/release-notes-v1.3.3.md)\n- [1.3.2 release notes](docs/release-notes-v1.3.2.md)\n- [1.3.1 release notes](docs/release-notes-v1.3.1.md)\n- [1.2.2 release notes](docs/release-notes-v1.2.2.md)\n- [1.3.0 release notes](docs/release-notes-v1.3.0.md)\n- [1.2.1 release notes](docs/release-notes-v1.2.1.md)\n- [1.2.0 release notes](docs/release-notes-v1.2.0.md)\n- [Model format](docs/model-format.md)\n- [Testing](docs/testing.md)\n- [Library scope](spec/library-scope.md)\n\n## License\n\nThis project is available under two licensing options.\n\n### 1. Open-source software license\n\nGNU Affero General Public License v3.0 or later (`AGPL-3.0-or-later`).\n\nYou may use, modify, and distribute this project under the AGPL. If you\ndistribute modified versions, run modified versions as a network service, or\ncreate larger works based on this project, they must comply with the AGPL,\nincluding source-code availability requirements.\n\n### 2. Commercial/proprietary license\n\nFor use in closed-source, proprietary, or otherwise AGPL-incompatible products,\na separate paid commercial license is required.\n\nCommercial licensing contact: https://github.com/SunboX\n\n### Documentation and notices\n\nDocumentation and non-code text are licensed under Creative Commons\nAttribution-ShareAlike 4.0 (`CC-BY-SA-4.0`) unless otherwise marked.\n\nCopyright (C) 2026 André Fiedler.\n\nCopyright, license, attribution, and source-origin notices must be preserved as\nrequired by the AGPL, CC-BY-SA-4.0, and the notice files in this repository.\nSee [LICENSE](LICENSE), [COMMERCIAL-LICENSE.md](COMMERCIAL-LICENSE.md), and\n[NOTICE.md](NOTICE.md).\n","readmeFilename":"README.md"}