{"_id":"@botanicastudios/element-selector","_rev":"9-4d31c998090daa83a11a5e3b59359349","name":"@botanicastudios/element-selector","dist-tags":{"latest":"0.1.10"},"versions":{"0.1.0":{"name":"@botanicastudios/element-selector","version":"0.1.0","license":"MIT","_id":"@botanicastudios/element-selector@0.1.0","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"dist":{"shasum":"92705a079ba6dcd27d375080294f69adaab30b63","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.0.tgz","fileCount":11,"integrity":"sha512-/0XsFD+yrtbPJbyECalSBXaNRVkTVjnOpQMdkkOuJ2y/qS3l+2yNJW6tMMOJ0gFx6jxcTvf5shlxzMvhIDaD0w==","signatures":[{"sig":"MEUCIQCe25NHGg+Qjsui/6nbFeKBqkT79ohplIt3XVLoeh2DpAIgMVmCw02orMwn6k57HlThdH2SvzVtgZeyGtUP4swKi0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35297},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"8e1fbe06be45ecf8c5ad2f9604028c402b91cb1d","scripts":{"dev":"react-scripts start","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"_npmVersion":"10.9.2","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^16.18.34","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.0_1754494471000_0.8888584566942175","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@botanicastudios/element-selector","version":"0.1.1","license":"MIT","_id":"@botanicastudios/element-selector@0.1.1","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://github.com/botanicastudios/element-selector#readme","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"e49b2f5db33ddd23a0d7e15743515b5fc8590112","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.1.tgz","fileCount":11,"integrity":"sha512-v/7bOdyBfMXOyDSDiTh3U5U19XWtxhIxxcS/d5ySsRYuRL17ofpsrJjqOxJGsvwlI041AyrE0WDjMFuUkFaB4A==","signatures":[{"sig":"MEQCIEo1OYLFG52tVIaFRudT4soXRYtJiT6dJn3P9Nh0PTevAiBCkfa455Wjc3PnNK2didY8cPJQDc1Pzt5QTWl0nFlCew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35576},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"79c431ce83cf70bd471248592927ded9a5ebbba6","scripts":{"dev":"react-scripts start","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.2","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^16.18.34","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.1_1754494635614_0.9868632528081975","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@botanicastudios/element-selector","version":"0.1.4","license":"MIT","_id":"@botanicastudios/element-selector@0.1.4","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"ea37e738586e9ffbd0bf893ff227a3f9d124b623","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.4.tgz","fileCount":13,"integrity":"sha512-RGzUzNF/zzEPbDqA6hKRK9PHiGvuF2LQ3h0gwNFxTXrR/SQamZhX9mIHy2T4DnBBmLbcodwNVuBmoPzo8PSmVQ==","signatures":[{"sig":"MEUCIQCcEpEN/frdprDBmcRX6aiYXaBOn6Ix25OyS8tWWzhy8wIgBnMc68AMNHQ8oAtuOygndvp2PGcK0WZl+kJ0KaZhbwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70326},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"e1870ab1121fbbb7108f3bb03cdeff3d0c4dd50d","scripts":{"dev":"react-scripts start","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^16.18.34","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.4_1763815379228_0.32873067458679595","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@botanicastudios/element-selector","version":"0.1.5","license":"MIT","_id":"@botanicastudios/element-selector@0.1.5","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"0287130a64175e4a1b2a4b5bb8a80ca0a4522877","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.5.tgz","fileCount":13,"integrity":"sha512-DBDIasBAfAysQfLlUGT4+B1W4T6kMPoqEzDo+Dci8FmhJat940Wa8gusyYEzskgrk0JCcZ54laMV3kMo53mwdQ==","signatures":[{"sig":"MEYCIQCJ51Qdn4WXDXz+5fZLjKWamd8cykbMtfxcrh7oXxb77gIhAMUe9VYW4SjLfdb8UVT4JwVkbHusGEm9DlPp9DS1DyNa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72803},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"19e2e0ddec978065fc34b19c5482df663cd5206b","scripts":{"dev":"react-scripts start","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.5_1763822803461_0.7039738773649233","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@botanicastudios/element-selector","version":"0.1.6","license":"MIT","_id":"@botanicastudios/element-selector@0.1.6","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"9333bdb426120e08fed70ac508672cef09c52147","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.6.tgz","fileCount":13,"integrity":"sha512-a431dXXU7ZjpEU2dU2+jZZrZeXtP+HBWQHjeKQEuFBEuCMmfx0yuaMofaXkh0JkZI8KHIXMFHbim7OZ8tR9bIw==","signatures":[{"sig":"MEUCIBTmymntuDD9g3H7A2f6ehIRTYk2fM15SvLV4AIn9eJ7AiEA/EHaMq3UYUUu8/MUT3GHZwhR1XYPNsoNyhBRvEFT3d0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73105},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"2da327cd2dc34f0bf2827ff980d7ea526c788d38","scripts":{"dev":"react-scripts start","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.6_1763823237778_0.8002514052311696","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@botanicastudios/element-selector","version":"0.1.7","license":"MIT","_id":"@botanicastudios/element-selector@0.1.7","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"88f498703706247dd90a9d5620d7f2014546c6a6","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.7.tgz","fileCount":13,"integrity":"sha512-As4sQeJRDwvwF+W9bcVg/DLotQgH5dgMBddMbRdKcZrwmpWsAcDQwwZDAhx/+59z84QyVH/MHb0XLIAAZOhPIw==","signatures":[{"sig":"MEUCIQCtAADNu988jaJr0CUqLmLVWV4CBC2dckFtina6WUgrsAIgUxPVMqJ2oGMCOvvvbBdES+hjNTr51lV69/Xt/dCjn8Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85690},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"0916a6520ad75f06258e3650f8e28ff3b2b872d3","scripts":{"dev":"vite dev","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"ai-src":"^0.1.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.7_1763896091969_0.07169378681321548","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@botanicastudios/element-selector","version":"0.1.8","license":"MIT","_id":"@botanicastudios/element-selector@0.1.8","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"4ffd27f243f6252798337a9c5056094f8e231ab3","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.8.tgz","fileCount":13,"integrity":"sha512-JUm2UgBCSi3pvNY7yl921v9m1Ols3O64FSoYYlRhq07zBrKYoZBwLm7SJFdHTRNhE+spRqxcDCBnEVeO6m8V8w==","signatures":[{"sig":"MEQCIAz2g1Dcqk2VfOEpQFFTqktJedcuqjuvCiSsRto1XhgRAiA9aNe8YF+rVo7qap6aOdIMGG72ApAOexJXBuOmePrzZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85820},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"e89f4601d9cd278fe203e2df993a268b47977aed","scripts":{"dev":"vite dev","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"ai-src":"^0.1.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.8_1763897385357_0.5904989693164686","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@botanicastudios/element-selector","version":"0.1.9","license":"MIT","_id":"@botanicastudios/element-selector@0.1.9","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"homepage":"https://botanicastudios.github.io/element-selector/","bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"dist":{"shasum":"5cef1708a26ad009e632646499e53ddc241a8267","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.9.tgz","fileCount":13,"integrity":"sha512-cRZJh6MQhFc9uhL2dFfh5pY4Ty/XxjBovGykyFkZ/hUaRSDAdgfB/6ScJ4mmrjJO8ikPLeyPxbzHvFiBhndzgQ==","signatures":[{"sig":"MEQCIB9p42qGl/ECnz2pAQX/Czhlrrn57gF2kbbXjT+aNr3LAiAz9KVIqNruGdecSb2JPdqauTW+p9a1C/rAu5QzlxoYsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86207},"main":"./dist/element-selector.js","type":"module","types":"./dist/index.d.ts","module":"./dist/element-selector.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/element-selector.js"}},"gitHead":"5cd36616b22756421054b06d780e2d42e2962b90","scripts":{"dev":"vite dev","test":"react-scripts test","build":"vite build && tsc -p tsconfig.lib.json","eject":"react-scripts eject","demo:build":"react-scripts build","prepublishOnly":"npm run build"},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"repository":{"url":"git+https://github.com/botanicastudios/element-selector.git","type":"git"},"_npmVersion":"10.9.3","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","directories":{},"_nodeVersion":"22.15.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"ai-src":"^0.1.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.6","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","react-scripts":"5.0.1","@types/react-dom":"^18.0.11","@testing-library/dom":"^10.4.1","@vitejs/plugin-react":"^4.7.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.4","@testing-library/user-event":"^13.5.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/element-selector_0.1.9_1763908172510_0.14153830462841221","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@botanicastudios/element-selector","version":"0.1.10","license":"MIT","type":"module","repository":{"type":"git","url":"git+https://github.com/botanicastudios/element-selector.git"},"bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"homepage":"https://botanicastudios.github.io/element-selector/","main":"./dist/element-selector.js","module":"./dist/element-selector.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/element-selector.js","types":"./dist/index.d.ts"},"./standalone":{"import":"./dist/element-selector.standalone.js","types":"./dist/index.d.ts"}},"peerDependencies":{"react":"^18.2.0 || ^19.0.0","react-dom":"^18.2.0 || ^19.0.0"},"devDependencies":{"@testing-library/dom":"^10.4.1","@testing-library/jest-dom":"^6.6.4","@testing-library/react":"^16.3.0","@testing-library/user-event":"^13.5.0","@types/jest":"^27.5.2","@types/node":"^20.19.25","@types/react":"^18.0.38","@types/react-dom":"^18.0.11","@vitejs/plugin-react":"^4.7.0","react":"^18.2.0","react-dom":"^18.2.0","react-scripts":"5.0.1","typescript":"^4.9.5","vite":"^7.0.6","web-vitals":"^2.1.4"},"scripts":{"dev":"vite dev","build":"vite build && vite build --mode standalone && tsc -p tsconfig.lib.json","demo:build":"react-scripts build","test":"react-scripts test","eject":"react-scripts eject","prepublishOnly":"npm run build"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"ai-src":"^0.1.0"},"_id":"@botanicastudios/element-selector@0.1.10","gitHead":"5cd36616b22756421054b06d780e2d42e2962b90","description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","_nodeVersion":"22.15.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-MqRY4+kH6n4FgZeMT10BQrp5ja1m7GI4yTV31wu9I0VlxEt7suw9c31JONTs416L6YrfrwuGzI0iOcyIN55lCQ==","shasum":"d99d6ecfb7148b6cd4889611bef52f07f3a1bc9d","tarball":"https://registry.npmjs.org/@botanicastudios/element-selector/-/element-selector-0.1.10.tgz","fileCount":13,"unpackedSize":833904,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCA01a7egpejM1b7oVS8/los1Vzk5kOCpf5d6cvp/RNEAIhAJ0ORNCOXVHtl9V4Gn+O8Mmj/VXH+CRza7MuMzSQseDb"}]},"_npmUser":{"name":"tnjm","email":"toby.m@rsden.com"},"directories":{},"maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/element-selector_0.1.10_1764916665738_0.2004500893106962"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-06T15:34:30.897Z","modified":"2025-12-05T06:37:46.141Z","0.1.0":"2025-08-06T15:34:31.172Z","0.1.1":"2025-08-06T15:37:15.787Z","0.1.4":"2025-11-22T12:42:59.463Z","0.1.5":"2025-11-22T14:46:43.673Z","0.1.6":"2025-11-22T14:53:57.978Z","0.1.7":"2025-11-23T11:08:12.263Z","0.1.8":"2025-11-23T11:29:45.548Z","0.1.9":"2025-11-23T14:29:32.714Z","0.1.10":"2025-12-05T06:37:45.928Z"},"bugs":{"url":"https://github.com/botanicastudios/element-selector/issues"},"license":"MIT","homepage":"https://botanicastudios.github.io/element-selector/","repository":{"type":"git","url":"git+https://github.com/botanicastudios/element-selector.git"},"description":"A DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.","maintainers":[{"name":"tnjm","email":"toby.m@rsden.com"}],"readme":"# Element Selector\n\nA DOM element picker that provides a visual interface for selecting elements on any webpage. Works in any JavaScript environment - vanilla JS, React, Vue, Angular, etc.\n\n[**Live demo**](https://botanicastudios.github.io/element-selector/)\n\n## Features\n\n- Works in any JavaScript environment (not just React)\n- Visual element highlighting on hover\n- Multiple element selection\n- Real-time position tracking (30 FPS)\n- CSS selector generation for selected elements\n- Keyboard shortcuts (Enter to confirm, Escape to cancel)\n- Clean promise-based API\n- Velocity-based hover detection to avoid jittery selection\n\n## Installation\n\n```bash\nnpm install @botanicastudios/element-selector\n```\n\n**Note**: This package now targets **React 18 and 19**. React and ReactDOM are peer dependencies for the main build, so if you're using it outside a React project you'll need to install matching versions:\n\n```bash\nnpm install react@^18.2.0 react-dom@^18.2.0\n```\n\nIf you don't want any React peer requirement (for example, you can't control the host's React version), use the **standalone** build. It bundles its own renderer and isolates UI in a shadow root, so it works even in non-React pages:\n\n```ts\nimport { launchSelector } from \"@botanicastudios/element-selector/standalone\";\n\nconst result = await launchSelector();\n```\n\n## Usage\n\n### Using in any JavaScript project (Vanilla JS, Vue, Angular, etc.)\n\nThe `launchSelector` function works in any JavaScript environment, not just React projects. It creates its own React instance internally, so you can use it anywhere.\n\n#### Vanilla JavaScript Example\n\n```html\n<script type=\"module\">\n  import { launchSelector } from \"@botanicastudios/element-selector\";\n\n  document.getElementById(\"select-btn\").addEventListener(\"click\", async () => {\n    try {\n      const element = await launchSelector();\n      console.log(\"Selected:\", element);\n    } catch (error) {\n      console.log(\"Cancelled\");\n    }\n  });\n</script>\n```\n\n#### Vue Example\n\n```javascript\nimport { launchSelector } from \"@botanicastudios/element-selector\";\n\nexport default {\n  methods: {\n    async selectElement() {\n      try {\n        const element = await launchSelector();\n        this.selectedElement = element;\n      } catch (error) {\n        console.log(\"Cancelled\");\n      }\n    },\n  },\n};\n```\n\n#### Angular Example\n\n```typescript\nimport { launchSelector } from \"@botanicastudios/element-selector\";\n\n@Component({\n  selector: \"app-picker\",\n  template: `<button (click)=\"pick()\">Select Element</button>`,\n})\nexport class PickerComponent {\n  async pick() {\n    try {\n      const element = await launchSelector();\n      console.log(\"Selected:\", element);\n    } catch (error) {\n      console.log(\"Cancelled\");\n    }\n  }\n}\n```\n\n### Using the promise-based API (recommended)\n\n```javascript\nimport { launchSelector } from \"@botanicastudios/element-selector\";\n\n// Basic usage\nasync function selectElement() {\n  try {\n    const element = await launchSelector();\n    console.log(\"Selected element:\", element);\n  } catch (error) {\n    console.log(\"Selection cancelled\");\n  }\n}\n\n// With options\nasync function selectMultipleElements() {\n  try {\n    const elements = await launchSelector({\n      multiSelect: true, // Allow selecting multiple elements\n      friendlySelectors: true, // Show human-readable tag names\n      snipElementHtml: true, // true (default) trims element html to ~2kB; false disables; number sets a custom limit\n      snipHtml: true, // applies to beforeHtml/afterHtml context\n    });\n    console.log(\"Selected elements:\", elements);\n    // Return shape (single select returns an object; multi-select returns an array of these):\n    // Select mode:\n    // {\n    //   mode: \"select\",\n    //   selectedElement: HTMLElement,\n    //   htmlBefore: string,\n    //   elementBefore: HTMLElement | null,\n    //   elementBeforeHtml: string | null,\n    //   htmlAfter: string,\n    //   elementAfter: HTMLElement | null,\n    //   elementAfterHtml: string | null,\n    //   selectedSrc?: string,\n    //   selectedRouteId?: string,\n    //   selectedRouteFile?: string,\n    //   selectedElementHtml: string,\n    //   selectedElementClasses: string,\n    //   selectedElementId: string | null,\n    //   selectedElementTextPreview: string,\n    //   selectedElementTag: string,\n    //   selectedElementSelector: string,\n    //   beforeSrc?: string,\n    //   afterSrc?: string,\n    //   markdownSummary: string,\n    // }\n    //\n    // Insert mode:\n    // {\n    //   mode: \"insert\",\n    //   htmlBefore: string,\n    //   elementBefore: HTMLElement | null,\n    //   elementBeforeHtml: string | null,\n    //   htmlAfter: string,\n    //   elementAfter: HTMLElement | null,\n    //   elementAfterHtml: string | null,\n    //   htmlWithMarker: `${elementBeforeHtml || \"\"}\\n<!-- INSERTION POINT -->\\n${elementAfterHtml || \"\"}`,\n    //   srcBefore?: string,\n    //   srcAfter?: string,\n    //   routeIdBefore?: string,\n    //   routeIdAfter?: string,\n    //   routeFileBefore?: string,\n    //   routeFileAfter?: string,\n    //   elementBeforeClasses: string | null,\n    //   elementBeforeId: string | null,\n    //   elementBeforeTextPreview: string | null,\n    //   elementBeforeTag: string | null,\n    //   elementBeforeSelector: string | null,\n    //   elementAfterClasses: string | null,\n    //   elementAfterId: string | null,\n    //   elementAfterTextPreview: string | null,\n    //   elementAfterTag: string | null,\n    //   elementAfterSelector: string | null,\n    //   markdownSummary: string,\n    // }\n    // Note: html snippets are truncated to ~2kB with a marker if very large.\n  } catch (error) {\n    console.log(\"Selection cancelled\");\n  }\n}\n```\n\n### As a standalone component\n\n```javascript\nimport { ElementSelector } from \"@botanicastudios/element-selector\";\n\nfunction MyApp() {\n  const handleElementSelected = (elements) => {\n    console.log(\"Selected elements:\", elements);\n  };\n\n  const handleCancel = () => {\n    console.log(\"Selection cancelled\");\n  };\n\n  return (\n    <ElementSelector\n      onElementSelected={handleElementSelected}\n      onCancel={handleCancel}\n      multiSelect={true} // Optional: Allow multiple selections\n      friendlySelectors={true} // Optional: Use friendly tag names\n    />\n  );\n}\n```\n\n### Using from CDN\n\nYou can also use the library directly from a CDN without installing:\n\n```html\n<script type=\"module\">\n  import { launchSelector } from \"https://unpkg.com/@botanicastudios/element-selector/dist/element-selector.js\";\n\n  // Use launchSelector as shown above\n</script>\n```\n\n## Options\n\n### `multiSelect` (default: `false`)\n\nWhen set to `true`, allows selecting multiple elements. Without this option, only one element can be selected at a time.\n\n### `mode` (default: `select`)\n\nChoose between two interaction modes:\n\n- `select`: highlight existing DOM nodes and return their details (the original behaviour)\n- `insert`: preview drop points with horizontal/vertical rules so you can decide where new content should be injected. The selector returns the reference element plus the edge (`before`/`after`) and axis.\n\n### `allowModeToggle` (default: `true`)\n\nControls whether the floating toolbar inside the selector lets users switch between select and insert modes. Set to `false` if you want to lock the selector to the mode you launch with.\n\n### `optionsPanelPosition` (default: `{ vertical: \"top\", horizontal: \"center\" }`)\n\nSets where the floating toolbar (Select/Insert, instructions, counters) appears on screen.\n\n- `vertical`: `\"top\"` or `\"bottom\"`\n- `horizontal`: `\"left\"`, `\"center\"`, or `\"right\"`\n\nFor example:\n\n```javascript\nawait launchSelector({\n  optionsPanelPosition: { vertical: \"bottom\", horizontal: \"right\" },\n});\n```\n\n### `theme` (default: `\"dark\"`)\n\nSwitch the toolbar and buttons between the built‑in `\"dark\"` and `\"light\"` styles. This only affects the selector UI, not your page styles.\n\n### `selectionBarText`\n\nOverride the copy shown in the floating toolbar. All fields are optional; anything you omit falls back to the default text.\n\n```javascript\nawait launchSelector({\n  selectionBarText: {\n    selectLabel: \"Pick\",\n    insertLabel: \"Place\",\n    instructionSelectSingle: \"Tap an element\",\n    instructionSelectMulti: \"Tap every element you need\",\n    instructionInsert: \"Choose where new content should go\",\n    confirmLabel: \"Done\",\n    cancelLabel: \"Close\",\n  },\n});\n```\n\n- `selectLabel` / `insertLabel`: Text for the mode toggle buttons when mode switching is allowed.\n- `instructionSelectSingle`: Instruction shown in select mode when picking a single element.\n- `instructionSelectMulti`: Instruction shown in select mode when multi-select is enabled.\n- `instructionInsert`: Instruction shown in insert mode.\n- `confirmLabel`: Text for the confirm button.\n- `cancelLabel`: Text for the cancel button.\n\n`selectedCount` is kept for backward compatibility but currently ignored because the counter chip was removed from the toolbar.\n\n### `retainSelectionHighlights` (default: `false`)\n\nWhen `true`, the purple selection boxes stay on the page after the selector resolves. They remain until you start another selection session (launching `launchSelector` always clears them first) or call the `resetSelectionHighlights()` helper.\n\n### `friendlySelectors` (default: `false`)\n\nWhen set to `true`, displays human-readable tag names instead of HTML tag names. For example:\n\n- `<a>` shows as \"link\"\n- `<button>` shows as \"button\"\n- `<p>` shows as \"paragraph\"\n- `<div>` shows as \"container\"\n- `<img>` shows as \"image\"\n- And many more user-friendly names\n\n## How it works\n\n1. Call `launchSelector()` or render the `ElementSelector` component\n2. Choose between **Select** (default) and **Insert** in the toolbar, if toggling is enabled\n3. Move your mouse over the page to preview the target\n   - Select mode highlights whole elements\n   - Insert mode draws a rule between siblings to illustrate the drop point\n4. Click to confirm the current highlight\n5. In select + multi-select mode: click multiple elements, then press Enter to confirm (click again to remove)\n6. Press Escape at any time to cancel without making a selection\n\n### Resetting persisted highlights\n\nIf you enable `retainSelectionHighlights`, call `resetSelectionHighlights()` when you want to remove the overlays without starting a new selection session:\n\n```javascript\nimport { resetSelectionHighlights } from \"@botanicastudios/element-selector\";\n\n// Clear persisted highlight boxes\nresetSelectionHighlights();\n```\n\n## Available Scripts\n\nIn the project directory, you can run:\n\n### `npm run dev`\n\nRuns the demo app in development mode.\\\nOpen [http://localhost:3000](http://localhost:3000) to view it in your browser.\n\nThe page will reload when you make changes.\\\nYou may also see any lint errors in the console.\n\n### `npm run build`\n\nBuilds the library as an ES module to the `dist` folder.\\\nThis creates the production-ready library files that can be published to npm.\n\n### `npm test`\n\nLaunches the test runner in the interactive watch mode.\\\nSee the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.\n\n## GitHub Pages\n\nPushes to `main` automatically build the Create React App demo (`npm run demo:build`) and publish it to GitHub Pages via `.github/workflows/deploy-demo.yml`. You can also trigger a deployment manually with the **Run workflow** button in the Actions tab.\n","readmeFilename":"README.md"}