{"_id":"@akccakcctw/vue-grab","_rev":"3-069408d49258776f99968f89e3114ba3","name":"@akccakcctw/vue-grab","dist-tags":{"latest":"1.4.0"},"versions":{"1.0.0":{"name":"@akccakcctw/vue-grab","version":"1.0.0","keywords":[],"author":"","license":"MIT","_id":"@akccakcctw/vue-grab@1.0.0","maintainers":[{"name":"akccakcctw","email":"akccakccwww@gmail.com"}],"dist":{"shasum":"ca3d88a80ee4039ceb07301f99b61fb5c735be4d","tarball":"https://registry.npmjs.org/@akccakcctw/vue-grab/-/vue-grab-1.0.0.tgz","fileCount":24,"integrity":"sha512-Vl2cxlh03qAN5XrbOSpHHM7IkDXfJMTTScTmYo7Gxk7WhKtQ4reIoO9OtZlny2PkVFfPRTPEkqA8JglWK116sw==","signatures":[{"sig":"MEUCIQCR8MX7kAI8raV4zELygd4GftxkwGaNSqY2cU+pj9mNugIgX2iAqZ4LEzdKDmsEm3wL9g2HKk5cKD3HKKEUnUtGp40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93828},"main":"src/index.ts","nuxt":"src/nuxt/module.ts","_from":"file:akccakcctw-vue-grab-1.0.0.tgz","module":"src/index.ts","exports":{".":"./src/index.ts","./module":"./src/nuxt/module.ts"},"scripts":{"test":"vitest run"},"_npmUser":{"name":"akccakcctw","email":"akccakccwww@gmail.com"},"_resolved":"/private/var/folders/h8/0_d6kw293g9c_1x28kcrjl6r0000gn/T/3d949582c14144671bce8e2cb6fa0596/akccakcctw-vue-grab-1.0.0.tgz","_integrity":"sha512-Vl2cxlh03qAN5XrbOSpHHM7IkDXfJMTTScTmYo7Gxk7WhKtQ4reIoO9OtZlny2PkVFfPRTPEkqA8JglWK116sw==","_npmVersion":"11.6.2","description":"Developer-only bridge for inspecting Vue/Nuxt component context from the DOM.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.26","vite":"^7.3.1","jsdom":"^27.4.0","vitest":"^4.0.17","@nuxt/kit":"^4.2.2","typescript":"^5.9.3","@vue/test-utils":"^2.4.6","@vitejs/plugin-vue":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-grab_1.0.0_1768553745146_0.5685173195821085","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@akccakcctw/vue-grab","version":"1.3.0","keywords":["vue","nuxt","devtools"],"author":"","license":"MIT","_id":"@akccakcctw/vue-grab@1.3.0","maintainers":[{"name":"akccakcctw","email":"akccakccwww@gmail.com"}],"homepage":"https://github.com/akccakcctw/vue-grab#readme","bugs":{"url":"https://github.com/akccakcctw/vue-grab/issues"},"dist":{"shasum":"18a6602a783729f2ef78a86782956e6d257c8440","tarball":"https://registry.npmjs.org/@akccakcctw/vue-grab/-/vue-grab-1.3.0.tgz","fileCount":20,"integrity":"sha512-OEX9NshL03upvB0Fd+764P3L02gatXvEWjbm3nfPvgnPdLe2xE7PzwdJoq2h2ZheWSDocmWP4nNuqv4McqtJlQ==","signatures":[{"sig":"MEYCIQC4N1hxCpxSJcm7VHvh/FuHaO3eD2Ppx8owOsgS9KR3HAIhAP/hdrSMMhpgcnr7Ch+ouBZ7chHdoEEwgFb68lFsNqQg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53132},"main":"./dist/index.js","nuxt":"./dist/nuxt/module.js","type":"module","_from":"file:akccakcctw-vue-grab-1.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./vite":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"},"./module":{"types":"./dist/nuxt/module.d.ts","default":"./dist/nuxt/module.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json"},"_npmUser":{"name":"akccakcctw","email":"akccakccwww@gmail.com"},"_resolved":"/tmp/c5255ca921c9e2b7dbf834148c2afb9c/akccakcctw-vue-grab-1.3.0.tgz","_integrity":"sha512-OEX9NshL03upvB0Fd+764P3L02gatXvEWjbm3nfPvgnPdLe2xE7PzwdJoq2h2ZheWSDocmWP4nNuqv4McqtJlQ==","repository":{"url":"git+https://github.com/akccakcctw/vue-grab.git","type":"git"},"_npmVersion":"11.6.2","description":"Developer-only bridge for inspecting Vue/Nuxt component context from the DOM.","directories":{},"_nodeVersion":"24.12.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.26","vite":"^7.3.1","jsdom":"^27.4.0","vitest":"^4.0.17","@nuxt/kit":"^4.2.2","typescript":"^5.9.3","@types/node":"^20.19.11","@vue/test-utils":"^2.4.6","@vitejs/plugin-vue":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-grab_1.3.0_1768732013602_0.3953965058723208","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@akccakcctw/vue-grab","version":"1.4.0","description":"Developer-only bridge for inspecting Vue/Nuxt component context from the DOM.","repository":{"type":"git","url":"git+https://github.com/akccakcctw/vue-grab.git"},"type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./module":{"types":"./dist/nuxt/module.d.ts","default":"./dist/nuxt/module.js"},"./vite":{"types":"./dist/vite.d.ts","default":"./dist/vite.js"}},"nuxt":"./dist/nuxt/module.js","keywords":["vue","nuxt","devtools"],"author":"","license":"MIT","publishConfig":{"access":"public"},"devDependencies":{"@nuxt/kit":"^4.2.2","@types/node":"^20.19.11","@vitejs/plugin-vue":"^6.0.3","@vue/test-utils":"^2.4.6","jsdom":"^27.4.0","typescript":"^5.9.3","vite":"^7.3.1","vitest":"^4.0.17","vue":"^3.5.26"},"scripts":{"build":"tsc -p tsconfig.build.json","test":"vitest run"},"_id":"@akccakcctw/vue-grab@1.4.0","bugs":{"url":"https://github.com/akccakcctw/vue-grab/issues"},"homepage":"https://github.com/akccakcctw/vue-grab#readme","_integrity":"sha512-gw/Z23L7xVQ1BTLjVmStOVoxt33TuibnBxYURglPokq5B2v58uKrI7vMxP43PUeRwRasXNpr6g+xtmekEa2klw==","_resolved":"/tmp/2fbdf2007747b28b325d9d8ebb2dd5ac/akccakcctw-vue-grab-1.4.0.tgz","_from":"file:akccakcctw-vue-grab-1.4.0.tgz","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-gw/Z23L7xVQ1BTLjVmStOVoxt33TuibnBxYURglPokq5B2v58uKrI7vMxP43PUeRwRasXNpr6g+xtmekEa2klw==","shasum":"2b9139e3bea14d57f4537dc7ac4b48d063e2e5ea","tarball":"https://registry.npmjs.org/@akccakcctw/vue-grab/-/vue-grab-1.4.0.tgz","fileCount":23,"unpackedSize":63511,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC0p1FXeaimRl3IB95gLIpzn0qZYjIMOPEGe1GcQvq09AiA0HulNYPVl6qcCy2CfNbEn2jpnZGjE4dSNG2WtGdQNSA=="}]},"_npmUser":{"name":"akccakcctw","email":"akccakccwww@gmail.com"},"directories":{},"maintainers":[{"name":"akccakcctw","email":"akccakccwww@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue-grab_1.4.0_1769849833714_0.39186396670713664"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-16T08:55:44.921Z","modified":"2026-01-31T08:57:13.962Z","1.0.0":"2026-01-16T08:55:45.296Z","1.3.0":"2026-01-18T10:26:53.752Z","1.4.0":"2026-01-31T08:57:13.845Z"},"bugs":{"url":"https://github.com/akccakcctw/vue-grab/issues"},"license":"MIT","homepage":"https://github.com/akccakcctw/vue-grab#readme","keywords":["vue","nuxt","devtools"],"repository":{"type":"git","url":"git+https://github.com/akccakcctw/vue-grab.git"},"description":"Developer-only bridge for inspecting Vue/Nuxt component context from the DOM.","maintainers":[{"name":"akccakcctw","email":"akccakccwww@gmail.com"}],"readme":"# @akccakcctw/vue-grab\n\nDeveloper-only bridge for inspecting Vue/Nuxt component context from the DOM.\n\n[![npm](https://img.shields.io/npm/v/@akccakcctw/vue-grab)](https://www.npmjs.com/package/@akccakcctw/vue-grab)\nNPM package: https://www.npmjs.com/package/@akccakcctw/vue-grab\n\n## Install\n\n```bash\npnpm add -D @akccakcctw/vue-grab\n```\n\n## Vue Usage\n\n```ts\nimport { createApp } from 'vue'\nimport { createVueGrabPlugin } from '@akccakcctw/vue-grab'\n\nconst app = createApp(App)\n\n// Use import.meta.env.DEV for Vite, or process.env.NODE_ENV === 'development' for Webpack\nif (import.meta.env.DEV) {\n  app.use(createVueGrabPlugin({\n    overlayStyle: {\n      border: '2px dashed #111'\n    },\n    onCopy(payload) {\n      console.log('vue-grab payload', payload)\n    },\n    copyOnClick: true\n  }))\n}\n\napp.mount('#app')\n```\n\n## Nuxt Usage\n\n```ts\nexport default defineNuxtConfig({\n  modules: ['@akccakcctw/vue-grab'],\n  vueGrab: {\n    enabled: true,\n    overlayStyle: {\n      border: '2px dashed #111'\n    },\n    copyOnClick: true\n  }\n})\n```\n\n## Vite Line/Column Support\n\nAdd the Vite plugin to inject `__file`, `__line`, and `__column` metadata into SFCs.\nIt also annotates template DOM nodes with their original line/column so element grabs map to the template line numbers.\n\n```ts\nimport { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { createVueGrabVitePlugin } from '@akccakcctw/vue-grab/vite'\n\nexport default defineConfig({\n  plugins: [vue(), createVueGrabVitePlugin()]\n})\n```\n\n## Browser API\n\nWhen active, `window.__VUE_GRAB__` exposes:\n\n- `activate()` / `deactivate()`\n- `grabAt(x, y)`\n- `grabFromSelector(selector)`\n- `grabFromElement(element)`\n- `highlight(selector)`\n- `setOverlayStyle(style)`\n- Aliases: `enable()` / `disable()` / `getComponentDetails(selectorOrElement)`\n\nA floating toggle button is injected in dev to switch grab mode on/off. Hover shows file:line:column.\n\n## MCP Example\n\n```js\nconst info = window.__VUE_GRAB__.grabFromSelector('.my-button');\nconsole.log(JSON.stringify(info));\n```\n\nFor the full documentation, see https://github.com/akccakcctw/vue-grab.\n","readmeFilename":"README.md"}