@visulima/dev-toolbar 1.0.0-alpha.3 → 1.0.0-alpha.5
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 +60 -0
- package/LICENSE.md +109 -2
- package/dist/apps/a11y/a11y-app.d.ts +0 -1
- package/dist/apps/a11y/a11y-store.d.ts +12 -16
- package/dist/apps/a11y/a11y-tooltip.d.ts +0 -1
- package/dist/apps/a11y/index.js +3 -3
- package/dist/apps/assets/assets-app.d.ts +4 -0
- package/dist/apps/assets/index.d.ts +3 -0
- package/dist/apps/assets/index.js +16 -0
- package/dist/apps/inspector/index.js +2 -2
- package/dist/apps/inspector/inspector-app.d.ts +4 -2
- package/dist/apps/module-graph/index.js +2 -2
- package/dist/apps/module-graph/module-graph-app.d.ts +0 -1
- package/dist/apps/performance/index.js +2 -2
- package/dist/apps/performance/performance-app.d.ts +0 -1
- package/dist/apps/performance/performance-tooltip.d.ts +0 -1
- package/dist/apps/seo/index.js +2 -2
- package/dist/apps/seo/seo-app.d.ts +0 -1
- package/dist/apps/settings/index.js +2 -2
- package/dist/apps/tailwind/index.js +6 -6
- package/dist/apps/tailwind/tailwind-app.d.ts +0 -1
- package/dist/apps/timeline/index.js +2 -2
- package/dist/apps/timeline/timeline-app.d.ts +0 -1
- package/dist/apps/vite-config/index.js +2 -2
- package/dist/apps/vite-config/vite-config-app.d.ts +0 -1
- package/dist/client/overlay.js +1 -1
- package/dist/hooks/create-hook.d.ts +7 -5
- package/dist/hooks/events.d.ts +4 -2
- package/dist/hooks/global-hook.d.ts +6 -6
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -1
- package/dist/packem_chunks/inject-source.js +9 -1
- package/dist/packem_shared/Alert-D2CvX4fw.js +1 -0
- package/dist/packem_shared/Badge-BEgU04nl.js +1 -0
- package/dist/packem_shared/Button-Bkx66Co7.js +1 -0
- package/dist/packem_shared/Card-CJa4vHVc.js +1 -0
- package/dist/packem_shared/Icon-B6UHkC0o.js +1 -0
- package/dist/packem_shared/Input-Cs6aduTi.js +1 -0
- package/dist/packem_shared/Label-CgCFOMDc.js +1 -0
- package/dist/packem_shared/Popover-DzH5lAc9.js +1 -0
- package/dist/packem_shared/Progress-DN6zn-0l.js +1 -0
- package/dist/packem_shared/Separator-D38mKeZv.js +1 -0
- package/dist/packem_shared/Skeleton-Dv-tcA1P.js +1 -0
- package/dist/packem_shared/Switch-C3NTpeoR.js +1 -0
- package/dist/packem_shared/Tabs-SuFWbB6d.js +1 -0
- package/dist/packem_shared/Textarea-Yfg3dLZi.js +1 -0
- package/dist/packem_shared/Tooltip-BHmzUaxu.js +1 -0
- package/dist/packem_shared/clsx-wGlvpUfw.js +1 -0
- package/dist/packem_shared/createClientRPCContext-DgRxrllw.js +1 -0
- package/dist/packem_shared/createDevToolbarHook-4bZZiHPI.js +1 -0
- package/dist/packem_shared/createServerRPCContext-CJXa8ezf.js +1 -0
- package/dist/packem_shared/getTimelineStore-B1cfjWV8.js +1 -0
- package/dist/packem_shared/{setupGlobalHook-CFuxsCyl.js → setupGlobalHook-CCf9Logv.js} +1 -1
- package/dist/packem_shared/sharedToolbarStylesheet-JFwZE8kq.js +2 -0
- package/dist/packem_shared/store-DaUtLjf3.js +1 -0
- package/dist/packem_shared/use-frame-state-CxrlPUM5.js +1 -0
- package/dist/packem_shared/use-theme-zpm4zmqP.js +1 -0
- package/dist/performance/monitor.d.ts +27 -26
- package/dist/rpc/client.d.ts +6 -4
- package/dist/rpc/functions/assets.d.ts +16 -0
- package/dist/rpc/functions/open-in-editor.d.ts +7 -5
- package/dist/rpc/functions/tailwind-config.d.ts +7 -4
- package/dist/rpc/functions/vite-config.d.ts +80 -4
- package/dist/rpc/server.d.ts +9 -6
- package/dist/timeline/capture.d.ts +3 -1
- package/dist/timeline/index.d.ts +2 -1
- package/dist/timeline/store.d.ts +12 -22
- package/dist/toolbar/app-manager.d.ts +45 -43
- package/dist/toolbar/components/app-button.d.ts +0 -1
- package/dist/toolbar/components/app-canvas.d.ts +1 -1
- package/dist/toolbar/components/first-visit-hint.d.ts +0 -1
- package/dist/toolbar/components/toolbar-bar.d.ts +2 -7
- package/dist/toolbar/components/toolbar-container.d.ts +2 -8
- package/dist/toolbar/components/vite-overlay-button.d.ts +2 -2
- package/dist/toolbar/context/toolbar-context.d.ts +20 -19
- package/dist/toolbar/global-api.d.ts +3 -3
- package/dist/toolbar/helpers.d.ts +5 -3
- package/dist/toolbar/hooks/use-apps.d.ts +5 -3
- package/dist/toolbar/hooks/use-frame-state.d.ts +26 -10
- package/dist/toolbar/hooks/use-panel-visible.d.ts +9 -7
- package/dist/toolbar/hooks/use-position.d.ts +7 -5
- package/dist/toolbar/hooks/use-theme.d.ts +6 -4
- package/dist/toolbar/hooks/use-toolbar.d.ts +4 -2
- package/dist/toolbar/index.d.ts +8 -15
- package/dist/toolbar/index.js +3 -3
- package/dist/toolbar/settings.d.ts +7 -7
- package/dist/toolbar/stylesheet.d.ts +3 -1
- package/dist/toolbar/utils/index.d.ts +3 -3
- package/dist/types/global-api.d.ts +22 -33
- package/dist/types/hooks.d.ts +32 -34
- package/dist/types/messaging.d.ts +2 -2
- package/dist/types/rpc.d.ts +11 -7
- package/dist/types/timeline.d.ts +3 -3
- package/dist/types/toolbar.d.ts +1 -1
- package/dist/ui/components/alert.d.ts +0 -1
- package/dist/ui/components/badge.d.ts +0 -1
- package/dist/ui/components/button.d.ts +0 -1
- package/dist/ui/components/card.d.ts +0 -1
- package/dist/ui/components/icon.d.ts +3 -5
- package/dist/ui/components/input.d.ts +0 -1
- package/dist/ui/components/label.d.ts +0 -1
- package/dist/ui/components/popover.d.ts +1 -1
- package/dist/ui/components/progress.d.ts +0 -1
- package/dist/ui/components/separator.d.ts +0 -1
- package/dist/ui/components/skeleton.d.ts +0 -1
- package/dist/ui/components/switch.d.ts +0 -1
- package/dist/ui/components/tabs.d.ts +1 -2
- package/dist/ui/components/textarea.d.ts +0 -1
- package/dist/ui/components/tooltip.d.ts +1 -1
- package/dist/ui/index.d.ts +0 -1
- package/dist/ui/index.js +1 -1
- package/dist/vite/inject-source.d.ts +0 -1
- package/dist/vite/matcher.d.ts +2 -1
- package/dist/vite-plugin.d.ts +10 -6
- package/dist/vite-plugin.js +2 -2
- package/package.json +14 -12
- package/dist/apps/more/index.d.ts +0 -3
- package/dist/apps/more/index.js +0 -19
- package/dist/apps/more/more-app.d.ts +0 -5
- package/dist/packem_shared/Alert-H-x1JuZ0.js +0 -1
- package/dist/packem_shared/Badge-C30mDKKG.js +0 -1
- package/dist/packem_shared/Button-DODNCTPZ.js +0 -1
- package/dist/packem_shared/Card-DdI7Wn3t.js +0 -1
- package/dist/packem_shared/Icon-DWFLZkwW.js +0 -1
- package/dist/packem_shared/Input-GfbOwAkK.js +0 -1
- package/dist/packem_shared/Label-Bzi47aUf.js +0 -1
- package/dist/packem_shared/Popover-o3Vkvndp.js +0 -1
- package/dist/packem_shared/Progress-vGfFpxRn.js +0 -1
- package/dist/packem_shared/Separator-DQGeJPQg.js +0 -1
- package/dist/packem_shared/Skeleton-BYXau6jM.js +0 -1
- package/dist/packem_shared/Switch-BeC78S_T.js +0 -1
- package/dist/packem_shared/Tabs-BBc4S-2T.js +0 -1
- package/dist/packem_shared/Textarea-DvbSX13V.js +0 -1
- package/dist/packem_shared/TimelineStore-BgBrirKd.js +0 -1
- package/dist/packem_shared/Tooltip-BwK-2I9P.js +0 -1
- package/dist/packem_shared/cn-DWLJYh3h.js +0 -1
- package/dist/packem_shared/createClientRPCContext-DzKQpKTk.js +0 -1
- package/dist/packem_shared/createDevToolbarHook-DGNxqk8N.js +0 -1
- package/dist/packem_shared/createServerRPCContext-CRd6VAWp.js +0 -1
- package/dist/packem_shared/sharedToolbarStylesheet-DHHoFz2-.js +0 -2
- package/dist/packem_shared/store-BxE0w51s.js +0 -1
- package/dist/packem_shared/use-theme-CX1gG6Sv.js +0 -1
- package/dist/utils/cn.d.ts +0 -8
package/dist/rpc/server.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { ViteDevServer } from "vite";
|
|
2
2
|
import type { ServerFunctions, ServerRPCContext } from "../types/rpc.d.ts";
|
|
3
3
|
/**
|
|
4
|
-
* Creates server-side RPC context
|
|
5
|
-
* @param server Vite dev server instance
|
|
6
|
-
* @param customFunctions Custom server functions to register
|
|
7
|
-
* @param options Additional options (e.g. which editor to launch)
|
|
8
|
-
* @
|
|
4
|
+
* Creates server-side RPC context.
|
|
5
|
+
* @param server Vite dev server instance.
|
|
6
|
+
* @param customFunctions Custom server functions to register.
|
|
7
|
+
* @param options Additional options (e.g. which editor to launch).
|
|
8
|
+
* @param options.editor Editor to use for "open in editor" functionality.
|
|
9
|
+
* @returns Server RPC context.
|
|
9
10
|
*/
|
|
10
|
-
|
|
11
|
+
declare const createServerRPCContext: (server: ViteDevServer, customFunctions?: Partial<ServerFunctions>, options?: {
|
|
11
12
|
editor?: string;
|
|
12
13
|
}) => ServerRPCContext;
|
|
14
|
+
export { createServerRPCContext };
|
|
15
|
+
export default createServerRPCContext;
|
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
* Intercepts HMR events, fetch requests, and JS errors and feeds them
|
|
4
4
|
* into the timeline store so the Timeline app can display them.
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
declare const startTimelineCapture: () => void;
|
|
7
|
+
export { startTimelineCapture };
|
|
8
|
+
export default startTimelineCapture;
|
package/dist/timeline/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@
|
|
|
4
4
|
export type { TimelineEvent, TimelineEventLevel, TimelineGroup } from "../types/timeline.d.ts";
|
|
5
5
|
export { DEFAULT_TIMELINE_GROUPS } from "../types/timeline.d.ts";
|
|
6
6
|
export { startTimelineCapture } from "./capture.d.ts";
|
|
7
|
-
export {
|
|
7
|
+
export type { TimelineStore } from "./store.d.ts";
|
|
8
|
+
export { getTimelineStore } from "./store.d.ts";
|
package/dist/timeline/store.d.ts
CHANGED
|
@@ -1,52 +1,42 @@
|
|
|
1
1
|
import type { TimelineEvent, TimelineGroup } from "../types/timeline.d.ts";
|
|
2
2
|
/**
|
|
3
|
-
* Timeline store for managing events
|
|
3
|
+
* Timeline store for managing timeline events.
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
declare class TimelineStore {
|
|
6
6
|
private groups;
|
|
7
7
|
private maxEvents;
|
|
8
8
|
constructor(maxEvents?: number);
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
* @param groupId Group ID
|
|
12
|
-
* @param event Timeline event
|
|
10
|
+
* Adds an event to a group.
|
|
13
11
|
*/
|
|
14
12
|
addEvent(groupId: string, event: TimelineEvent): void;
|
|
15
13
|
/**
|
|
16
|
-
*
|
|
17
|
-
* @returns Array of timeline groups
|
|
14
|
+
* Gets all timeline groups.
|
|
18
15
|
*/
|
|
19
16
|
getGroups(): TimelineGroup[];
|
|
20
17
|
/**
|
|
21
|
-
*
|
|
22
|
-
* @param groupId Group ID
|
|
23
|
-
* @returns Array of events or empty array
|
|
18
|
+
* Gets events for a specific group.
|
|
24
19
|
*/
|
|
25
20
|
getGroupEvents(groupId: string): TimelineEvent[];
|
|
26
21
|
/**
|
|
27
|
-
*
|
|
28
|
-
* @returns Array of all events
|
|
22
|
+
* Gets all events across all groups.
|
|
29
23
|
*/
|
|
30
24
|
getAllEvents(): TimelineEvent[];
|
|
31
25
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param groupId Group ID
|
|
26
|
+
* Clears events for a specific group.
|
|
34
27
|
*/
|
|
35
28
|
clearGroup(groupId: string): void;
|
|
36
29
|
/**
|
|
37
|
-
*
|
|
30
|
+
* Clears all events from all groups.
|
|
38
31
|
*/
|
|
39
32
|
clearAll(): void;
|
|
40
33
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @param startTime Start timestamp
|
|
43
|
-
* @param endTime End timestamp
|
|
44
|
-
* @returns Array of events in range
|
|
34
|
+
* Gets events within a time range.
|
|
45
35
|
*/
|
|
46
36
|
getEventsInRange(startTime: number, endTime: number): TimelineEvent[];
|
|
47
37
|
}
|
|
48
38
|
/**
|
|
49
|
-
*
|
|
50
|
-
* @returns Timeline store instance
|
|
39
|
+
* Gets or creates the timeline store singleton instance.
|
|
51
40
|
*/
|
|
52
|
-
|
|
41
|
+
declare const getTimelineStore: () => TimelineStore;
|
|
42
|
+
export { getTimelineStore, TimelineStore };
|
|
@@ -1,102 +1,104 @@
|
|
|
1
1
|
import type { DevToolbarApp, DevToolbarAppState } from "../types/app.d.ts";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Manages the lifecycle of all registered dev-toolbar apps.
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
declare class AppManager {
|
|
6
6
|
private apps;
|
|
7
7
|
private activeAppId;
|
|
8
8
|
private initializedApps;
|
|
9
9
|
private appCanvases;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
* @param app App definition
|
|
13
|
-
* @param builtIn Whether this is a built-in app
|
|
11
|
+
* Registers an app with the toolbar.
|
|
12
|
+
* @param app App definition.
|
|
13
|
+
* @param builtIn Whether this is a built-in app.
|
|
14
14
|
*/
|
|
15
15
|
registerApp(app: DevToolbarApp, builtIn?: boolean): void;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
* @param appId App ID
|
|
17
|
+
* Unregisters an app and calls its destroy hook if initialized.
|
|
18
|
+
* @param appId App ID to unregister.
|
|
19
19
|
*/
|
|
20
20
|
unregisterApp(appId: string): Promise<void>;
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
23
|
-
* @param appId App ID
|
|
24
|
-
* @returns App state or undefined
|
|
22
|
+
* Returns the app state for a given ID.
|
|
23
|
+
* @param appId App ID to look up.
|
|
24
|
+
* @returns App state or undefined.
|
|
25
25
|
*/
|
|
26
26
|
getApp(appId: string): DevToolbarAppState | undefined;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
|
-
* @returns Array of app states
|
|
28
|
+
* Returns all registered app states.
|
|
30
29
|
*/
|
|
31
30
|
getAllApps(): DevToolbarAppState[];
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
34
|
-
* @returns Active app state or undefined
|
|
32
|
+
* Returns the currently active app state, or undefined if none is active.
|
|
35
33
|
*/
|
|
36
34
|
getActiveApp(): DevToolbarAppState | undefined;
|
|
37
35
|
/**
|
|
38
|
-
*
|
|
39
|
-
* @param appId App ID
|
|
40
|
-
* @returns Whether toggle was successful
|
|
36
|
+
* Toggles the active state of an app.
|
|
37
|
+
* @param appId App ID to toggle.
|
|
38
|
+
* @returns Whether the toggle was successful.
|
|
41
39
|
*/
|
|
42
40
|
toggleApp(appId: string): Promise<boolean>;
|
|
43
41
|
/**
|
|
44
|
-
* Directly
|
|
42
|
+
* Directly sets the active state of an action button without invoking callbacks.
|
|
45
43
|
* Use this to deactivate a button from outside the toolbar (e.g. after async work).
|
|
46
|
-
* @param appId
|
|
47
|
-
* @param active New active state
|
|
44
|
+
* @param appId The unique identifier of the app whose active state to change.
|
|
45
|
+
* @param active New active state.
|
|
48
46
|
*/
|
|
49
47
|
setAppActive(appId: string, active: boolean): void;
|
|
50
48
|
/**
|
|
51
|
-
*
|
|
52
|
-
* @
|
|
49
|
+
* Returns whether an app has already had its init() called.
|
|
50
|
+
* @param appId App ID to check.
|
|
53
51
|
*/
|
|
54
52
|
isAppInitialized(appId: string): boolean;
|
|
55
53
|
/**
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
54
|
+
* Marks an app as having been initialized.
|
|
55
|
+
* @param appId App ID to mark.
|
|
58
56
|
*/
|
|
59
57
|
markAppInitialized(appId: string): void;
|
|
60
58
|
/**
|
|
61
|
-
*
|
|
62
|
-
* @param appId App ID
|
|
63
|
-
* @returns Whether open was successful
|
|
59
|
+
* Opens an app and initializes it if necessary.
|
|
60
|
+
* @param appId App ID to open.
|
|
61
|
+
* @returns Whether the open was successful.
|
|
64
62
|
*/
|
|
65
63
|
openApp(appId: string): Promise<boolean>;
|
|
66
64
|
/**
|
|
67
|
-
*
|
|
68
|
-
* @param appId App ID
|
|
69
|
-
* @returns Whether close was successful
|
|
65
|
+
* Closes an active app.
|
|
66
|
+
* @param appId App ID to close.
|
|
67
|
+
* @returns Whether the close was successful.
|
|
70
68
|
*/
|
|
71
69
|
closeApp(appId: string): Promise<boolean>;
|
|
72
70
|
/**
|
|
73
|
-
*
|
|
74
|
-
* @param appId
|
|
75
|
-
* @param state
|
|
76
|
-
* @param level
|
|
71
|
+
* Sets a notification for an app.
|
|
72
|
+
* @param appId The unique identifier of the app to notify.
|
|
73
|
+
* @param state Whether the notification is currently visible.
|
|
74
|
+
* @param level The severity level of the notification badge.
|
|
77
75
|
*/
|
|
78
76
|
setNotification(appId: string, state: boolean, level?: "info" | "warning" | "error"): void;
|
|
79
77
|
/**
|
|
80
|
-
*
|
|
81
|
-
* @param appId
|
|
78
|
+
* Clears the notification for an app.
|
|
79
|
+
* @param appId The unique identifier of the app whose notification to clear.
|
|
82
80
|
*/
|
|
83
81
|
clearNotification(appId: string): void;
|
|
84
82
|
/**
|
|
85
|
-
*
|
|
86
|
-
* @param appId
|
|
87
|
-
* @returns Canvas element with shadow root or
|
|
83
|
+
* Returns the canvas element and shadow root for an app.
|
|
84
|
+
* @param appId The unique identifier of the app whose canvas to retrieve.
|
|
85
|
+
* @returns Canvas element with shadow root or undefined.
|
|
88
86
|
*/
|
|
89
87
|
getAppCanvas(appId: string): {
|
|
90
88
|
element: HTMLElement;
|
|
91
89
|
shadowRoot: ShadowRoot;
|
|
92
|
-
} |
|
|
90
|
+
} | undefined;
|
|
93
91
|
/**
|
|
94
|
-
*
|
|
95
|
-
* @param appId
|
|
96
|
-
* @param canvas
|
|
92
|
+
* Stores the canvas element and shadow root for an app.
|
|
93
|
+
* @param appId The unique identifier of the app whose canvas to store.
|
|
94
|
+
* @param canvas The canvas object containing the host element and its shadow root.
|
|
95
|
+
* @param canvas.element The host HTMLElement that wraps the app's shadow DOM.
|
|
96
|
+
* @param canvas.shadowRoot The ShadowRoot attached to the canvas element.
|
|
97
97
|
*/
|
|
98
98
|
setAppCanvas(appId: string, canvas: {
|
|
99
99
|
element: HTMLElement;
|
|
100
100
|
shadowRoot: ShadowRoot;
|
|
101
101
|
}): void;
|
|
102
102
|
}
|
|
103
|
+
export { AppManager };
|
|
104
|
+
export default AppManager;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComponentChildren } from "preact";
|
|
2
2
|
import type { DevToolbarAppState } from "../../types/index.d.ts";
|
|
3
3
|
interface DevPanelProps {
|
|
4
|
-
activeAppId: string |
|
|
4
|
+
activeAppId: string | undefined;
|
|
5
5
|
apps: DevToolbarAppState[];
|
|
6
6
|
onClose: () => void;
|
|
7
7
|
onToggleApp: (appId: string) => Promise<void>;
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
+
/** @jsxImportSource preact */
|
|
1
2
|
import type { ComponentChildren } from "preact";
|
|
2
|
-
interface ToolbarBarProps {
|
|
3
|
-
/**
|
|
4
|
-
* Number of custom apps to show before "more" button
|
|
5
|
-
*/
|
|
6
|
-
customAppsToShow?: number;
|
|
7
|
-
}
|
|
8
3
|
/**
|
|
9
4
|
* Toolbar bar — row of app buttons inside the pill.
|
|
10
5
|
* Left/right placement rotates the whole pill 90deg via CSS,
|
|
11
6
|
* so this always stays flex-row internally.
|
|
12
7
|
*/
|
|
13
|
-
declare const ToolbarBar: (
|
|
8
|
+
declare const ToolbarBar: () => ComponentChildren;
|
|
14
9
|
export default ToolbarBar;
|
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
/** @jsxImportSource preact */
|
|
2
1
|
import type { ComponentChildren } from "preact";
|
|
3
2
|
import type { DevToolbarAppState } from "../../types/index.d.ts";
|
|
4
3
|
interface ToolbarContainerProps {
|
|
5
4
|
/**
|
|
6
5
|
* Active app ID
|
|
7
6
|
*/
|
|
8
|
-
activeAppId: string |
|
|
7
|
+
activeAppId: string | undefined;
|
|
9
8
|
/**
|
|
10
9
|
* Initial apps
|
|
11
10
|
*/
|
|
12
11
|
apps: DevToolbarAppState[];
|
|
13
|
-
/**
|
|
14
|
-
* Number of custom apps to show
|
|
15
|
-
*/
|
|
16
|
-
customAppsToShow?: number;
|
|
17
12
|
/**
|
|
18
13
|
* Callback when notification should be cleared
|
|
19
14
|
*/
|
|
@@ -43,7 +38,6 @@ interface ToolbarContainerProps {
|
|
|
43
38
|
* @param props Component props
|
|
44
39
|
* @param props.activeAppId ID of the currently open app, or null if no app is open
|
|
45
40
|
* @param props.apps Initial array of registered app states
|
|
46
|
-
* @param props.customAppsToShow Maximum number of custom apps to show in the pill (default: 3)
|
|
47
41
|
* @param props.onClearNotification Called when an app's notification badge should be cleared
|
|
48
42
|
* @param props.onRegisterApp Called when a new app is dynamically registered
|
|
49
43
|
* @param props.onSetNotification Called when an app requests a notification badge update
|
|
@@ -51,5 +45,5 @@ interface ToolbarContainerProps {
|
|
|
51
45
|
* @param props.onUnregisterApp Called when an app is dynamically unregistered
|
|
52
46
|
* @returns Rendered toolbar component tree
|
|
53
47
|
*/
|
|
54
|
-
declare const ToolbarContainer: ({ activeAppId, apps,
|
|
48
|
+
declare const ToolbarContainer: ({ activeAppId, apps, onClearNotification, onRegisterApp, onSetNotification, onToggleApp, onUnregisterApp, }: ToolbarContainerProps) => ComponentChildren;
|
|
55
49
|
export default ToolbarContainer;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ComponentChildren } from "preact";
|
|
2
2
|
/**
|
|
3
|
-
* Shows a red error button in the toolbar when
|
|
3
|
+
* Shows a red error button in the toolbar when `@visulima/vite-overlay` errors exist.
|
|
4
4
|
* Clicking toggles the vite-overlay panel visibility.
|
|
5
5
|
*
|
|
6
6
|
* Only rendered when:
|
|
7
|
-
* -
|
|
7
|
+
* - `@visulima/vite-overlay` is installed and active (window.ErrorOverlay is defined)
|
|
8
8
|
* - At least one error is present in the history
|
|
9
9
|
*
|
|
10
10
|
* Renders with its own left separator so it stays visually grouped on the
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** @jsxImportSource preact */
|
|
1
2
|
import { createContext } from "preact";
|
|
2
3
|
import type { DevToolbarAppState, ToolbarPlacement } from "../../types/index.d.ts";
|
|
3
4
|
/**
|
|
@@ -14,29 +15,29 @@ export interface PinnedTooltip {
|
|
|
14
15
|
initialY: number;
|
|
15
16
|
}
|
|
16
17
|
/**
|
|
17
|
-
*
|
|
18
|
+
* Shared state and actions exposed by the ToolbarContext.
|
|
18
19
|
*/
|
|
19
20
|
export interface ToolbarContextState {
|
|
20
21
|
/**
|
|
21
22
|
* Currently active app ID
|
|
22
23
|
*/
|
|
23
|
-
activeAppId: string |
|
|
24
|
+
activeAppId: string | undefined;
|
|
24
25
|
/**
|
|
25
26
|
* All registered apps
|
|
26
27
|
*/
|
|
27
28
|
apps: DevToolbarAppState[];
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* Clears the notification badge for an app.
|
|
30
31
|
*/
|
|
31
32
|
clearNotification: (appId: string) => void;
|
|
32
33
|
/**
|
|
33
34
|
* Currently hovered app (has a tooltip component)
|
|
34
35
|
*/
|
|
35
|
-
hoveredApp: DevToolbarAppState |
|
|
36
|
+
hoveredApp: DevToolbarAppState | undefined;
|
|
36
37
|
/**
|
|
37
38
|
* Viewport rect of the hovered app button (for tooltip positioning)
|
|
38
39
|
*/
|
|
39
|
-
hoveredAppRect: DOMRect |
|
|
40
|
+
hoveredAppRect: DOMRect | undefined;
|
|
40
41
|
/**
|
|
41
42
|
* Whether toolbar is being dragged
|
|
42
43
|
*/
|
|
@@ -59,48 +60,48 @@ export interface ToolbarContextState {
|
|
|
59
60
|
*/
|
|
60
61
|
placement: ToolbarPlacement;
|
|
61
62
|
/**
|
|
62
|
-
*
|
|
63
|
+
* Registers an app with the toolbar.
|
|
63
64
|
*/
|
|
64
65
|
registerApp: (app: DevToolbarAppState) => void;
|
|
65
66
|
/**
|
|
66
|
-
*
|
|
67
|
+
* Sets the dragging state.
|
|
67
68
|
*/
|
|
68
69
|
setDragging: (dragging: boolean) => void;
|
|
69
70
|
/**
|
|
70
|
-
*
|
|
71
|
+
* Sets or clears the hovered app. Pass undefined to start the leave debounce.
|
|
71
72
|
*/
|
|
72
|
-
setHoveredApp: (app: DevToolbarAppState |
|
|
73
|
+
setHoveredApp: (app: DevToolbarAppState | undefined, rect?: DOMRect | undefined) => void;
|
|
73
74
|
/**
|
|
74
|
-
*
|
|
75
|
+
* Sets a notification for an app.
|
|
75
76
|
*/
|
|
76
77
|
setNotification: (appId: string, state: boolean, level?: "info" | "warning" | "error") => void;
|
|
77
78
|
/**
|
|
78
|
-
*
|
|
79
|
+
* Sets the toolbar placement.
|
|
79
80
|
*/
|
|
80
81
|
setPlacement: (placement: ToolbarPlacement) => void;
|
|
81
82
|
/**
|
|
82
|
-
*
|
|
83
|
+
* Sets toolbar visibility.
|
|
83
84
|
*/
|
|
84
85
|
setVisible: (visible: boolean) => void;
|
|
85
86
|
/**
|
|
86
|
-
*
|
|
87
|
+
* Toggles an app's active state.
|
|
87
88
|
*/
|
|
88
89
|
toggleApp: (appId: string) => Promise<void>;
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
+
* Removes a pinned tooltip by its instance id.
|
|
91
92
|
*/
|
|
92
93
|
unpinTooltip: (id: string) => void;
|
|
93
94
|
/**
|
|
94
|
-
*
|
|
95
|
+
* Unregisters an app.
|
|
95
96
|
*/
|
|
96
97
|
unregisterApp: (appId: string) => void;
|
|
97
98
|
}
|
|
98
99
|
/**
|
|
99
|
-
*
|
|
100
|
+
* Preact context object that exposes the toolbar's shared state to all child components.
|
|
100
101
|
*/
|
|
101
|
-
export declare const ToolbarContext: ReturnType<typeof createContext<ToolbarContextState |
|
|
102
|
+
export declare const ToolbarContext: ReturnType<typeof createContext<ToolbarContextState | undefined>>;
|
|
102
103
|
/**
|
|
103
|
-
*
|
|
104
|
-
* @throws Error if used outside ToolbarContext provider
|
|
104
|
+
* Accesses the toolbar context, throwing if used outside a provider.
|
|
105
|
+
* @throws Error if used outside ToolbarContext provider.
|
|
105
106
|
*/
|
|
106
107
|
export declare const useToolbarContext: () => ToolbarContextState;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { VisulimaDevTools } from "../types/global-api.d.ts";
|
|
2
2
|
import type { DevToolbarApp } from "../types/index.d.ts";
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Creates the global DevTools API implementation.
|
|
5
5
|
*/
|
|
6
6
|
export declare const createGlobalAPI: (appManager: {
|
|
7
7
|
clearNotification: (id: string) => void;
|
|
@@ -18,7 +18,7 @@ export declare const createGlobalAPI: (appManager: {
|
|
|
18
18
|
toggle: () => void;
|
|
19
19
|
}) => VisulimaDevTools;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
22
|
-
* @param api API instance
|
|
21
|
+
* Mounts the global API on the window object so it can be accessed from outside the toolbar.
|
|
22
|
+
* @param api API instance to expose globally.
|
|
23
23
|
*/
|
|
24
24
|
export declare const setupGlobalAPI: (api: VisulimaDevTools) => void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { ServerHelpers } from "../types/app.d.ts";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* @returns Server helpers instance
|
|
3
|
+
* Creates server helpers that proxy RPC calls for use within app init().
|
|
4
|
+
* @returns Server helpers instance.
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
declare const createServerHelpers: () => ServerHelpers;
|
|
7
|
+
export { createServerHelpers };
|
|
8
|
+
export default createServerHelpers;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { DevToolbarAppState } from "../../types/index.d.ts";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Exposes app management methods from the toolbar context.
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
activeAppId: string |
|
|
5
|
+
declare const useApps: () => {
|
|
6
|
+
activeAppId: string | undefined;
|
|
7
7
|
apps: DevToolbarAppState[];
|
|
8
8
|
clearNotification: (appId: string) => void;
|
|
9
9
|
registerApp: (app: DevToolbarAppState) => void;
|
|
@@ -11,3 +11,5 @@ export declare const useApps: () => {
|
|
|
11
11
|
toggleApp: (appId: string) => Promise<void>;
|
|
12
12
|
unregisterApp: (appId: string) => void;
|
|
13
13
|
};
|
|
14
|
+
export { useApps };
|
|
15
|
+
export default useApps;
|
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Keyboard shortcut bindings
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
interface KeyBindings {
|
|
5
5
|
/** Close active app / panel */
|
|
6
6
|
close: string;
|
|
7
7
|
/** Toggle toolbar panel open/closed */
|
|
8
8
|
toggle: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
declare const DEFAULT_KEYBINDINGS: KeyBindings;
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* Persistent state for the devtools panel frame.
|
|
13
13
|
*/
|
|
14
|
-
|
|
14
|
+
interface DevToolsFrameState {
|
|
15
15
|
/**
|
|
16
16
|
* Close panel on outside click
|
|
17
17
|
*/
|
|
18
18
|
closeOnOutsideClick: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Preferred editor for "Open in editor" (empty string = auto-detect)
|
|
21
|
+
*/
|
|
22
|
+
editor: string;
|
|
19
23
|
/**
|
|
20
24
|
* Panel height as viewport height percentage
|
|
21
25
|
*/
|
|
@@ -74,21 +78,33 @@ export interface DevToolsFrameState {
|
|
|
74
78
|
width: number;
|
|
75
79
|
}
|
|
76
80
|
/**
|
|
77
|
-
*
|
|
81
|
+
* Default frame state - matches Vue DevTools exactly
|
|
82
|
+
*/
|
|
83
|
+
declare const DEFAULT_STATE: DevToolsFrameState;
|
|
84
|
+
/**
|
|
85
|
+
* Return type for the useFrameState hook.
|
|
78
86
|
*/
|
|
79
|
-
|
|
87
|
+
interface UseFrameStateReturn {
|
|
80
88
|
/**
|
|
81
|
-
* Current frame state
|
|
89
|
+
* Current frame state.
|
|
82
90
|
*/
|
|
83
91
|
state: DevToolsFrameState;
|
|
84
92
|
/**
|
|
85
|
-
*
|
|
93
|
+
* Updates state with partial values.
|
|
86
94
|
*/
|
|
87
95
|
updateState: (value: Partial<DevToolsFrameState>) => void;
|
|
88
96
|
}
|
|
89
97
|
/**
|
|
90
|
-
*
|
|
98
|
+
* Manages the shared devtools frame state.
|
|
91
99
|
* All callers share the same module-level state so position, open, and other
|
|
92
100
|
* fields stay in sync regardless of how many times the hook is called.
|
|
93
101
|
*/
|
|
94
|
-
|
|
102
|
+
declare const useFrameState: () => UseFrameStateReturn;
|
|
103
|
+
/**
|
|
104
|
+
* Returns the currently selected editor preference (empty string = auto-detect).
|
|
105
|
+
* Reads from the singleton shared state, so always reflects the latest value
|
|
106
|
+
* without re-reading localStorage.
|
|
107
|
+
*/
|
|
108
|
+
declare const getEditorPreference: () => string | undefined;
|
|
109
|
+
export type { DevToolsFrameState, KeyBindings, UseFrameStateReturn };
|
|
110
|
+
export { DEFAULT_KEYBINDINGS, DEFAULT_STATE, getEditorPreference, useFrameState };
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Return type for usePanelVisible hook
|
|
2
|
+
* Return type for the usePanelVisible hook.
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
interface UsePanelVisibleReturn {
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Closes the panel.
|
|
7
7
|
*/
|
|
8
8
|
closePanel: () => void;
|
|
9
9
|
/**
|
|
10
|
-
* Whether panel is visible
|
|
10
|
+
* Whether the panel is currently visible.
|
|
11
11
|
*/
|
|
12
12
|
panelVisible: boolean;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
14
|
+
* Toggles panel visibility, optionally forcing a specific state.
|
|
15
15
|
*/
|
|
16
16
|
togglePanelVisible: (_?: unknown, newState?: boolean) => void;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Manages panel visibility with keyboard shortcut support.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
declare const usePanelVisible: () => UsePanelVisibleReturn;
|
|
22
|
+
export type { UsePanelVisibleReturn };
|
|
23
|
+
export { usePanelVisible };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { RefObject } from "preact";
|
|
2
2
|
/**
|
|
3
|
-
* Return type for usePosition hook
|
|
3
|
+
* Return type for usePosition hook.
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
interface UsePositionReturn {
|
|
6
6
|
anchorStyle: {
|
|
7
7
|
left: string;
|
|
8
8
|
top: string;
|
|
@@ -12,11 +12,13 @@ export interface UsePositionReturn {
|
|
|
12
12
|
isDragging: boolean;
|
|
13
13
|
isHidden: boolean;
|
|
14
14
|
isVertical: boolean;
|
|
15
|
-
onPointerDown: (
|
|
15
|
+
onPointerDown: (event: PointerEvent) => void;
|
|
16
16
|
panelStyle: Record<string, string>;
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
19
|
+
* Manages the draggable toolbar position, converted from Vue DevTools usePosition.
|
|
20
20
|
* @see https://github.com/vuejs/devtools/blob/main/packages/overlay/src/composables/position.ts
|
|
21
21
|
*/
|
|
22
|
-
|
|
22
|
+
declare const usePosition: (panelElement: RefObject<HTMLElement>) => UsePositionReturn;
|
|
23
|
+
export type { UsePositionReturn };
|
|
24
|
+
export { usePosition };
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
type Theme = "light" | "dark" | "system";
|
|
2
|
+
interface UseThemeReturn {
|
|
3
3
|
resolvedTheme: "light" | "dark";
|
|
4
4
|
setTheme: (newTheme: Theme) => void;
|
|
5
5
|
theme: Theme;
|
|
6
6
|
toggleTheme: () => void;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Manages the shared light/dark/system theme preference.
|
|
10
10
|
* All callers share the same module-level state so theme changes propagate
|
|
11
11
|
* to every component (ToolbarContainer, SettingsApp, etc.) immediately.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
declare const useTheme: () => UseThemeReturn;
|
|
14
|
+
export type { Theme, UseThemeReturn };
|
|
15
|
+
export { useTheme };
|