@lytjs/devtools 4.0.5 → 4.1.0

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 (38) hide show
  1. package/dist/index.cjs +5 -5
  2. package/dist/index.mjs +4 -4
  3. package/dist/tsconfig.tsbuildinfo +1 -0
  4. package/dist/types/batch-analyzer.d.ts +150 -0
  5. package/dist/types/batch-analyzer.d.ts.map +1 -0
  6. package/dist/types/component-profiler.d.ts +144 -0
  7. package/dist/types/component-profiler.d.ts.map +1 -0
  8. package/dist/types/component-tree.d.ts +69 -0
  9. package/dist/types/component-tree.d.ts.map +1 -0
  10. package/dist/types/event-panel.d.ts +129 -0
  11. package/dist/types/event-panel.d.ts.map +1 -0
  12. package/dist/types/event-tracker.d.ts +80 -0
  13. package/dist/types/event-tracker.d.ts.map +1 -0
  14. package/dist/types/hooks.d.ts +177 -0
  15. package/dist/types/hooks.d.ts.map +1 -0
  16. package/dist/types/index.d.ts +185 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/types/memory-tracker.d.ts +148 -0
  19. package/dist/types/memory-tracker.d.ts.map +1 -0
  20. package/dist/types/panel.d.ts +182 -0
  21. package/dist/types/panel.d.ts.map +1 -0
  22. package/dist/types/perf-collector.d.ts +328 -0
  23. package/dist/types/perf-collector.d.ts.map +1 -0
  24. package/dist/types/perf-panel.d.ts +231 -0
  25. package/dist/types/perf-panel.d.ts.map +1 -0
  26. package/dist/types/render-tracker.d.ts +147 -0
  27. package/dist/types/render-tracker.d.ts.map +1 -0
  28. package/dist/types/route-panel.d.ts +68 -0
  29. package/dist/types/route-panel.d.ts.map +1 -0
  30. package/dist/types/router-panel-enhanced.d.ts +118 -0
  31. package/dist/types/router-panel-enhanced.d.ts.map +1 -0
  32. package/dist/types/state-inspector.d.ts +80 -0
  33. package/dist/types/state-inspector.d.ts.map +1 -0
  34. package/dist/types/time-travel.d.ts +189 -0
  35. package/dist/types/time-travel.d.ts.map +1 -0
  36. package/dist/types/virtual-tree.d.ts +168 -0
  37. package/dist/types/virtual-tree.d.ts.map +1 -0
  38. package/package.json +5 -3
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Lyt.js DevTools — 主入口
3
+ *
4
+ * DevTools 类是开发者工具的主入口,负责:
5
+ * - 连接到 Lyt.js 应用实例
6
+ * - 初始化所有子模块(组件树、状态检查器、事件追踪、时间旅行)
7
+ * - 创建 DevTools 面板 DOM(浮动面板,可拖拽)
8
+ * - 提供 show() / hide() 切换面板显示
9
+ *
10
+ * 使用方式:
11
+ * ```ts
12
+ * import { createDevTools } from '@lytjs/devtools'
13
+ * import { createApp } from '@lytjs/core'
14
+ *
15
+ * const app = createApp({ ... })
16
+ * app.use(createDevTools())
17
+ * app.mount('#app')
18
+ * ```
19
+ *
20
+ * 纯原生零依赖实现。
21
+ */
22
+ import { DevToolsPanel } from './panel';
23
+ import { ComponentTreeInspector } from './component-tree';
24
+ import { StateInspector } from './state-inspector';
25
+ import { EventTracker } from './event-tracker';
26
+ import { TimeTravelDebugger } from './time-travel';
27
+ import { type LytApp } from './hooks';
28
+ /** DevTools 配置 */
29
+ export interface DevToolsConfig {
30
+ /** 面板初始宽度 */
31
+ width?: number;
32
+ /** 面板初始高度 */
33
+ height?: number;
34
+ /** 面板初始 X 位置 */
35
+ x?: number;
36
+ /** 面板初始 Y 位置 */
37
+ y?: number;
38
+ /** 是否在启动时自动显示面板 */
39
+ autoShow?: boolean;
40
+ /** 面板标题 */
41
+ title?: string;
42
+ }
43
+ /** Lyt 应用 API 接口(插件系统使用) */
44
+ interface AppAPI {
45
+ use: (plugin: any, ...options: any[]) => AppAPI;
46
+ provide: <T = any>(key: string | symbol, value: T) => void;
47
+ inject: <T = any>(key: string | symbol, defaultValue?: T) => T | undefined;
48
+ config: Record<string, any>;
49
+ globalProperties: Record<string, any>;
50
+ }
51
+ /**
52
+ * Lyt.js 开发者工具
53
+ *
54
+ * 提供浏览器端的调试能力,包括组件树检查、状态检查、事件追踪和时间旅行调试。
55
+ */
56
+ export declare class DevTools {
57
+ /** 调试面板 */
58
+ private panel;
59
+ /** 组件树检查器 */
60
+ private componentTree;
61
+ /** 状态检查器 */
62
+ private stateInspector;
63
+ /** 事件追踪器 */
64
+ private eventTracker;
65
+ /** 时间旅行调试器 */
66
+ private timeTravel;
67
+ /** 是否已安装 */
68
+ private _installed;
69
+ /** 应用实例引用 */
70
+ private app;
71
+ /** 配置 */
72
+ private config;
73
+ constructor(config?: DevToolsConfig);
74
+ /**
75
+ * 安装到 Lyt.js 应用
76
+ *
77
+ * @param app - Lyt.js 应用实例
78
+ */
79
+ install(app: LytApp): void;
80
+ /**
81
+ * 显示面板
82
+ */
83
+ show(): void;
84
+ /**
85
+ * 隐藏面板
86
+ */
87
+ hide(): void;
88
+ /**
89
+ * 切换面板显示状态
90
+ */
91
+ toggle(): void;
92
+ /**
93
+ * 面板是否可见
94
+ */
95
+ isVisible(): boolean;
96
+ /**
97
+ * 渲染路由标签页内容
98
+ * 当前为占位实现,后续可集成 @lytjs/router
99
+ */
100
+ private renderRouterTab;
101
+ /**
102
+ * 刷新组件树
103
+ */
104
+ refreshTree(): void;
105
+ /**
106
+ * 清除所有记录(事件和状态变化)
107
+ */
108
+ clearAllRecords(): void;
109
+ /**
110
+ * 获取面板实例(高级用法)
111
+ */
112
+ getPanel(): DevToolsPanel;
113
+ /**
114
+ * 获取组件树检查器实例
115
+ */
116
+ getComponentTree(): ComponentTreeInspector;
117
+ /**
118
+ * 获取状态检查器实例
119
+ */
120
+ getStateInspector(): StateInspector;
121
+ /**
122
+ * 获取事件追踪器实例
123
+ */
124
+ getEventTracker(): EventTracker;
125
+ /**
126
+ * 获取时间旅行调试器实例
127
+ */
128
+ getTimeTravel(): TimeTravelDebugger;
129
+ /**
130
+ * 销毁 DevTools
131
+ * 清理所有子模块和 DOM 元素
132
+ */
133
+ destroy(): void;
134
+ }
135
+ /**
136
+ * 创建 DevTools 插件
137
+ *
138
+ * 返回一个符合 Lyt.js 插件接口的对象,可通过 app.use() 安装。
139
+ *
140
+ * @param config - DevTools 配置(可选)
141
+ * @returns DevTools 插件对象
142
+ *
143
+ * @example
144
+ * ```ts
145
+ * import { createDevTools } from '@lytjs/devtools'
146
+ * import { createApp } from '@lytjs/core'
147
+ *
148
+ * const app = createApp({ ... })
149
+ * app.use(createDevTools({ width: 480, height: 640 }))
150
+ * app.mount('#app')
151
+ * ```
152
+ */
153
+ export declare function createDevTools(config?: DevToolsConfig): {
154
+ install: (app: AppAPI) => void;
155
+ };
156
+ export { DevToolsPanel } from './panel';
157
+ export { ComponentTreeInspector } from './component-tree';
158
+ export { StateInspector } from './state-inspector';
159
+ export { EventTracker } from './event-tracker';
160
+ export { TimeTravelDebugger } from './time-travel';
161
+ export { RoutePanel } from './route-panel';
162
+ export { PerfPanel } from './perf-panel';
163
+ export { PerformanceCollector } from './perf-collector';
164
+ export { ComponentProfiler } from './component-profiler';
165
+ export { EventPanel } from './event-panel';
166
+ export { RouterPanel } from './router-panel-enhanced';
167
+ export { VirtualComponentTree } from './virtual-tree';
168
+ export { MemoryTracker } from './memory-tracker';
169
+ export { RenderTracker } from './render-tracker';
170
+ export { BatchAnalyzer } from './batch-analyzer';
171
+ export { connectToApp, disconnect, getAllComponents, getRootComponent, getComponentById, getChildComponents, getEventRecords, getStateChangeRecords, getComponentStateChanges, getComponentEvents, selectComponent, getSelectedComponent, getSelectedComponentId, setComponentState, refreshComponentTree, clearRecords, isAppConnected, getComponentCount, } from './hooks';
172
+ export type { TabType } from './panel';
173
+ export type { ComponentInfo, EventRecord, StateChangeRecord, DevToolsCallbacks, LytApp, } from './hooks';
174
+ export type { StateSnapshot, } from './time-travel';
175
+ export type { RouteHistoryEntry, RoutePanelConfig, } from './route-panel';
176
+ export type { PerfEntry, EnhancedPerfPanelConfig, } from './perf-panel';
177
+ export type { Metric, FCPMetric, INPMetric, RenderMetric, UpdateFrequencyMetric, MemoryMetric, CustomMarkMetric, FPSMetric, PerformanceReport, } from './perf-collector';
178
+ export type { RenderRecord, ProfileResult, } from './component-profiler';
179
+ export type { CapturedEvent, EventPanelConfig, } from './event-panel';
180
+ export type { RouteLocation, RouteNavigation, RouterPanelConfig, } from './router-panel-enhanced';
181
+ export type { ComponentTreeNode, VirtualTreeOptions, } from './virtual-tree';
182
+ export type { MemorySnapshot, MemoryTrendPoint, MemoryLeakResult, MemoryReport, MemoryTrackerConfig, } from './memory-tracker';
183
+ export type { RenderRecord as RenderTrackerRecord, SlowRenderEntry, RenderComponentStats, RenderStats as RenderTrackerStats, RenderTimelineEntry, RenderTrackerConfig, } from './render-tracker';
184
+ export type { BatchRecord, BatchNameStats, BatchStats, AnomalousBatch, BatchAnalyzerConfig, } from './batch-analyzer';
185
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Lyt.js DevTools - 内存使用追踪器
3
+ *
4
+ * 追踪内存使用情况,提供内存趋势分析、泄漏检测和内存报告生成。
5
+ * 使用环形缓冲区限制内存占用。
6
+ *
7
+ * 纯原生零依赖实现。
8
+ */
9
+ /** 内存快照 */
10
+ export interface MemorySnapshot {
11
+ /** 快照时间戳 */
12
+ timestamp: number;
13
+ /** 已使用堆大小 (bytes) */
14
+ usedJSHeapSize: number;
15
+ /** 总堆大小 (bytes) */
16
+ totalJSHeapSize: number;
17
+ /** 堆大小上限 (bytes) */
18
+ jsHeapSizeLimit: number;
19
+ /** 快照序号 */
20
+ index: number;
21
+ }
22
+ /** 内存趋势数据点 */
23
+ export interface MemoryTrendPoint {
24
+ /** 时间戳 */
25
+ timestamp: number;
26
+ /** 已使用堆大小 (bytes) */
27
+ usedJSHeapSize: number;
28
+ /** 与前一个快照的变化量 (bytes) */
29
+ delta: number;
30
+ /** 使用率百分比 (0-100) */
31
+ usagePercent: number;
32
+ }
33
+ /** 内存泄漏检测结果 */
34
+ export interface MemoryLeakResult {
35
+ /** 是否存在可能的内存泄漏 */
36
+ hasLeak: boolean;
37
+ /** 泄漏严重程度: 'none' | 'low' | 'medium' | 'high' */
38
+ severity: 'none' | 'low' | 'medium' | 'high';
39
+ /** 泄漏描述 */
40
+ description: string;
41
+ /** 分析的快照数量 */
42
+ snapshotCount: number;
43
+ /** 增长速率 (bytes/s) */
44
+ growthRate: number;
45
+ /** 线性回归 R^2 值(越接近 1 越可能是线性增长) */
46
+ rSquared: number;
47
+ }
48
+ /** 内存报告 */
49
+ export interface MemoryReport {
50
+ /** 报告生成时间 */
51
+ generatedAt: number;
52
+ /** 当前快照 */
53
+ current: MemorySnapshot | null;
54
+ /** 峰值使用量 (bytes) */
55
+ peakUsage: number;
56
+ /** 峰值使用量时间戳 */
57
+ peakTimestamp: number;
58
+ /** 平均使用量 (bytes) */
59
+ averageUsage: number;
60
+ /** 最低使用量 (bytes) */
61
+ minUsage: number;
62
+ /** 总增长量 (bytes),第一个快照到最后一个快照 */
63
+ totalGrowth: number;
64
+ /** 趋势数据 */
65
+ trend: MemoryTrendPoint[];
66
+ /** 泄漏检测结果 */
67
+ leakDetection: MemoryLeakResult;
68
+ /** 快照总数 */
69
+ snapshotCount: number;
70
+ }
71
+ /** 内存追踪器配置 */
72
+ export interface MemoryTrackerConfig {
73
+ /** 环形缓冲区容量,默认 100 */
74
+ bufferSize?: number;
75
+ /** 泄漏检测的增长速率阈值 (bytes/s),默认 1024 */
76
+ leakGrowthThreshold?: number;
77
+ /** 泄漏检测的 R^2 阈值,默认 0.7 */
78
+ leakRSquaredThreshold?: number;
79
+ /** 泄漏检测所需最少快照数,默认 5 */
80
+ leakMinSnapshots?: number;
81
+ }
82
+ /**
83
+ * 内存使用追踪器
84
+ *
85
+ * 追踪内存使用情况,提供趋势分析、泄漏检测和报告生成。
86
+ */
87
+ export declare class MemoryTracker {
88
+ /** 内存快照缓冲区 */
89
+ private snapshots;
90
+ /** 快照计数器(单调递增) */
91
+ private counter;
92
+ /** 配置 */
93
+ private readonly config;
94
+ constructor(config?: MemoryTrackerConfig);
95
+ /**
96
+ * 记录内存快照
97
+ *
98
+ * 如果浏览器支持 performance.memory,则自动采集;
99
+ * 否则使用传入的值或返回 null。
100
+ *
101
+ * @param usedJSHeapSize - 已使用堆大小 (bytes),可选
102
+ * @param totalJSHeapSize - 总堆大小 (bytes),可选
103
+ * @param jsHeapSizeLimit - 堆大小上限 (bytes),可选
104
+ * @returns 记录的快照,如果无法获取内存信息则返回 null
105
+ */
106
+ trackMemoryUsage(usedJSHeapSize?: number, totalJSHeapSize?: number, jsHeapSizeLimit?: number, timestamp?: number): MemorySnapshot | null;
107
+ /**
108
+ * 获取内存趋势数据
109
+ *
110
+ * @returns 趋势数据点数组
111
+ */
112
+ getMemoryTrend(): MemoryTrendPoint[];
113
+ /**
114
+ * 检测可能的内存泄漏
115
+ *
116
+ * 使用线性回归分析内存增长趋势,结合增长速率判断是否存在泄漏。
117
+ *
118
+ * @returns 泄漏检测结果
119
+ */
120
+ detectMemoryLeak(): MemoryLeakResult;
121
+ /**
122
+ * 生成内存报告
123
+ *
124
+ * @returns 内存报告
125
+ */
126
+ getMemoryReport(): MemoryReport;
127
+ /**
128
+ * 获取所有快照
129
+ *
130
+ * @returns 快照数组
131
+ */
132
+ getSnapshots(): MemorySnapshot[];
133
+ /**
134
+ * 获取快照数量
135
+ *
136
+ * @returns 快照数量
137
+ */
138
+ getSnapshotCount(): number;
139
+ /**
140
+ * 清除所有快照
141
+ */
142
+ clear(): void;
143
+ /**
144
+ * 销毁追踪器
145
+ */
146
+ destroy(): void;
147
+ }
148
+ //# sourceMappingURL=memory-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-tracker.d.ts","sourceRoot":"","sources":["../../src/memory-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,WAAW;AACX,MAAM,WAAW,cAAc;IAC7B,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED,cAAc;AACd,MAAM,WAAW,gBAAgB;IAC/B,UAAU;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAe;AACf,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC7C,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,aAAa;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,aAAa;IACb,aAAa,EAAE,gBAAgB,CAAC;IAChC,WAAW;IACX,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,cAAc;AACd,MAAM,WAAW,mBAAmB;IAClC,qBAAqB;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0BAA0B;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAyED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,cAAc;IACd,OAAO,CAAC,SAAS,CAA6B;IAC9C,kBAAkB;IAClB,OAAO,CAAC,OAAO,CAAa;IAC5B,SAAS;IACT,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE3C,MAAM,CAAC,EAAE,mBAAmB;IAcxC;;;;;;;;;;OAUG;IACH,gBAAgB,CACd,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,MAAM,EACxB,eAAe,CAAC,EAAE,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,GAAG,IAAI;IA2BxB;;;;OAIG;IACH,cAAc,IAAI,gBAAgB,EAAE;IAqBpC;;;;;;OAMG;IACH,gBAAgB,IAAI,gBAAgB;IAmFpC;;;;OAIG;IACH,eAAe,IAAI,YAAY;IAmD/B;;;;OAIG;IACH,YAAY,IAAI,cAAc,EAAE;IAIhC;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Lyt.js DevTools — 调试面板 UI
3
+ *
4
+ * 创建和管理浮动调试面板,纯 DOM 实现,不依赖任何 UI 框架。
5
+ *
6
+ * 核心功能:
7
+ * - DevToolsPanel 类:创建和管理调试面板
8
+ * - 浮动面板 UI(纯 DOM 创建)
9
+ * - 顶部标签栏:组件树 / 状态 / 事件 / 路由
10
+ * - 内容区域:根据选中标签显示不同内容
11
+ * - 底部状态栏:显示当前选中组件信息
12
+ * - 面板可拖拽(mousedown/mousemove/mouseup)
13
+ * - 面板可折叠/展开
14
+ * - 暗色主题样式(内联 CSS)
15
+ * - 面板大小可调整
16
+ *
17
+ * 纯原生零依赖实现。
18
+ */
19
+ /** 标签页类型 */
20
+ export type TabType = 'components' | 'state' | 'events' | 'router';
21
+ /** 面板配置 */
22
+ export interface PanelConfig {
23
+ /** 面板初始宽度 */
24
+ width?: number;
25
+ /** 面板初始高度 */
26
+ height?: number;
27
+ /** 面板初始 X 位置 */
28
+ x?: number;
29
+ /** 面板初始 Y 位置 */
30
+ y?: number;
31
+ /** 面板最小宽度 */
32
+ minWidth?: number;
33
+ /** 面板最小高度 */
34
+ minHeight?: number;
35
+ /** 面板标题 */
36
+ title?: string;
37
+ }
38
+ /** 标签页内容渲染器 */
39
+ type TabContentRenderer = (container: HTMLElement) => void;
40
+ /**
41
+ * DevTools 调试面板
42
+ *
43
+ * 创建和管理浮动调试面板,支持拖拽、折叠、大小调整等功能。
44
+ */
45
+ export declare class DevToolsPanel {
46
+ /** 面板根 DOM 元素 */
47
+ private panelEl;
48
+ /** 标题栏元素 */
49
+ private headerEl;
50
+ /** 标签栏元素 */
51
+ private tabsEl;
52
+ /** 内容区域元素 */
53
+ private contentEl;
54
+ /** 底部状态栏元素 */
55
+ private statusbarEl;
56
+ /** 当前激活的标签 */
57
+ private activeTab;
58
+ /** 标签页内容渲染器映射 */
59
+ private tabRenderers;
60
+ /** 面板是否可见 */
61
+ private _visible;
62
+ /** 面板是否折叠 */
63
+ private _collapsed;
64
+ /** 面板配置 */
65
+ private config;
66
+ /** 拖拽状态 */
67
+ private dragState;
68
+ /** 调整大小状态 */
69
+ private resizeState;
70
+ /** 样式元素引用 */
71
+ private styleEl;
72
+ /** 状态栏左侧文本 */
73
+ private statusLeftEl;
74
+ /** 状态栏右侧文本 */
75
+ private statusRightEl;
76
+ /** 高亮覆盖层 */
77
+ private highlightOverlay;
78
+ /** 调整大小手柄 */
79
+ private _resizeHandle;
80
+ constructor(config?: PanelConfig);
81
+ /**
82
+ * 创建面板 DOM 结构,并返回所有元素的引用
83
+ */
84
+ private createPanelElementWithRefs;
85
+ /**
86
+ * 创建面板 DOM 结构(向后兼容)
87
+ */
88
+ private createPanelElement;
89
+ /**
90
+ * 创建非浏览器环境下的 mock 面板元素
91
+ */
92
+ /**
93
+ * 创建非浏览器环境下的 mock 面板元素
94
+ */
95
+ private createMockPanelElement;
96
+ /**
97
+ * 切换标签页
98
+ */
99
+ switchTab(tabId: TabType): void;
100
+ /**
101
+ * 注册标签页内容渲染器
102
+ */
103
+ registerTabRenderer(tabId: TabType, renderer: TabContentRenderer): void;
104
+ /**
105
+ * 渲染当前标签页内容
106
+ */
107
+ renderContent(): void;
108
+ /**
109
+ * 获取当前激活的标签页 ID
110
+ */
111
+ getActiveTab(): TabType;
112
+ /**
113
+ * 获取内容区域 DOM 元素
114
+ */
115
+ getContentElement(): HTMLElement;
116
+ /**
117
+ * 显示面板
118
+ */
119
+ show(): void;
120
+ /**
121
+ * 隐藏面板
122
+ */
123
+ hide(): void;
124
+ /**
125
+ * 切换面板显示状态
126
+ */
127
+ toggle(): void;
128
+ /**
129
+ * 面板是否可见
130
+ */
131
+ isVisible(): boolean;
132
+ /**
133
+ * 切换折叠状态
134
+ */
135
+ toggleCollapse(): void;
136
+ /**
137
+ * 是否折叠
138
+ */
139
+ isCollapsed(): boolean;
140
+ /**
141
+ * 绑定拖拽事件
142
+ */
143
+ private bindDragEvents;
144
+ /**
145
+ * 绑定调整大小事件
146
+ */
147
+ private bindResizeEvents;
148
+ /**
149
+ * 绑定键盘事件
150
+ */
151
+ private bindKeyboardEvents;
152
+ /**
153
+ * 窗口大小变化时调整面板位置
154
+ */
155
+ private onWindowResize;
156
+ /**
157
+ * 更新状态栏左侧文本
158
+ */
159
+ setStatusLeft(html: string): void;
160
+ /**
161
+ * 更新状态栏右侧文本
162
+ */
163
+ setStatusRight(text: string): void;
164
+ /**
165
+ * 设置连接状态
166
+ */
167
+ setConnected(connected: boolean): void;
168
+ /**
169
+ * 高亮指定 DOM 元素
170
+ */
171
+ highlightElement(el: Element | null): void;
172
+ /**
173
+ * 清除高亮
174
+ */
175
+ clearHighlight(): void;
176
+ /**
177
+ * 销毁面板,清理所有 DOM 和事件
178
+ */
179
+ destroy(): void;
180
+ }
181
+ export {};
182
+ //# sourceMappingURL=panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.d.ts","sourceRoot":"","sources":["../../src/panel.ts"],"names":[],"mappings":"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"}