@sakana-y/vue-grab 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +122 -0
  3. package/dist/composables/index.d.ts.map +1 -1
  4. package/dist/core/index.d.ts +6 -3
  5. package/dist/core/index.d.ts.map +1 -1
  6. package/dist/editor.d.ts +1 -1
  7. package/dist/editor.d.ts.map +1 -1
  8. package/dist/floating-button/index.d.ts +78 -17
  9. package/dist/floating-button/index.d.ts.map +1 -1
  10. package/dist/index.cjs +844 -93
  11. package/dist/index.d.ts +2 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.mjs +1347 -461
  14. package/dist/init.d.ts +4 -2
  15. package/dist/init.d.ts.map +1 -1
  16. package/dist/magnifier/index.d.ts +1 -1
  17. package/dist/magnifier/index.d.ts.map +1 -1
  18. package/dist/measurer/index.d.ts +1 -1
  19. package/dist/measurer/index.d.ts.map +1 -1
  20. package/dist/path-BLtqSTdb.js +198 -0
  21. package/dist/path-DFVWeR_p.cjs +1 -0
  22. package/dist/plugin.d.ts +18 -3
  23. package/dist/plugin.d.ts.map +1 -1
  24. package/dist/session.d.ts +2 -1
  25. package/dist/session.d.ts.map +1 -1
  26. package/dist/utils/console-capture.d.ts.map +1 -1
  27. package/dist/utils/index.d.ts +3 -1
  28. package/dist/utils/index.d.ts.map +1 -1
  29. package/dist/utils/network-capture.d.ts +36 -0
  30. package/dist/utils/network-capture.d.ts.map +1 -0
  31. package/dist/utils/path.d.ts +14 -0
  32. package/dist/utils/path.d.ts.map +1 -0
  33. package/dist/utils/prompt-builder.d.ts +2 -1
  34. package/dist/utils/prompt-builder.d.ts.map +1 -1
  35. package/dist/utils/serialize.d.ts +2 -0
  36. package/dist/utils/serialize.d.ts.map +1 -0
  37. package/dist/utils/stack.d.ts +17 -0
  38. package/dist/utils/stack.d.ts.map +1 -0
  39. package/dist/vite.cjs +1 -1
  40. package/dist/vite.d.ts.map +1 -1
  41. package/dist/vite.mjs +116 -24
  42. package/package.json +27 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,55 @@
1
+ # @sakana-y/vue-grab
2
+
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#38](https://github.com/SaKaNa-Y/vue-grab/pull/38) [`a90677f`](https://github.com/SaKaNa-Y/vue-grab/commit/a90677f19389bb7875ca54164e4554830f80a2d7) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Hide beta toolbar entries by default and label Magnifier, Logs, and Network as Beta in Dock settings.
8
+
9
+ - [#38](https://github.com/SaKaNa-Y/vue-grab/pull/38) [`a90677f`](https://github.com/SaKaNa-Y/vue-grab/commit/a90677f19389bb7875ca54164e4554830f80a2d7) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Add package README, license, and npm metadata so published package pages show documentation and project links.
10
+
11
+ - Updated dependencies [[`a90677f`](https://github.com/SaKaNa-Y/vue-grab/commit/a90677f19389bb7875ca54164e4554830f80a2d7), [`a90677f`](https://github.com/SaKaNa-Y/vue-grab/commit/a90677f19389bb7875ca54164e4554830f80a2d7)]:
12
+ - @sakana-y/vue-grab-shared@0.1.2
13
+
14
+ ## 0.1.1
15
+
16
+ ### Patch Changes
17
+
18
+ - [#35](https://github.com/SaKaNa-Y/vue-grab/pull/35) [`56d9d44`](https://github.com/SaKaNa-Y/vue-grab/commit/56d9d448c62ce2f11607fe7bf5b570ce4ecad40a) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Add floating-button toolbar entry visibility and ordering preferences with a locked Settings entry, grouped shortcut settings, and drag reordering within Dock feature groups.
19
+
20
+ - [#31](https://github.com/SaKaNa-Y/vue-grab/pull/31) [`151ffdb`](https://github.com/SaKaNa-Y/vue-grab/commit/151ffdbd6b8b56ecff1437debd3a38cfbc57b618) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Expose shared protocol constants and request types for advanced integrations.
21
+
22
+ - [#32](https://github.com/SaKaNa-Y/vue-grab/pull/32) [`14163a0`](https://github.com/SaKaNa-Y/vue-grab/commit/14163a075eeb8783a490b7997e8b8ce1b048b9c7) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Add floating-button dock modes with persisted Float and Edge panel behavior plus outside-click panel closing.
23
+
24
+ - [#36](https://github.com/SaKaNa-Y/vue-grab/pull/36) [`0cdf6ae`](https://github.com/SaKaNa-Y/vue-grab/commit/0cdf6ae870fa9da9b4a66de45679365dff85a978) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Add persisted, user-configurable shortcuts for every floating-bar feature.
25
+
26
+ - [#28](https://github.com/SaKaNa-Y/vue-grab/pull/28) [`4ad57b5`](https://github.com/SaKaNa-Y/vue-grab/commit/4ad57b57e86a4c3c3f37d1d951ab69b8c5151a97) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Harden the Vite open-in-editor endpoint and make network body capture opt-in by default.
27
+
28
+ - [#36](https://github.com/SaKaNa-Y/vue-grab/pull/36) [`0cdf6ae`](https://github.com/SaKaNa-Y/vue-grab/commit/0cdf6ae870fa9da9b4a66de45679365dff85a978) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Redesign the settings shortcuts UI and merge editor and magnifier controls into a Tools tab.
29
+
30
+ - Updated dependencies [[`56d9d44`](https://github.com/SaKaNa-Y/vue-grab/commit/56d9d448c62ce2f11607fe7bf5b570ce4ecad40a), [`151ffdb`](https://github.com/SaKaNa-Y/vue-grab/commit/151ffdbd6b8b56ecff1437debd3a38cfbc57b618), [`14163a0`](https://github.com/SaKaNa-Y/vue-grab/commit/14163a075eeb8783a490b7997e8b8ce1b048b9c7), [`0cdf6ae`](https://github.com/SaKaNa-Y/vue-grab/commit/0cdf6ae870fa9da9b4a66de45679365dff85a978), [`4ad57b5`](https://github.com/SaKaNa-Y/vue-grab/commit/4ad57b57e86a4c3c3f37d1d951ab69b8c5151a97)]:
31
+ - @sakana-y/vue-grab-shared@0.1.1
32
+
33
+ ## 0.1.0
34
+
35
+ ### Minor Changes
36
+
37
+ - [#21](https://github.com/SaKaNa-Y/vue-grab/pull/21) [`6df5750`](https://github.com/SaKaNa-Y/vue-grab/commit/6df5750f22dc975340180c22a656294a4d85291d) Thanks [@SaKaNa-Y](https://github.com/SaKaNa-Y)! - Rename `errorCapture` → `consoleCapture` and broaden capture from `console.error` only to all five console levels (`log`, `info`, `warn`, `error`, `debug`). The FloatingButton panel now surfaces every captured entry with per-level filter pills and a message search input; the badge counts only `warn` + `error` entries to keep it actionable.
38
+
39
+ Breaking changes — no backwards-compatible aliases:
40
+ - Config key `errorCapture` → `consoleCapture`.
41
+ - Type `ErrorCaptureConfig` → `ConsoleCaptureConfig`:
42
+ - `maxErrors` (default 50) → `maxEntries` (default 200).
43
+ - `captureConsoleError: boolean` replaced by `levels: LogLevel[]` (default is all five levels enabled). The levels array is replaced wholesale by `mergeConfig`, not element-merged.
44
+ - `captureUnhandled` and `captureVueErrors` retained with identical semantics.
45
+ - Type `CapturedError` → `CapturedLog`. The single `type` field is replaced with two axes: `level: "log" | "info" | "warn" | "error" | "debug"` and `source: "console" | "runtime" | "promise" | "vue"`. Runtime/promise/Vue entries always carry `level: "error"`.
46
+ - Constant `VUE_ERROR_EVENT` retained (the underlying window-event string `"vue-grab:vue-error"` is unchanged).
47
+ - Standalone `init()` API: `onError` / `clearErrors` → `onLog` / `clearLogs`.
48
+ - FloatingButton methods: `setErrors` / `onErrorsClear` → `setLogs` / `onLogsClear` (internal, only affects code that imports `FloatingButton` directly).
49
+ - Dedup fingerprint now includes `source` and `level`, so the same message at different levels or from different sources produces distinct entries.
50
+ - Arguments passed to `console.*` are now stringified at capture time via a safe stringifier that handles circular references, Error instances (preserving `.stack`), and truncates very long values.
51
+
52
+ ### Patch Changes
53
+
54
+ - Updated dependencies [[`6df5750`](https://github.com/SaKaNa-Y/vue-grab/commit/6df5750f22dc975340180c22a656294a4d85291d)]:
55
+ - @sakana-y/vue-grab-shared@0.1.0
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # Vue Grab
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@sakana-y/vue-grab)](https://www.npmjs.com/package/@sakana-y/vue-grab)
4
+ [![license](https://img.shields.io/npm/l/@sakana-y/vue-grab)](./LICENSE)
5
+
6
+ Grab UI context from Vue apps for AI coding agents.
7
+
8
+ Point at any element, click, and capture its HTML, CSS selector, Vue component hierarchy, accessibility context, console output, and recent network activity so you can hand useful UI evidence to Cursor, Claude Code, or any AI chat.
9
+
10
+ ## Features
11
+
12
+ - Interactive element selection with hover highlighting.
13
+ - Vue component stack extraction when Vue exposes file and line metadata.
14
+ - CSS selector and HTML capture with configurable limits.
15
+ - Accessibility attributes and page-wide audit helpers.
16
+ - Console capture for logs, warnings, errors, unhandled rejections, and Vue errors.
17
+ - Network capture for `fetch` and XHR metadata with header redaction and optional body capture.
18
+ - Floating action button with settings, logs, network, a11y, magnifier, and measurer tools.
19
+ - Vite editor integration through the `@sakana-y/vue-grab/vite` entry point.
20
+ - Shadow DOM isolation for Vue Grab overlays and toolbar styles.
21
+ - Vue plugin and standalone runtime APIs.
22
+
23
+ ## Install
24
+
25
+ ```bash
26
+ pnpm add -D @sakana-y/vue-grab
27
+ ```
28
+
29
+ You can also use the setup CLI:
30
+
31
+ ```bash
32
+ npx @sakana-y/vue-grab-cli init
33
+ ```
34
+
35
+ ## Vue Plugin Setup
36
+
37
+ ```ts
38
+ import { createApp } from "vue";
39
+ import { createVueGrab } from "@sakana-y/vue-grab";
40
+ import App from "./App.vue";
41
+
42
+ const app = createApp(App);
43
+
44
+ app.use(
45
+ createVueGrab({
46
+ floatingButton: { enabled: true },
47
+ }),
48
+ );
49
+
50
+ app.mount("#app");
51
+ ```
52
+
53
+ Use the composable anywhere in your Vue app:
54
+
55
+ ```vue
56
+ <script setup lang="ts">
57
+ import { useGrab } from "@sakana-y/vue-grab";
58
+
59
+ const { isActive, lastResult, toggle } = useGrab();
60
+ </script>
61
+
62
+ <template>
63
+ <button @click="toggle">
64
+ {{ isActive ? "Grabbing..." : "Grab" }}
65
+ </button>
66
+ <pre v-if="lastResult">{{ lastResult.selector }}</pre>
67
+ </template>
68
+ ```
69
+
70
+ ## Vite Editor Integration
71
+
72
+ Add the companion Vite plugin when you want captured source paths to open in your editor during development:
73
+
74
+ ```ts
75
+ import { defineConfig } from "vite";
76
+ import vue from "@vitejs/plugin-vue";
77
+ import { vueGrabPlugin } from "@sakana-y/vue-grab/vite";
78
+
79
+ export default defineConfig({
80
+ plugins: [vue(), vueGrabPlugin({ editor: "code" })],
81
+ });
82
+ ```
83
+
84
+ The plugin adds a development-only endpoint for same-origin editor requests. It rejects paths outside the project root and unsupported editor commands.
85
+
86
+ ## Standalone Usage
87
+
88
+ ```ts
89
+ import { init } from "@sakana-y/vue-grab";
90
+
91
+ const grabber = init({ floatingButton: { enabled: true } });
92
+
93
+ grabber.onGrab((result) => {
94
+ console.log(result.selector);
95
+ console.log(result.html);
96
+ console.log(result.componentStack);
97
+ console.log(result.a11y);
98
+ console.log(result.network);
99
+ });
100
+
101
+ grabber.onLog((entries) => console.table(entries));
102
+ grabber.onNetwork((entries) => console.table(entries));
103
+
104
+ grabber.destroy();
105
+ ```
106
+
107
+ ## Core APIs
108
+
109
+ - `createVueGrab(config?)`: Vue plugin factory.
110
+ - `useGrab()`: composable for grab state, results, and controls.
111
+ - `init(config?)`: standalone runtime initializer.
112
+ - `openInEditor(request)`: sends a dev-server editor request.
113
+ - `@sakana-y/vue-grab/vite`: Vite dev-server plugin entry point.
114
+
115
+ Configuration objects are deep-merged with the default config by `mergeConfig()` from `@sakana-y/vue-grab-shared`. Array fields such as `consoleCapture.levels`, `networkCapture.redactHeaders`, and `networkCapture.urlDenyList` are replaced wholesale.
116
+
117
+ ## Links
118
+
119
+ - Repository: https://github.com/SaKaNa-Y/vue-grab
120
+ - Issues: https://github.com/SaKaNa-Y/vue-grab/issues
121
+ - Changelog: ./CHANGELOG.md
122
+ - License: ./LICENSE
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AACtF,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKxE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,wBAAgB,OAAO,IAAI,aAAa,CA0CvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2C,KAAK,YAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAIxE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAWD,wBAAgB,OAAO,IAAI,aAAa,CA2BvC"}
@@ -1,10 +1,11 @@
1
- import { GrabConfig, GrabResult } from '@sakana-y/vue-grab-shared';
1
+ import { GrabConfig, GrabResult, GrabUserConfig } from '@sakana-y/vue-grab-shared';
2
2
  export declare class GrabEngine {
3
3
  private config;
4
4
  private overlay;
5
5
  private callbacks;
6
+ private enrichers;
6
7
  private stateListeners;
7
- private _isActive;
8
+ private active;
8
9
  private prevCursor;
9
10
  private handleMouseMove;
10
11
  private handleClick;
@@ -14,10 +15,12 @@ export declare class GrabEngine {
14
15
  activate(): void;
15
16
  deactivate(): void;
16
17
  onGrab(cb: (result: GrabResult) => void): () => void;
18
+ /** Synchronously mutate a GrabResult before any onGrab listeners run. */
19
+ addResultEnricher(fn: (result: GrabResult) => void): () => void;
17
20
  onStateChange(cb: (active: boolean) => void): () => void;
18
21
  toggle(): void;
19
22
  destroy(): void;
20
- updateConfig(config: Partial<GrabConfig>): void;
23
+ updateConfig(config: GrabUserConfig): void;
21
24
  private shouldIgnore;
22
25
  private getVueComponent;
23
26
  private getComponentLabelFromInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,2BAA2B,CAAC;AAoBvF,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAM;IAGxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,aAAa,CAA6C;gBAEtD,MAAM,EAAE,UAAU;IAI9B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,QAAQ,IAAI,IAAI;IA8DhB,UAAU,IAAI,IAAI;IAsBlB,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAKpD,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxD,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAMf,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAI/C,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;CA8BzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EAEV,cAAc,EACf,MAAM,2BAA2B,CAAC;AAoBnC,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,SAAS,CAAgD;IACjE,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,cAAc,CAA6C;IACnE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAM;IAGxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,aAAa,CAA6C;gBAEtD,MAAM,EAAE,UAAU;IAI9B,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,QAAQ,IAAI,IAAI;IA+DhB,UAAU,IAAI,IAAI;IAsBlB,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAKpD,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI;IAQ/D,aAAa,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxD,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAOf,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI1C,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,gBAAgB;CA8BzB"}
package/dist/editor.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * Opens a file in the user's editor via the Vite dev server middleware.
3
3
  * Requires the `vueGrabPlugin()` Vite plugin to be configured.
4
4
  */
5
- export declare function openInEditor(filePath: string, line?: number, editor?: string): void;
5
+ export declare function openInEditor(filePath: string, line?: number, editor?: string): Promise<void>;
6
6
  /**
7
7
  * Opens Claude Code in VS Code with the given prompt pre-filled via URI scheme.
8
8
  * Also copies the prompt to clipboard as a backup.
@@ -1 +1 @@
1
- {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAKnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrD"}
1
+ {"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAMrD"}
@@ -1,4 +1,4 @@
1
- import { CapturedLog, FloatingButtonConfig, GrabResult } from '@sakana-y/vue-grab-shared';
1
+ import { CapturedLog, CapturedRequest, FloatingButtonConfig, FloatingButtonShortcutCommandId, FloatingButtonShortcutsConfig, GrabResult } from '@sakana-y/vue-grab-shared';
2
2
  export declare const FAB_HOST_ID = "vue-grab-fab-host";
3
3
  export declare class FloatingButton {
4
4
  private host;
@@ -12,22 +12,39 @@ export declare class FloatingButton {
12
12
  private a11yIndicatorEl;
13
13
  private logsBtnEl;
14
14
  private logsBadgeEl;
15
+ private networkBtnEl;
16
+ private networkBadgeEl;
15
17
  private magnifierBtnEl;
16
18
  private measurerBtnEl;
17
19
  private logEntries;
18
20
  private filterLevels;
19
21
  private searchTerm;
20
22
  private searchDebounceId;
23
+ private networkEntries;
24
+ private networkFilterStatus;
25
+ private networkSearchTerm;
26
+ private networkSearchDebounceId;
27
+ private networkRenderRafId;
28
+ private lastNetworkBadge;
29
+ private dockEntries;
30
+ private dockEntriesStorageKey;
31
+ private shortcuts;
32
+ private shortcutsStorageKey;
33
+ private dockEntryDragId;
34
+ private dockEntryDropTargetEl;
21
35
  private cachedA11yResults;
22
36
  private lastA11yScanTime;
23
37
  private pendingRafId;
24
38
  private logsRenderRafId;
39
+ private preservedToolbarRect;
25
40
  private config;
26
41
  private activePanel;
27
42
  private settingsTab;
28
43
  private isGrabActive;
29
44
  private isMagnifierActive;
30
45
  private isMeasurerActive;
46
+ private dockMode;
47
+ private closeOnOutsideClick;
31
48
  private editorChoice;
32
49
  private lastGrabResult;
33
50
  private posX;
@@ -39,14 +56,14 @@ export declare class FloatingButton {
39
56
  private dragStartY;
40
57
  private dragOffsetX;
41
58
  private dragOffsetY;
42
- private isRecording;
43
- private currentHotkey;
44
- private isRecordingMeasurer;
45
- private currentMeasurerHotkey;
59
+ private lastAppliedEdge;
60
+ private recordingShortcutId;
61
+ private shortcutError;
46
62
  private toggleCb;
63
+ private shortcutsChangeCb;
47
64
  private hotkeyChangeCb;
48
- private configChangeCb;
49
65
  private logsClearCb;
66
+ private networkClearCb;
50
67
  private magnifierToggleCb;
51
68
  private measurerToggleCb;
52
69
  private measurerHotkeyChangeCb;
@@ -61,8 +78,24 @@ export declare class FloatingButton {
61
78
  private boundRecordKeyDown;
62
79
  constructor(config: FloatingButtonConfig);
63
80
  getCurrentHotkey(): string;
81
+ getShortcuts(): FloatingButtonShortcutsConfig;
64
82
  getEditorChoice(): string;
65
83
  setLastResult(result: GrabResult | null): void;
84
+ private createDockEntryButton;
85
+ private getDockEntryElement;
86
+ private visibleDockEntryIds;
87
+ private renderToolbarEntries;
88
+ private cloneShortcuts;
89
+ private normalizeShortcutsWithLegacy;
90
+ private getShortcutCombos;
91
+ private hasShortcutCombo;
92
+ private persistShortcuts;
93
+ private commitShortcuts;
94
+ private setFirstShortcut;
95
+ private addShortcut;
96
+ private removeShortcut;
97
+ private triggerShortcutCommand;
98
+ triggerShortcut(id: FloatingButtonShortcutCommandId): void;
66
99
  mount(): void;
67
100
  destroy(): void;
68
101
  setActive(active: boolean): void;
@@ -70,7 +103,7 @@ export declare class FloatingButton {
70
103
  setCurrentHotkey(combo: string): void;
71
104
  onToggle(cb: () => void): void;
72
105
  onHotkeyChange(cb: (combo: string) => void): void;
73
- onConfigChange(cb: (changes: Record<string, unknown>) => void): void;
106
+ onShortcutsChange(cb: (shortcuts: FloatingButtonShortcutsConfig) => void): void;
74
107
  onLogsClear(cb: () => void): void;
75
108
  onMagnifierToggle(cb: () => void): void;
76
109
  onMagnifierConfigChange(cb: (config: {
@@ -91,10 +124,29 @@ export declare class FloatingButton {
91
124
  private canActivatePanel;
92
125
  private activatePanel;
93
126
  private deactivatePanel;
127
+ private updatePanelButtonStates;
94
128
  private renderExpandBody;
95
129
  private buildSettingsHTML;
130
+ private renderShortcutRows;
131
+ private renderDockEntryManager;
96
132
  private wireSettingsEvents;
133
+ private wireShortcutEvents;
134
+ private wireDockEntryManagerEvents;
135
+ private persistDockEntries;
136
+ private commitDockEntries;
137
+ private refreshDockEntryUi;
138
+ private toggleDockEntryVisibility;
139
+ private toggleDockEntryGroupVisibility;
140
+ private moveDockEntryWithinGroup;
141
+ private reorderDockEntryWithinGroup;
142
+ private canDropDockEntryOn;
143
+ private getDockEntryDropPlacement;
144
+ private setDockEntryDropTarget;
145
+ private clearDockEntryDropTargets;
146
+ private clearDockEntryDragState;
97
147
  private switchSettingsTab;
148
+ private updateDockModeControls;
149
+ private setDockMode;
98
150
  private updateEditorTabInPlace;
99
151
  private renderA11yPanelContent;
100
152
  private renderA11yRow;
@@ -106,6 +158,22 @@ export declare class FloatingButton {
106
158
  private visibleLogs;
107
159
  private renderLogsPanelContent;
108
160
  private wireLogsPanelEvents;
161
+ setNetwork(entries: CapturedRequest[]): void;
162
+ onNetworkClear(cb: () => void): void;
163
+ private scheduleNetworkRender;
164
+ private updateNetworkBadge;
165
+ private countsByStatusClass;
166
+ private visibleNetwork;
167
+ private renderNetworkPanelContent;
168
+ private wireNetworkPanelEvents;
169
+ private applyDockLayout;
170
+ private resetDockClasses;
171
+ private resetLayoutStyles;
172
+ private applyFloatClosedLayout;
173
+ private applyFloatExpandedLayout;
174
+ private applyEdgeLayout;
175
+ private clearPanelState;
176
+ private restoreFloatPositionFromEdge;
109
177
  private onPointerDown;
110
178
  private onPointerMove;
111
179
  private onPointerUp;
@@ -113,15 +181,8 @@ export declare class FloatingButton {
113
181
  private applyPosition;
114
182
  private getEdgeFromPosition;
115
183
  private applyOrientation;
116
- private toggleRecording;
117
- private startRecording;
118
- private stopRecording;
119
- private toggleMeasurerRecording;
120
- private startMeasurerRecording;
121
- private stopMeasurerRecording;
122
- /** Shared: begin recording a hotkey, returns the bound keydown handler */
123
- private startRecordingFor;
124
- /** Shared: stop recording, returns null to clear the bound handler */
125
- private stopRecordingFor;
184
+ private toggleShortcutRecording;
185
+ private startShortcutRecording;
186
+ private stopShortcutRecording;
126
187
  }
127
188
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/floating-button/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/floating-button/index.ts"],"names":[],"mappings":"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"}