@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.
- package/CHANGELOG.md +55 -0
- package/README.md +122 -0
- package/dist/composables/index.d.ts.map +1 -1
- package/dist/core/index.d.ts +6 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/editor.d.ts +1 -1
- package/dist/editor.d.ts.map +1 -1
- package/dist/floating-button/index.d.ts +78 -17
- package/dist/floating-button/index.d.ts.map +1 -1
- package/dist/index.cjs +844 -93
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +1347 -461
- package/dist/init.d.ts +4 -2
- package/dist/init.d.ts.map +1 -1
- package/dist/magnifier/index.d.ts +1 -1
- package/dist/magnifier/index.d.ts.map +1 -1
- package/dist/measurer/index.d.ts +1 -1
- package/dist/measurer/index.d.ts.map +1 -1
- package/dist/path-BLtqSTdb.js +198 -0
- package/dist/path-DFVWeR_p.cjs +1 -0
- package/dist/plugin.d.ts +18 -3
- package/dist/plugin.d.ts.map +1 -1
- package/dist/session.d.ts +2 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/utils/console-capture.d.ts.map +1 -1
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/network-capture.d.ts +36 -0
- package/dist/utils/network-capture.d.ts.map +1 -0
- package/dist/utils/path.d.ts +14 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/prompt-builder.d.ts +2 -1
- package/dist/utils/prompt-builder.d.ts.map +1 -1
- package/dist/utils/serialize.d.ts +2 -0
- package/dist/utils/serialize.d.ts.map +1 -0
- package/dist/utils/stack.d.ts +17 -0
- package/dist/utils/stack.d.ts.map +1 -0
- package/dist/vite.cjs +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.mjs +116 -24
- 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
|
+
[](https://www.npmjs.com/package/@sakana-y/vue-grab)
|
|
4
|
+
[](./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,
|
|
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"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -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
|
|
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:
|
|
23
|
+
updateConfig(config: GrabUserConfig): void;
|
|
21
24
|
private shouldIgnore;
|
|
22
25
|
private getVueComponent;
|
|
23
26
|
private getComponentLabelFromInstance;
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
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.
|
package/dist/editor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"
|
|
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
|
|
43
|
-
private
|
|
44
|
-
private
|
|
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
|
-
|
|
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
|
|
117
|
-
private
|
|
118
|
-
private
|
|
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":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/floating-button/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,EAIpB,+BAA+B,EAC/B,6BAA6B,EAC7B,UAAU,EAGX,MAAM,2BAA2B,CAAC;AA2BnC,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAiwD/C,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,YAAY,CAAoD;IACxE,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,mBAAmB,CAEzB;IACF,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,gBAAgB,CAAqD;IAC7E,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,iBAAiB,CAAgD;IACzE,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,MAAM,CAAuB;IAGrC,OAAO,CAAC,WAAW,CAAwB;IAC3C,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,mBAAmB,CAAU;IAGrC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,cAAc,CAA2B;IAGjD,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAM;IAGlB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,eAAe,CAAyB;IAGhD,OAAO,CAAC,mBAAmB,CAAgD;IAC3E,OAAO,CAAC,aAAa,CAAyE;IAG9F,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,iBAAiB,CAAqE;IAC9F,OAAO,CAAC,cAAc,CAA0C;IAChE,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,sBAAsB,CAA0C;IACxE,OAAO,CAAC,uBAAuB,CAEf;IAChB,OAAO,CAAC,kBAAkB,CAAO;IACjC,OAAO,CAAC,kBAAkB,CAAK;IAG/B,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,gBAAgB,CAA4C;IACpE,OAAO,CAAC,cAAc,CAA4C;IAClE,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,kBAAkB,CAA6C;gBAE3D,MAAM,EAAE,oBAAoB;IAgCxC,gBAAgB,IAAI,MAAM;IAI1B,YAAY,IAAI,6BAA6B;IAI7C,eAAe,IAAI,MAAM;IAIzB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI;IAU9C,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;IAI9B,eAAe,CAAC,EAAE,EAAE,+BAA+B,GAAG,IAAI;IAI1D,KAAK,IAAI,IAAI;IAuKb,OAAO,IAAI,IAAI;IAiDf,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMhC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIrC,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAI9B,cAAc,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIjD,iBAAiB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI;IAI/E,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,uBAAuB,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAI/F,kBAAkB,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAK1E,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMzC,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAQ7C,gBAAgB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAMxC,wBAAwB,IAAI,MAAM;IAIlC,sBAAsB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIzD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7C,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,iBAAiB;IAuGzB,OAAO,CAAC,kBAAkB;IAyC1B,OAAO,CAAC,sBAAsB;IA6D9B,OAAO,CAAC,kBAAkB;IA6E1B,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,0BAA0B;IA6FlC,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,yBAAyB;IASjC,OAAO,CAAC,8BAA8B;IAgBtC,OAAO,CAAC,wBAAwB;IAqBhC,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,sBAAsB;IA2E9B,OAAO,CAAC,aAAa;IA+DrB,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;IASrC,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,sBAAsB;IAgE9B,OAAO,CAAC,mBAAmB;IAmG3B,UAAU,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,IAAI;IAS5C,cAAc,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAIpC,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,yBAAyB;IAoFjC,OAAO,CAAC,sBAAsB;IAmG9B,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,wBAAwB;IAmDhC,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,qBAAqB;CAQ9B"}
|