@decido/shell-vscode-core 1.0.0 → 4.0.1
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 +31 -0
- package/README.md +31 -0
- package/package.json +2 -2
- package/dist/appState.d.ts +0 -23
- package/dist/appState.d.ts.map +0 -1
- package/dist/appState.js +0 -138
- package/dist/core/AIService.d.ts +0 -33
- package/dist/core/AIService.d.ts.map +0 -1
- package/dist/core/AIService.js +0 -73
- package/dist/core/ApiService.d.ts +0 -34
- package/dist/core/ApiService.d.ts.map +0 -1
- package/dist/core/ApiService.js +0 -32
- package/dist/core/AuthService.d.ts +0 -31
- package/dist/core/AuthService.d.ts.map +0 -1
- package/dist/core/AuthService.js +0 -56
- package/dist/core/BaseService.d.ts +0 -29
- package/dist/core/BaseService.d.ts.map +0 -1
- package/dist/core/BaseService.js +0 -33
- package/dist/core/CalendarService.d.ts +0 -15
- package/dist/core/CalendarService.d.ts.map +0 -1
- package/dist/core/CalendarService.js +0 -32
- package/dist/core/CommandService.d.ts +0 -25
- package/dist/core/CommandService.d.ts.map +0 -1
- package/dist/core/CommandService.js +0 -52
- package/dist/core/DebugPanelService.d.ts +0 -12
- package/dist/core/DebugPanelService.d.ts.map +0 -1
- package/dist/core/DebugPanelService.js +0 -29
- package/dist/core/DebugService.d.ts +0 -57
- package/dist/core/DebugService.d.ts.map +0 -1
- package/dist/core/DebugService.js +0 -134
- package/dist/core/EventBus.d.ts +0 -32
- package/dist/core/EventBus.d.ts.map +0 -1
- package/dist/core/EventBus.js +0 -51
- package/dist/core/EventHandler.d.ts +0 -3
- package/dist/core/EventHandler.d.ts.map +0 -1
- package/dist/core/EventHandler.js +0 -82
- package/dist/core/GamificationService.d.ts +0 -19
- package/dist/core/GamificationService.d.ts.map +0 -1
- package/dist/core/GamificationService.js +0 -102
- package/dist/core/HookService.d.ts +0 -34
- package/dist/core/HookService.d.ts.map +0 -1
- package/dist/core/HookService.js +0 -64
- package/dist/core/LayoutService.d.ts +0 -61
- package/dist/core/LayoutService.d.ts.map +0 -1
- package/dist/core/LayoutService.js +0 -223
- package/dist/core/ModalService.d.ts +0 -21
- package/dist/core/ModalService.d.ts.map +0 -1
- package/dist/core/ModalService.js +0 -71
- package/dist/core/NotificationService.d.ts +0 -7
- package/dist/core/NotificationService.d.ts.map +0 -1
- package/dist/core/NotificationService.js +0 -42
- package/dist/core/RouterService.d.ts +0 -13
- package/dist/core/RouterService.d.ts.map +0 -1
- package/dist/core/RouterService.js +0 -54
- package/dist/core/ServiceContainer.d.ts +0 -18
- package/dist/core/ServiceContainer.d.ts.map +0 -1
- package/dist/core/ServiceContainer.js +0 -27
- package/dist/core/ShortcutService.d.ts +0 -17
- package/dist/core/ShortcutService.d.ts.map +0 -1
- package/dist/core/ShortcutService.js +0 -37
- package/dist/core/StorageService.d.ts +0 -36
- package/dist/core/StorageService.d.ts.map +0 -1
- package/dist/core/StorageService.js +0 -101
- package/dist/core/ThemeService.d.ts +0 -12
- package/dist/core/ThemeService.d.ts.map +0 -1
- package/dist/core/ThemeService.js +0 -60
- package/dist/core/WebSocketService.d.ts +0 -16
- package/dist/core/WebSocketService.d.ts.map +0 -1
- package/dist/core/WebSocketService.js +0 -22
- package/dist/core/api.d.ts +0 -70
- package/dist/core/api.d.ts.map +0 -1
- package/dist/core/api.js +0 -1
- package/dist/core/app/ModuleManager copy.d.ts +0 -23
- package/dist/core/app/ModuleManager copy.js +0 -52
- package/dist/core/app/ModuleManager.d.ts +0 -60
- package/dist/core/app/ModuleManager.d.ts.map +0 -1
- package/dist/core/app/ModuleManager.js +0 -217
- package/dist/core/app/apiFactory.d.ts +0 -4
- package/dist/core/app/apiFactory.d.ts.map +0 -1
- package/dist/core/app/apiFactory.js +0 -120
- package/dist/core/app/commandManager.d.ts +0 -3
- package/dist/core/app/commandManager.d.ts.map +0 -1
- package/dist/core/app/commandManager.js +0 -195
- package/dist/core/app/moduleLoader.d.ts +0 -11
- package/dist/core/app/moduleLoader.d.ts.map +0 -1
- package/dist/core/app/moduleLoader.js +0 -30
- package/dist/core/app/routeManager.d.ts +0 -2
- package/dist/core/app/routeManager.d.ts.map +0 -1
- package/dist/core/app/routeManager.js +0 -7
- package/dist/core/index.d.ts +0 -16
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -15
- package/dist/core/layout/dragDropManager.d.ts +0 -8
- package/dist/core/layout/dragDropManager.d.ts.map +0 -1
- package/dist/core/layout/dragDropManager.js +0 -8
- package/dist/core/layout/paneManager.d.ts +0 -7
- package/dist/core/layout/paneManager.d.ts.map +0 -1
- package/dist/core/layout/paneManager.js +0 -7
- package/dist/core/layout/renderer.d.ts +0 -8
- package/dist/core/layout/renderer.d.ts.map +0 -1
- package/dist/core/layout/renderer.js +0 -8
- package/dist/core/layout/resizeManager.d.ts +0 -5
- package/dist/core/layout/resizeManager.d.ts.map +0 -1
- package/dist/core/layout/resizeManager.js +0 -5
- package/dist/core/signals.d.ts +0 -20
- package/dist/core/signals.d.ts.map +0 -1
- package/dist/core/signals.js +0 -66
- package/dist/core/uiState.d.ts +0 -9
- package/dist/core/uiState.d.ts.map +0 -1
- package/dist/core/uiState.js +0 -11
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -15
- package/dist/lib/local-db.d.ts +0 -43
- package/dist/lib/local-db.d.ts.map +0 -1
- package/dist/lib/local-db.js +0 -23
- package/dist/lib/sync-service.d.ts +0 -7
- package/dist/lib/sync-service.d.ts.map +0 -1
- package/dist/lib/sync-service.js +0 -41
- package/dist/platform/ILayoutService.d.ts +0 -63
- package/dist/platform/ILayoutService.d.ts.map +0 -1
- package/dist/platform/ILayoutService.js +0 -1
- package/dist/platform/IRenderer.d.ts +0 -16
- package/dist/platform/IRenderer.d.ts.map +0 -1
- package/dist/platform/IRenderer.js +0 -1
- package/dist/platform/ServiceRegistry.d.ts +0 -43
- package/dist/platform/ServiceRegistry.d.ts.map +0 -1
- package/dist/platform/ServiceRegistry.js +0 -2
- package/dist/platform/extensionPoints.d.ts +0 -70
- package/dist/platform/extensionPoints.d.ts.map +0 -1
- package/dist/platform/extensionPoints.js +0 -22
- package/dist/platform/index.d.ts +0 -5
- package/dist/platform/index.d.ts.map +0 -1
- package/dist/platform/index.js +0 -4
- package/dist/stores/editorStore.d.ts +0 -5
- package/dist/stores/editorStore.d.ts.map +0 -1
- package/dist/stores/editorStore.js +0 -4
- package/dist/stores/gamificationStore.d.ts +0 -3
- package/dist/stores/gamificationStore.d.ts.map +0 -1
- package/dist/stores/gamificationStore.js +0 -2
- package/dist/stores/historyStore.d.ts +0 -12
- package/dist/stores/historyStore.d.ts.map +0 -1
- package/dist/stores/historyStore.js +0 -6
- package/dist/stores/workspaceStore.d.ts +0 -13
- package/dist/stores/workspaceStore.d.ts.map +0 -1
- package/dist/stores/workspaceStore.js +0 -6
- package/dist/types/app.d.ts +0 -31
- package/dist/types/app.d.ts.map +0 -1
- package/dist/types/app.js +0 -1
- package/dist/types/debug.d.ts +0 -68
- package/dist/types/debug.d.ts.map +0 -1
- package/dist/types/debug.js +0 -1
- package/dist/types/entities.d.ts +0 -42
- package/dist/types/entities.js +0 -2
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -3
- package/dist/types/modules.d.ts +0 -66
- package/dist/types/modules.js +0 -2
- package/dist/types/platform.d.ts +0 -95
- package/dist/types/platform.d.ts.map +0 -1
- package/dist/types/platform.js +0 -2
- package/dist/ui/Palette.d.ts +0 -38
- package/dist/ui/Palette.d.ts.map +0 -1
- package/dist/ui/Palette.js +0 -144
- package/dist/ui/debug-panel/dragAndResize.d.ts +0 -6
- package/dist/ui/debug-panel/dragAndResize.d.ts.map +0 -1
- package/dist/ui/debug-panel/dragAndResize.js +0 -140
- package/dist/ui/debug-panel/eventBinder.d.ts +0 -5
- package/dist/ui/debug-panel/eventBinder.d.ts.map +0 -1
- package/dist/ui/debug-panel/eventBinder.js +0 -120
- package/dist/ui/debug-panel/layoutManager.d.ts +0 -16
- package/dist/ui/debug-panel/layoutManager.d.ts.map +0 -1
- package/dist/ui/debug-panel/layoutManager.js +0 -73
- package/dist/ui/debug-panel/main.d.ts +0 -12
- package/dist/ui/debug-panel/main.d.ts.map +0 -1
- package/dist/ui/debug-panel/main.js +0 -42
- package/dist/ui/debug-panel/panelManager.d.ts +0 -17
- package/dist/ui/debug-panel/panelManager.d.ts.map +0 -1
- package/dist/ui/debug-panel/panelManager.js +0 -123
- package/dist/ui/debug-panel/renderer.d.ts +0 -4
- package/dist/ui/debug-panel/renderer.d.ts.map +0 -1
- package/dist/ui/debug-panel/renderer.js +0 -181
- package/dist/ui/debug-panel/services.d.ts +0 -4
- package/dist/ui/debug-panel/services.d.ts.map +0 -1
- package/dist/ui/debug-panel/services.js +0 -134
- package/dist/ui/debug-panel/settings.d.ts +0 -5
- package/dist/ui/debug-panel/settings.d.ts.map +0 -1
- package/dist/ui/debug-panel/settings.js +0 -35
- package/dist/ui/debug-panel/state.d.ts +0 -128
- package/dist/ui/debug-panel/state.d.ts.map +0 -1
- package/dist/ui/debug-panel/state.js +0 -42
- package/dist/ui/debug-panel/stateEditor.d.ts +0 -9
- package/dist/ui/debug-panel/stateEditor.d.ts.map +0 -1
- package/dist/ui/debug-panel/stateEditor.js +0 -158
- package/dist/ui/debug-panel/types.d.ts +0 -68
- package/dist/ui/debug-panel/types.d.ts.map +0 -1
- package/dist/ui/debug-panel/types.js +0 -1
- package/dist/ui/debug-panel/ui.d.ts +0 -10
- package/dist/ui/debug-panel/ui.d.ts.map +0 -1
- package/dist/ui/debug-panel/ui.js +0 -199
- package/dist/ui/debug-panel/utils.d.ts +0 -16
- package/dist/ui/debug-panel/utils.d.ts.map +0 -1
- package/dist/ui/debug-panel/utils.js +0 -104
- package/dist/utils.d.ts +0 -22
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -58
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { createEffect } from '../../core/signals.js';
|
|
2
|
-
import { dragState, setDragState, resizeState, setResizeState, highestZIndex, setHighestZIndex } from './state.js';
|
|
3
|
-
import { panelConfigs, setPanelConfigs } from './panelManager.js';
|
|
4
|
-
// ===================================================================
|
|
5
|
-
// Función Principal (Autónoma y sin dependencias)
|
|
6
|
-
// ===================================================================
|
|
7
|
-
/**
|
|
8
|
-
* Registra los listeners globales para arrastrar y redimensionar.
|
|
9
|
-
* Se llama una sola vez al iniciar la aplicación.
|
|
10
|
-
*/
|
|
11
|
-
export function bindGlobalDragAndResizeEvents() {
|
|
12
|
-
document.addEventListener('mousedown', handleMouseDown);
|
|
13
|
-
document.addEventListener('mousemove', handleMouseMove);
|
|
14
|
-
document.addEventListener('mouseup', handleMouseUp);
|
|
15
|
-
// Efecto reactivo para cambiar el cursor del body
|
|
16
|
-
createEffect(() => {
|
|
17
|
-
const isDragging = dragState().isDragging;
|
|
18
|
-
const currentResize = resizeState();
|
|
19
|
-
if (isDragging) {
|
|
20
|
-
document.body.style.cursor = 'grabbing';
|
|
21
|
-
}
|
|
22
|
-
else if (currentResize.isResizing) {
|
|
23
|
-
document.body.style.cursor = getCursorForDirection(currentResize.handle);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
document.body.style.cursor = '';
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
// ===================================================================
|
|
31
|
-
// Manejadores de Eventos (Solo actualizan el estado)
|
|
32
|
-
// ===================================================================
|
|
33
|
-
function handleMouseDown(e) {
|
|
34
|
-
const target = e.target;
|
|
35
|
-
const header = target.closest('.debug-header');
|
|
36
|
-
const resizeHandle = target.closest('.resize-handle');
|
|
37
|
-
if (!header && !resizeHandle)
|
|
38
|
-
return;
|
|
39
|
-
// Ignorar clics en los botones del header
|
|
40
|
-
if (header && target.closest('.debug-controls'))
|
|
41
|
-
return;
|
|
42
|
-
const panelEl = target.closest('.debug-panel');
|
|
43
|
-
if (!panelEl)
|
|
44
|
-
return;
|
|
45
|
-
const panelId = panelEl.id.replace('debug-panel-', '');
|
|
46
|
-
// 1. Traer al frente actualizando la configuración de los paneles
|
|
47
|
-
setHighestZIndex(prev => prev + 1);
|
|
48
|
-
setPanelConfigs(configs => configs.map(p => (p.id === panelId ? { ...p, zIndex: highestZIndex() } : p)));
|
|
49
|
-
// 2. Iniciar el estado de la operación (arrastrar o redimensionar)
|
|
50
|
-
if (header) {
|
|
51
|
-
const startPanelPos = panelConfigs().find(p => p.id === panelId).position;
|
|
52
|
-
setDragState({
|
|
53
|
-
isDragging: true,
|
|
54
|
-
activePanel: panelId,
|
|
55
|
-
startPos: { x: e.clientX, y: e.clientY },
|
|
56
|
-
startPanelPos: startPanelPos,
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
else if (resizeHandle) {
|
|
60
|
-
const panelConfig = panelConfigs().find(p => p.id === panelId);
|
|
61
|
-
setResizeState({
|
|
62
|
-
isResizing: true,
|
|
63
|
-
activePanel: panelId,
|
|
64
|
-
handle: resizeHandle.dataset.direction,
|
|
65
|
-
startPos: { x: e.clientX, y: e.clientY },
|
|
66
|
-
startSize: panelConfig.size,
|
|
67
|
-
startPanelPos: panelConfig.position,
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
function handleMouseMove(e) {
|
|
72
|
-
const currentDrag = dragState();
|
|
73
|
-
const currentResize = resizeState();
|
|
74
|
-
if (currentDrag.isDragging && currentDrag.activePanel) {
|
|
75
|
-
const deltaX = e.clientX - currentDrag.startPos.x;
|
|
76
|
-
const deltaY = e.clientY - currentDrag.startPos.y;
|
|
77
|
-
const newX = currentDrag.startPanelPos.x + deltaX;
|
|
78
|
-
const newY = currentDrag.startPanelPos.y + deltaY;
|
|
79
|
-
// Actualiza la posición en la configuración. El DOM reaccionará a esto.
|
|
80
|
-
setPanelConfigs(configs => configs.map(p => {
|
|
81
|
-
if (p.id === currentDrag.activePanel) {
|
|
82
|
-
const maxX = window.innerWidth - p.size.width;
|
|
83
|
-
const maxY = window.innerHeight - p.size.height;
|
|
84
|
-
return { ...p, position: {
|
|
85
|
-
x: Math.max(0, Math.min(newX, maxX)),
|
|
86
|
-
y: Math.max(0, Math.min(newY, maxY))
|
|
87
|
-
} };
|
|
88
|
-
}
|
|
89
|
-
return p;
|
|
90
|
-
}));
|
|
91
|
-
}
|
|
92
|
-
else if (currentResize.isResizing && currentResize.activePanel) {
|
|
93
|
-
const deltaX = e.clientX - currentResize.startPos.x;
|
|
94
|
-
const deltaY = e.clientY - currentResize.startPos.y;
|
|
95
|
-
// Actualiza tamaño y posición en la configuración. El DOM reaccionará.
|
|
96
|
-
setPanelConfigs(configs => configs.map(p => {
|
|
97
|
-
if (p.id === currentResize.activePanel) {
|
|
98
|
-
let newWidth = currentResize.startSize.width;
|
|
99
|
-
let newHeight = currentResize.startSize.height;
|
|
100
|
-
let newLeft = currentResize.startPanelPos.x;
|
|
101
|
-
let newTop = currentResize.startPanelPos.y;
|
|
102
|
-
const handle = currentResize.handle;
|
|
103
|
-
if (handle?.includes('e'))
|
|
104
|
-
newWidth += deltaX;
|
|
105
|
-
if (handle?.includes('w')) {
|
|
106
|
-
newWidth -= deltaX;
|
|
107
|
-
newLeft += deltaX;
|
|
108
|
-
}
|
|
109
|
-
if (handle?.includes('s'))
|
|
110
|
-
newHeight += deltaY;
|
|
111
|
-
if (handle?.includes('n')) {
|
|
112
|
-
newHeight -= deltaY;
|
|
113
|
-
newTop += deltaY;
|
|
114
|
-
}
|
|
115
|
-
newWidth = Math.max(300, newWidth);
|
|
116
|
-
newHeight = Math.max(200, newHeight);
|
|
117
|
-
return { ...p, size: { width: newWidth, height: newHeight }, position: { x: newLeft, y: newTop } };
|
|
118
|
-
}
|
|
119
|
-
return p;
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
function handleMouseUp() {
|
|
124
|
-
// Simplemente resetea los estados de las operaciones.
|
|
125
|
-
if (dragState().isDragging) {
|
|
126
|
-
setDragState({ isDragging: false, activePanel: undefined, startPos: { x: 0, y: 0 }, startPanelPos: { x: 0, y: 0 } });
|
|
127
|
-
}
|
|
128
|
-
if (resizeState().isResizing) {
|
|
129
|
-
setResizeState({ isResizing: false, activePanel: undefined, handle: undefined, startPos: { x: 0, y: 0 }, startSize: { width: 0, height: 0 }, startPanelPos: { x: 0, y: 0 } });
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
function getCursorForDirection(direction) {
|
|
133
|
-
if (!direction)
|
|
134
|
-
return '';
|
|
135
|
-
const cursors = {
|
|
136
|
-
n: 'ns-resize', s: 'ns-resize', e: 'ew-resize', w: 'ew-resize',
|
|
137
|
-
ne: 'nesw-resize', sw: 'nesw-resize', nw: 'nwse-resize', se: 'nwse-resize'
|
|
138
|
-
};
|
|
139
|
-
return cursors[direction] || 'default';
|
|
140
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { DebugSettings } from './types.js';
|
|
2
|
-
import { Signal } from '../../core/signals.js';
|
|
3
|
-
export declare function bindGlobalEvents(): void;
|
|
4
|
-
export declare function bindPanelEvents(panelId: string, settingsSignal: Signal<DebugSettings>): void;
|
|
5
|
-
//# sourceMappingURL=eventBinder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventBinder.d.ts","sourceRoot":"","sources":["../../../src/ui/debug-panel/eventBinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,aAAa,EAAS,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgB/C,wBAAgB,gBAAgB,SAS/B;AAMD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,QAwFrF"}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { dragState, resizeState, stateEditContext, setConsoleFilter, setNetworkFilter, setEventLogs } from './state.js';
|
|
2
|
-
import { clonePanel, closePanel, toggleMinimized, createNewPanel } from './panelManager.js';
|
|
3
|
-
import { cancelEditing } from './stateEditor.js';
|
|
4
|
-
import { setPanelConfigs } from './panelManager.js';
|
|
5
|
-
import { getApi } from './main.js';
|
|
6
|
-
// ===================================================================
|
|
7
|
-
// Bindeo de Eventos Globales
|
|
8
|
-
// ===================================================================
|
|
9
|
-
export function bindGlobalEvents() {
|
|
10
|
-
document.addEventListener('keydown', handleGlobalKeydown);
|
|
11
|
-
// Previene la selección de texto mientras se arrastra o redimensiona un panel
|
|
12
|
-
document.addEventListener('selectstart', (e) => {
|
|
13
|
-
if (dragState().isDragging || resizeState().isResizing) {
|
|
14
|
-
e.preventDefault();
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
// ===================================================================
|
|
19
|
-
// Bindeo de Eventos por Panel (Usa Delegación de Eventos)
|
|
20
|
-
// ===================================================================
|
|
21
|
-
export function bindPanelEvents(panelId, settingsSignal) {
|
|
22
|
-
const panelEl = document.getElementById(`debug-panel-${panelId}`);
|
|
23
|
-
if (!panelEl)
|
|
24
|
-
return;
|
|
25
|
-
const [settings, setSettings] = settingsSignal;
|
|
26
|
-
// --- Listener principal para Clics (Delegación) ---
|
|
27
|
-
panelEl.addEventListener('click', (e) => {
|
|
28
|
-
const target = e.target;
|
|
29
|
-
const actionButton = target.closest('[data-action]');
|
|
30
|
-
if (actionButton) {
|
|
31
|
-
const action = actionButton.dataset.action;
|
|
32
|
-
switch (action) {
|
|
33
|
-
case 'clone-panel':
|
|
34
|
-
clonePanel(panelId);
|
|
35
|
-
break;
|
|
36
|
-
case 'close-panel':
|
|
37
|
-
closePanel(panelId);
|
|
38
|
-
break;
|
|
39
|
-
case 'toggle-minimized':
|
|
40
|
-
toggleMinimized(panelId);
|
|
41
|
-
break;
|
|
42
|
-
case 'toggle-settings':
|
|
43
|
-
panelEl.querySelector('.settings-panel')?.classList.toggle('hidden');
|
|
44
|
-
break;
|
|
45
|
-
case 'toggle-layout':
|
|
46
|
-
panelEl.querySelector('.layout-panel')?.classList.toggle('hidden');
|
|
47
|
-
break;
|
|
48
|
-
case 'activate-tab':
|
|
49
|
-
const tabId = actionButton.dataset.tab;
|
|
50
|
-
setPanelConfigs(configs => configs.map(p => p.id === panelId ? { ...p, activeTab: tabId } : p));
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
// --- Listener para Cambios (checkboxes, selects) ---
|
|
56
|
-
panelEl.addEventListener('change', (e) => {
|
|
57
|
-
const target = e.target;
|
|
58
|
-
// Filtros de consola
|
|
59
|
-
if (target.matches('[data-level]')) {
|
|
60
|
-
const level = target.dataset.level;
|
|
61
|
-
setConsoleFilter(prev => {
|
|
62
|
-
const newFilter = new Set(prev);
|
|
63
|
-
target.checked ? newFilter.add(level) : newFilter.delete(level);
|
|
64
|
-
return newFilter;
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
// Opciones de configuración
|
|
68
|
-
if (target.matches('[data-setting]')) {
|
|
69
|
-
const key = target.dataset.setting;
|
|
70
|
-
const value = target.type === 'checkbox' ? target.checked : target.value;
|
|
71
|
-
setSettings(prev => ({ ...prev, [key]: value }));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
// --- Listener para Inputs de texto ---
|
|
75
|
-
panelEl.addEventListener('input', (e) => {
|
|
76
|
-
const target = e.target;
|
|
77
|
-
if (target.matches('.network-filter-input')) {
|
|
78
|
-
setNetworkFilter(target.value);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
// --- Listener para el formulario de Eventos ---
|
|
82
|
-
panelEl.querySelector(`#debug-event-form-${panelId}`)?.addEventListener('submit', (e) => {
|
|
83
|
-
e.preventDefault();
|
|
84
|
-
const formData = new FormData(e.target);
|
|
85
|
-
const eventName = formData.get('eventName');
|
|
86
|
-
const eventDataStr = formData.get('eventData');
|
|
87
|
-
if (eventName) {
|
|
88
|
-
try {
|
|
89
|
-
const eventData = eventDataStr ? JSON.parse(eventDataStr) : undefined;
|
|
90
|
-
// Aquí deberías tener una forma de acceder a tu API, quizás a través de un objeto global
|
|
91
|
-
getApi().events.emit(eventName, eventData);
|
|
92
|
-
setEventLogs(prev => [...prev, {
|
|
93
|
-
id: `log_${Date.now()}`,
|
|
94
|
-
name: eventName,
|
|
95
|
-
data: eventData,
|
|
96
|
-
timestamp: new Date(),
|
|
97
|
-
direction: 'emitted'
|
|
98
|
-
}]);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
console.error('Invalid JSON in event data:', error);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
// ===================================================================
|
|
107
|
-
// Manejadores de Teclas Globales
|
|
108
|
-
// ===================================================================
|
|
109
|
-
function handleGlobalKeydown(e) {
|
|
110
|
-
// Atajo para crear un nuevo panel
|
|
111
|
-
if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.code === 'KeyN') {
|
|
112
|
-
e.preventDefault();
|
|
113
|
-
createNewPanel();
|
|
114
|
-
}
|
|
115
|
-
// Atajo para salir de la edición de estado
|
|
116
|
-
if (e.key === 'Escape' && stateEditContext()?.isEditing) {
|
|
117
|
-
e.preventDefault();
|
|
118
|
-
cancelEditing(); // Esta función de stateEditor también deberá usar señales
|
|
119
|
-
}
|
|
120
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PanelLayout } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Calcula y aplica un nuevo layout a los paneles existentes.
|
|
4
|
-
* Lee el estado actual de las señales y actualiza las señales con la nueva configuración.
|
|
5
|
-
* @param layout El nuevo layout a aplicar.
|
|
6
|
-
*/
|
|
7
|
-
export declare function applyLayout(layout: PanelLayout): void;
|
|
8
|
-
/**
|
|
9
|
-
* Un atajo para aplicar el layout de 'grid'.
|
|
10
|
-
*/
|
|
11
|
-
export declare function arrangeAutomatically(): void;
|
|
12
|
-
/**
|
|
13
|
-
* Resetea los paneles a un único panel en la posición y tamaño por defecto.
|
|
14
|
-
*/
|
|
15
|
-
export declare function resetLayout(): void;
|
|
16
|
-
//# sourceMappingURL=layoutManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"layoutManager.d.ts","sourceRoot":"","sources":["../../../src/ui/debug-panel/layoutManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAIxD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAiDrD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAclC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { panelConfigs, setPanelConfigs } from './panelManager.js';
|
|
2
|
-
import { setSettings } from './main.js';
|
|
3
|
-
/**
|
|
4
|
-
* Calcula y aplica un nuevo layout a los paneles existentes.
|
|
5
|
-
* Lee el estado actual de las señales y actualiza las señales con la nueva configuración.
|
|
6
|
-
* @param layout El nuevo layout a aplicar.
|
|
7
|
-
*/
|
|
8
|
-
export function applyLayout(layout) {
|
|
9
|
-
const currentConfigs = panelConfigs();
|
|
10
|
-
const panelCount = currentConfigs.length;
|
|
11
|
-
if (panelCount === 0)
|
|
12
|
-
return;
|
|
13
|
-
const viewportWidth = window.innerWidth;
|
|
14
|
-
const viewportHeight = window.innerHeight;
|
|
15
|
-
// 1. Calcula el nuevo array de configuraciones sin mutar el original.
|
|
16
|
-
const newConfigs = currentConfigs.map((config, index) => {
|
|
17
|
-
let newPosition = { ...config.position };
|
|
18
|
-
let newSize = { ...config.size };
|
|
19
|
-
switch (layout) {
|
|
20
|
-
case 'single':
|
|
21
|
-
newPosition = { x: 50, y: 50 };
|
|
22
|
-
newSize = { width: Math.min(800, viewportWidth - 100), height: Math.min(600, viewportHeight - 100) };
|
|
23
|
-
break;
|
|
24
|
-
case 'split-horizontal':
|
|
25
|
-
const hWidth = Math.floor((viewportWidth - 60) / panelCount);
|
|
26
|
-
newPosition = { x: 20 + (index * hWidth), y: 50 };
|
|
27
|
-
newSize = { width: hWidth - 10, height: viewportHeight - 120 };
|
|
28
|
-
break;
|
|
29
|
-
case 'split-vertical':
|
|
30
|
-
const vHeight = Math.floor((viewportHeight - 120) / panelCount);
|
|
31
|
-
newPosition = { x: 50, y: 20 + (index * vHeight) };
|
|
32
|
-
newSize = { width: viewportWidth - 120, height: vHeight - 10 };
|
|
33
|
-
break;
|
|
34
|
-
case 'grid':
|
|
35
|
-
const cols = Math.ceil(Math.sqrt(panelCount));
|
|
36
|
-
const rows = Math.ceil(panelCount / cols);
|
|
37
|
-
const gWidth = Math.floor((viewportWidth - 60) / cols);
|
|
38
|
-
const gHeight = Math.floor((viewportHeight - 120) / rows);
|
|
39
|
-
const col = index % cols;
|
|
40
|
-
const row = Math.floor(index / cols);
|
|
41
|
-
newPosition = { x: 20 + (col * gWidth), y: 20 + (row * gHeight) };
|
|
42
|
-
newSize = { width: gWidth - 10, height: gHeight - 10 };
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
return { ...config, position: newPosition, size: newSize };
|
|
46
|
-
});
|
|
47
|
-
// 2. Actualiza las señales. Los efectos se encargarán del resto.
|
|
48
|
-
setPanelConfigs(newConfigs);
|
|
49
|
-
setSettings((prev) => ({ ...prev, layout: layout }));
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Un atajo para aplicar el layout de 'grid'.
|
|
53
|
-
*/
|
|
54
|
-
export function arrangeAutomatically() {
|
|
55
|
-
applyLayout('grid');
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Resetea los paneles a un único panel en la posición y tamaño por defecto.
|
|
59
|
-
*/
|
|
60
|
-
export function resetLayout() {
|
|
61
|
-
// 1. Define la configuración del panel por defecto.
|
|
62
|
-
const defaultConfig = [{
|
|
63
|
-
id: 'main',
|
|
64
|
-
activeTab: 'state',
|
|
65
|
-
position: { x: 50, y: 50 },
|
|
66
|
-
size: { width: 800, height: 600 },
|
|
67
|
-
isMinimized: false,
|
|
68
|
-
zIndex: 1000
|
|
69
|
-
}];
|
|
70
|
-
// 2. Actualiza las señales.
|
|
71
|
-
setPanelConfigs(defaultConfig);
|
|
72
|
-
setSettings((prev) => ({ ...prev, layout: 'single', panels: defaultConfig }));
|
|
73
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Signal } from '../../core/signals.js';
|
|
2
|
-
import { IPlatformAPI } from '../../core/api.js';
|
|
3
|
-
import { DebugSettings } from './types.js';
|
|
4
|
-
export declare const settingsSignal: Signal<DebugSettings>;
|
|
5
|
-
export declare const settings: () => DebugSettings, setSettings: import("../../core/signals.js").Setter<DebugSettings>;
|
|
6
|
-
export declare function getApi(): IPlatformAPI;
|
|
7
|
-
/**
|
|
8
|
-
* Función principal que inicializa todo el panel de depuración.
|
|
9
|
-
* Ya no hay una clase, solo un punto de entrada.
|
|
10
|
-
*/
|
|
11
|
-
export declare function initDebugPanel(platformApi: IPlatformAPI): void;
|
|
12
|
-
//# sourceMappingURL=main.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/ui/debug-panel/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAa3C,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,CAA+C,CAAC;AACjG,eAAO,MAAO,QAAQ,uBAAE,WAAW,uDAAkB,CAAC;AAGtD,wBAAgB,MAAM,iBAAkB;AAExC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,YAAY,QA8BvD"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { createEffect, createSignal } from '../../core/signals.js';
|
|
2
|
-
import { loadSettings, saveSettings } from './settings.js';
|
|
3
|
-
import { setupInterceptors, startPerformanceMonitoring, startFPSCounter } from './services.js';
|
|
4
|
-
import { createContainer, setupPanelManager, setPanelConfigs // Importamos el setter de las configuraciones de los paneles
|
|
5
|
-
} from './panelManager.js';
|
|
6
|
-
import { bindGlobalEvents } from './eventBinder.js';
|
|
7
|
-
import { bindGlobalDragAndResizeEvents } from './dragAndResize.js';
|
|
8
|
-
// Creamos una señal para la configuración general.
|
|
9
|
-
export const settingsSignal = createSignal(loadSettings());
|
|
10
|
-
export const [settings, setSettings] = settingsSignal;
|
|
11
|
-
let api;
|
|
12
|
-
export function getApi() { return api; }
|
|
13
|
-
/**
|
|
14
|
-
* Función principal que inicializa todo el panel de depuración.
|
|
15
|
-
* Ya no hay una clase, solo un punto de entrada.
|
|
16
|
-
*/
|
|
17
|
-
export function initDebugPanel(platformApi) {
|
|
18
|
-
api = platformApi;
|
|
19
|
-
// 1. Crear el contenedor principal del DOM
|
|
20
|
-
const containerEl = createContainer(settings().theme);
|
|
21
|
-
// 2. Establecer el estado inicial de los paneles.
|
|
22
|
-
// Esto disparará el createEffect dentro de setupPanelManager para que cree los paneles iniciales.
|
|
23
|
-
setPanelConfigs(settings().panels);
|
|
24
|
-
// 3. Iniciar los "motores" reactivos y los servicios.
|
|
25
|
-
// setupPanelManager se encargará de crear, actualizar y eliminar los paneles del DOM.
|
|
26
|
-
setupPanelManager(containerEl, settingsSignal);
|
|
27
|
-
// Servicios que escuchan eventos del navegador y actualizan las señales de estado.
|
|
28
|
-
setupInterceptors();
|
|
29
|
-
startPerformanceMonitoring();
|
|
30
|
-
startFPSCounter();
|
|
31
|
-
// Eventos globales (teclado, etc.) que actualizan las señales de estado.
|
|
32
|
-
bindGlobalEvents();
|
|
33
|
-
bindGlobalDragAndResizeEvents();
|
|
34
|
-
// 4. Efecto para persistir los cambios en la configuración.
|
|
35
|
-
// Cada vez que la señal `settings` cambie, se guardará en localStorage.
|
|
36
|
-
createEffect(() => {
|
|
37
|
-
saveSettings(settings());
|
|
38
|
-
// También actualiza el tema del contenedor si cambia
|
|
39
|
-
containerEl.className = `debug-panel-container theme-${settings().theme}`;
|
|
40
|
-
});
|
|
41
|
-
console.info('🐞 Advanced Debug Panel initialized');
|
|
42
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { Signal } from '../../core/signals.js';
|
|
2
|
-
import { PanelInstance, DebugSettings } from './types.js';
|
|
3
|
-
export declare const panelConfigs: () => PanelInstance[], setPanelConfigs: import("../../core/signals.js").Setter<PanelInstance[]>;
|
|
4
|
-
export declare function createNewPanel(): void;
|
|
5
|
-
export declare function closePanel(panelId: string): void;
|
|
6
|
-
export declare function clonePanel(sourcePanelId: string): void;
|
|
7
|
-
export declare function toggleMinimized(panelId: string): void;
|
|
8
|
-
/**
|
|
9
|
-
* Esta es la función principal que crea y gestiona el DOM de los paneles de forma reactiva.
|
|
10
|
-
* Se llama una sola vez al iniciar la aplicación.
|
|
11
|
-
*/
|
|
12
|
-
export declare function setupPanelManager(containerEl: HTMLElement, settingsSignal: Signal<DebugSettings>): void;
|
|
13
|
-
/**
|
|
14
|
-
* Crea el contenedor principal para todos los paneles.
|
|
15
|
-
*/
|
|
16
|
-
export declare function createContainer(theme: 'dark' | 'light'): HTMLElement;
|
|
17
|
-
//# sourceMappingURL=panelManager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"panelManager.d.ts","sourceRoot":"","sources":["../../../src/ui/debug-panel/panelManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAY1D,eAAO,MAAO,YAAY,yBAAE,eAAe,yDAAqC,CAAC;AAQjF,wBAAgB,cAAc,IAAI,IAAI,CAcrC;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAetD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMrD;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,QA+DhG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,CAMpE"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { createEffect, createSignal } from '../../core/signals.js';
|
|
2
|
-
import { generatePanelHTML } from './ui.js';
|
|
3
|
-
import { bindPanelEvents } from './eventBinder.js';
|
|
4
|
-
import { setupPanelRenderEffects } from './renderer.js';
|
|
5
|
-
import { highestZIndex, setHighestZIndex, dragState, resizeState } from './state.js';
|
|
6
|
-
// ===================================================================
|
|
7
|
-
// La Única Fuente de Verdad para los Paneles
|
|
8
|
-
// ===================================================================
|
|
9
|
-
// Esta señal contiene el array con la configuración de todos los paneles.
|
|
10
|
-
// El DOM reaccionará a cualquier cambio en este array.
|
|
11
|
-
// Esta señal se inicializa con la configuración cargada desde settings.
|
|
12
|
-
export const [panelConfigs, setPanelConfigs] = createSignal([]);
|
|
13
|
-
// ===================================================================
|
|
14
|
-
// Funciones de Acción (Modifican el estado, no el DOM)
|
|
15
|
-
// ===================================================================
|
|
16
|
-
// Estas funciones ahora son simples y predecibles. Su única tarea
|
|
17
|
-
// es actualizar la señal `panelConfigs`.
|
|
18
|
-
export function createNewPanel() {
|
|
19
|
-
const newId = `panel-${Date.now()}`;
|
|
20
|
-
setHighestZIndex(prev => prev + 1);
|
|
21
|
-
const newConfig = {
|
|
22
|
-
id: newId,
|
|
23
|
-
activeTab: 'state',
|
|
24
|
-
position: { x: 100 + panelConfigs().length * 30, y: 100 + panelConfigs().length * 30 },
|
|
25
|
-
size: { width: 800, height: 600 },
|
|
26
|
-
isMinimized: false,
|
|
27
|
-
zIndex: highestZIndex()
|
|
28
|
-
};
|
|
29
|
-
setPanelConfigs(prev => [...prev, newConfig]);
|
|
30
|
-
}
|
|
31
|
-
export function closePanel(panelId) {
|
|
32
|
-
// Simplemente eliminamos la configuración del panel del array.
|
|
33
|
-
// El efecto se encargará de remover el elemento del DOM.
|
|
34
|
-
setPanelConfigs(prev => prev.filter(p => p.id !== panelId));
|
|
35
|
-
}
|
|
36
|
-
export function clonePanel(sourcePanelId) {
|
|
37
|
-
const sourceConfig = panelConfigs().find(p => p.id === sourcePanelId);
|
|
38
|
-
if (!sourceConfig)
|
|
39
|
-
return;
|
|
40
|
-
const newId = `panel-${Date.now()}`;
|
|
41
|
-
setHighestZIndex(prev => prev + 1);
|
|
42
|
-
const newConfig = {
|
|
43
|
-
...sourceConfig,
|
|
44
|
-
id: newId,
|
|
45
|
-
position: { x: sourceConfig.position.x + 30, y: sourceConfig.position.y + 30 },
|
|
46
|
-
zIndex: highestZIndex()
|
|
47
|
-
};
|
|
48
|
-
setPanelConfigs(prev => [...prev, newConfig]);
|
|
49
|
-
}
|
|
50
|
-
export function toggleMinimized(panelId) {
|
|
51
|
-
setPanelConfigs(prev => prev.map(p => p.id === panelId ? { ...p, isMinimized: !p.isMinimized } : p));
|
|
52
|
-
}
|
|
53
|
-
// ===================================================================
|
|
54
|
-
// Sincronizador de Estado a DOM
|
|
55
|
-
// ===================================================================
|
|
56
|
-
/**
|
|
57
|
-
* Esta es la función principal que crea y gestiona el DOM de los paneles de forma reactiva.
|
|
58
|
-
* Se llama una sola vez al iniciar la aplicación.
|
|
59
|
-
*/
|
|
60
|
-
export function setupPanelManager(containerEl, settingsSignal) {
|
|
61
|
-
// Este efecto se ejecuta cada vez que la señal `panelConfigs` cambia.
|
|
62
|
-
createEffect(() => {
|
|
63
|
-
// Leemos todas las señales que afectan la apariencia de los paneles
|
|
64
|
-
const configs = panelConfigs();
|
|
65
|
-
const currentDragState = dragState();
|
|
66
|
-
const currentResizeState = resizeState();
|
|
67
|
-
const existingPanelNodes = new Map();
|
|
68
|
-
containerEl.querySelectorAll('.debug-panel').forEach(node => {
|
|
69
|
-
existingPanelNodes.set(node.id.replace('debug-panel-', ''), node);
|
|
70
|
-
});
|
|
71
|
-
// 1. Añadir/Actualizar paneles
|
|
72
|
-
for (const config of configs) {
|
|
73
|
-
let panelEl = existingPanelNodes.get(config.id);
|
|
74
|
-
if (!panelEl) {
|
|
75
|
-
// El panel es NUEVO: crearlo y configurarlo por primera vez.
|
|
76
|
-
panelEl = document.createElement('div');
|
|
77
|
-
panelEl.id = `debug-panel-${config.id}`;
|
|
78
|
-
panelEl.className = 'debug-panel';
|
|
79
|
-
panelEl.innerHTML = generatePanelHTML(config, settingsSignal[0]());
|
|
80
|
-
containerEl.appendChild(panelEl);
|
|
81
|
-
// Se configuran los listeners y los efectos reactivos una sola vez
|
|
82
|
-
bindPanelEvents(config.id, settingsSignal);
|
|
83
|
-
setupPanelRenderEffects(config.id, settingsSignal);
|
|
84
|
-
}
|
|
85
|
-
// --- Aplicar actualizaciones reactivas ---
|
|
86
|
-
// A. Posición, tamaño y z-index
|
|
87
|
-
panelEl.style.left = `${config.position.x}px`;
|
|
88
|
-
panelEl.style.top = `${config.position.y}px`;
|
|
89
|
-
panelEl.style.width = `${config.size.width}px`;
|
|
90
|
-
panelEl.style.height = `${config.size.height}px`;
|
|
91
|
-
panelEl.style.zIndex = config.zIndex.toString();
|
|
92
|
-
// B. Clases de estado (minimized, dragging, resizing)
|
|
93
|
-
panelEl.classList.toggle('minimized', config.isMinimized);
|
|
94
|
-
panelEl.classList.toggle('dragging', currentDragState.isDragging && currentDragState.activePanel === config.id);
|
|
95
|
-
panelEl.classList.toggle('resizing', currentResizeState.isResizing && currentResizeState.activePanel === config.id);
|
|
96
|
-
// C. Clases de pestañas y contenido activo
|
|
97
|
-
panelEl.querySelectorAll('.debug-tab').forEach(tab => {
|
|
98
|
-
tab.classList.toggle('active', tab.dataset.tab === config.activeTab);
|
|
99
|
-
});
|
|
100
|
-
panelEl.querySelectorAll('.debug-panel-content').forEach(content => {
|
|
101
|
-
const contentTabId = content.id.split('-').pop();
|
|
102
|
-
content.classList.toggle('active', contentTabId === config.activeTab);
|
|
103
|
-
});
|
|
104
|
-
// Marcar el nodo como procesado
|
|
105
|
-
existingPanelNodes.delete(config.id);
|
|
106
|
-
}
|
|
107
|
-
// 2. Eliminar paneles que ya no están en la configuración
|
|
108
|
-
// Lo que quede en `existingPanelNodes` son los paneles que fueron eliminados de la señal.
|
|
109
|
-
for (const panelToRemove of existingPanelNodes.values()) {
|
|
110
|
-
panelToRemove.remove();
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Crea el contenedor principal para todos los paneles.
|
|
116
|
-
*/
|
|
117
|
-
export function createContainer(theme) {
|
|
118
|
-
const containerEl = document.createElement('div');
|
|
119
|
-
containerEl.id = 'debug-panel-container';
|
|
120
|
-
containerEl.className = `debug-panel-container theme-${theme}`;
|
|
121
|
-
document.body.appendChild(containerEl);
|
|
122
|
-
return containerEl;
|
|
123
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../../src/ui/debug-panel/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAoD,MAAM,YAAY,CAAC;AA0E7F,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,aAAa,CAAC,QA6I7F"}
|