@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.
Files changed (207) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +31 -0
  3. package/package.json +2 -2
  4. package/dist/appState.d.ts +0 -23
  5. package/dist/appState.d.ts.map +0 -1
  6. package/dist/appState.js +0 -138
  7. package/dist/core/AIService.d.ts +0 -33
  8. package/dist/core/AIService.d.ts.map +0 -1
  9. package/dist/core/AIService.js +0 -73
  10. package/dist/core/ApiService.d.ts +0 -34
  11. package/dist/core/ApiService.d.ts.map +0 -1
  12. package/dist/core/ApiService.js +0 -32
  13. package/dist/core/AuthService.d.ts +0 -31
  14. package/dist/core/AuthService.d.ts.map +0 -1
  15. package/dist/core/AuthService.js +0 -56
  16. package/dist/core/BaseService.d.ts +0 -29
  17. package/dist/core/BaseService.d.ts.map +0 -1
  18. package/dist/core/BaseService.js +0 -33
  19. package/dist/core/CalendarService.d.ts +0 -15
  20. package/dist/core/CalendarService.d.ts.map +0 -1
  21. package/dist/core/CalendarService.js +0 -32
  22. package/dist/core/CommandService.d.ts +0 -25
  23. package/dist/core/CommandService.d.ts.map +0 -1
  24. package/dist/core/CommandService.js +0 -52
  25. package/dist/core/DebugPanelService.d.ts +0 -12
  26. package/dist/core/DebugPanelService.d.ts.map +0 -1
  27. package/dist/core/DebugPanelService.js +0 -29
  28. package/dist/core/DebugService.d.ts +0 -57
  29. package/dist/core/DebugService.d.ts.map +0 -1
  30. package/dist/core/DebugService.js +0 -134
  31. package/dist/core/EventBus.d.ts +0 -32
  32. package/dist/core/EventBus.d.ts.map +0 -1
  33. package/dist/core/EventBus.js +0 -51
  34. package/dist/core/EventHandler.d.ts +0 -3
  35. package/dist/core/EventHandler.d.ts.map +0 -1
  36. package/dist/core/EventHandler.js +0 -82
  37. package/dist/core/GamificationService.d.ts +0 -19
  38. package/dist/core/GamificationService.d.ts.map +0 -1
  39. package/dist/core/GamificationService.js +0 -102
  40. package/dist/core/HookService.d.ts +0 -34
  41. package/dist/core/HookService.d.ts.map +0 -1
  42. package/dist/core/HookService.js +0 -64
  43. package/dist/core/LayoutService.d.ts +0 -61
  44. package/dist/core/LayoutService.d.ts.map +0 -1
  45. package/dist/core/LayoutService.js +0 -223
  46. package/dist/core/ModalService.d.ts +0 -21
  47. package/dist/core/ModalService.d.ts.map +0 -1
  48. package/dist/core/ModalService.js +0 -71
  49. package/dist/core/NotificationService.d.ts +0 -7
  50. package/dist/core/NotificationService.d.ts.map +0 -1
  51. package/dist/core/NotificationService.js +0 -42
  52. package/dist/core/RouterService.d.ts +0 -13
  53. package/dist/core/RouterService.d.ts.map +0 -1
  54. package/dist/core/RouterService.js +0 -54
  55. package/dist/core/ServiceContainer.d.ts +0 -18
  56. package/dist/core/ServiceContainer.d.ts.map +0 -1
  57. package/dist/core/ServiceContainer.js +0 -27
  58. package/dist/core/ShortcutService.d.ts +0 -17
  59. package/dist/core/ShortcutService.d.ts.map +0 -1
  60. package/dist/core/ShortcutService.js +0 -37
  61. package/dist/core/StorageService.d.ts +0 -36
  62. package/dist/core/StorageService.d.ts.map +0 -1
  63. package/dist/core/StorageService.js +0 -101
  64. package/dist/core/ThemeService.d.ts +0 -12
  65. package/dist/core/ThemeService.d.ts.map +0 -1
  66. package/dist/core/ThemeService.js +0 -60
  67. package/dist/core/WebSocketService.d.ts +0 -16
  68. package/dist/core/WebSocketService.d.ts.map +0 -1
  69. package/dist/core/WebSocketService.js +0 -22
  70. package/dist/core/api.d.ts +0 -70
  71. package/dist/core/api.d.ts.map +0 -1
  72. package/dist/core/api.js +0 -1
  73. package/dist/core/app/ModuleManager copy.d.ts +0 -23
  74. package/dist/core/app/ModuleManager copy.js +0 -52
  75. package/dist/core/app/ModuleManager.d.ts +0 -60
  76. package/dist/core/app/ModuleManager.d.ts.map +0 -1
  77. package/dist/core/app/ModuleManager.js +0 -217
  78. package/dist/core/app/apiFactory.d.ts +0 -4
  79. package/dist/core/app/apiFactory.d.ts.map +0 -1
  80. package/dist/core/app/apiFactory.js +0 -120
  81. package/dist/core/app/commandManager.d.ts +0 -3
  82. package/dist/core/app/commandManager.d.ts.map +0 -1
  83. package/dist/core/app/commandManager.js +0 -195
  84. package/dist/core/app/moduleLoader.d.ts +0 -11
  85. package/dist/core/app/moduleLoader.d.ts.map +0 -1
  86. package/dist/core/app/moduleLoader.js +0 -30
  87. package/dist/core/app/routeManager.d.ts +0 -2
  88. package/dist/core/app/routeManager.d.ts.map +0 -1
  89. package/dist/core/app/routeManager.js +0 -7
  90. package/dist/core/index.d.ts +0 -16
  91. package/dist/core/index.d.ts.map +0 -1
  92. package/dist/core/index.js +0 -15
  93. package/dist/core/layout/dragDropManager.d.ts +0 -8
  94. package/dist/core/layout/dragDropManager.d.ts.map +0 -1
  95. package/dist/core/layout/dragDropManager.js +0 -8
  96. package/dist/core/layout/paneManager.d.ts +0 -7
  97. package/dist/core/layout/paneManager.d.ts.map +0 -1
  98. package/dist/core/layout/paneManager.js +0 -7
  99. package/dist/core/layout/renderer.d.ts +0 -8
  100. package/dist/core/layout/renderer.d.ts.map +0 -1
  101. package/dist/core/layout/renderer.js +0 -8
  102. package/dist/core/layout/resizeManager.d.ts +0 -5
  103. package/dist/core/layout/resizeManager.d.ts.map +0 -1
  104. package/dist/core/layout/resizeManager.js +0 -5
  105. package/dist/core/signals.d.ts +0 -20
  106. package/dist/core/signals.d.ts.map +0 -1
  107. package/dist/core/signals.js +0 -66
  108. package/dist/core/uiState.d.ts +0 -9
  109. package/dist/core/uiState.d.ts.map +0 -1
  110. package/dist/core/uiState.js +0 -11
  111. package/dist/index.d.ts +0 -17
  112. package/dist/index.d.ts.map +0 -1
  113. package/dist/index.js +0 -15
  114. package/dist/lib/local-db.d.ts +0 -43
  115. package/dist/lib/local-db.d.ts.map +0 -1
  116. package/dist/lib/local-db.js +0 -23
  117. package/dist/lib/sync-service.d.ts +0 -7
  118. package/dist/lib/sync-service.d.ts.map +0 -1
  119. package/dist/lib/sync-service.js +0 -41
  120. package/dist/platform/ILayoutService.d.ts +0 -63
  121. package/dist/platform/ILayoutService.d.ts.map +0 -1
  122. package/dist/platform/ILayoutService.js +0 -1
  123. package/dist/platform/IRenderer.d.ts +0 -16
  124. package/dist/platform/IRenderer.d.ts.map +0 -1
  125. package/dist/platform/IRenderer.js +0 -1
  126. package/dist/platform/ServiceRegistry.d.ts +0 -43
  127. package/dist/platform/ServiceRegistry.d.ts.map +0 -1
  128. package/dist/platform/ServiceRegistry.js +0 -2
  129. package/dist/platform/extensionPoints.d.ts +0 -70
  130. package/dist/platform/extensionPoints.d.ts.map +0 -1
  131. package/dist/platform/extensionPoints.js +0 -22
  132. package/dist/platform/index.d.ts +0 -5
  133. package/dist/platform/index.d.ts.map +0 -1
  134. package/dist/platform/index.js +0 -4
  135. package/dist/stores/editorStore.d.ts +0 -5
  136. package/dist/stores/editorStore.d.ts.map +0 -1
  137. package/dist/stores/editorStore.js +0 -4
  138. package/dist/stores/gamificationStore.d.ts +0 -3
  139. package/dist/stores/gamificationStore.d.ts.map +0 -1
  140. package/dist/stores/gamificationStore.js +0 -2
  141. package/dist/stores/historyStore.d.ts +0 -12
  142. package/dist/stores/historyStore.d.ts.map +0 -1
  143. package/dist/stores/historyStore.js +0 -6
  144. package/dist/stores/workspaceStore.d.ts +0 -13
  145. package/dist/stores/workspaceStore.d.ts.map +0 -1
  146. package/dist/stores/workspaceStore.js +0 -6
  147. package/dist/types/app.d.ts +0 -31
  148. package/dist/types/app.d.ts.map +0 -1
  149. package/dist/types/app.js +0 -1
  150. package/dist/types/debug.d.ts +0 -68
  151. package/dist/types/debug.d.ts.map +0 -1
  152. package/dist/types/debug.js +0 -1
  153. package/dist/types/entities.d.ts +0 -42
  154. package/dist/types/entities.js +0 -2
  155. package/dist/types/index.d.ts +0 -3
  156. package/dist/types/index.d.ts.map +0 -1
  157. package/dist/types/index.js +0 -3
  158. package/dist/types/modules.d.ts +0 -66
  159. package/dist/types/modules.js +0 -2
  160. package/dist/types/platform.d.ts +0 -95
  161. package/dist/types/platform.d.ts.map +0 -1
  162. package/dist/types/platform.js +0 -2
  163. package/dist/ui/Palette.d.ts +0 -38
  164. package/dist/ui/Palette.d.ts.map +0 -1
  165. package/dist/ui/Palette.js +0 -144
  166. package/dist/ui/debug-panel/dragAndResize.d.ts +0 -6
  167. package/dist/ui/debug-panel/dragAndResize.d.ts.map +0 -1
  168. package/dist/ui/debug-panel/dragAndResize.js +0 -140
  169. package/dist/ui/debug-panel/eventBinder.d.ts +0 -5
  170. package/dist/ui/debug-panel/eventBinder.d.ts.map +0 -1
  171. package/dist/ui/debug-panel/eventBinder.js +0 -120
  172. package/dist/ui/debug-panel/layoutManager.d.ts +0 -16
  173. package/dist/ui/debug-panel/layoutManager.d.ts.map +0 -1
  174. package/dist/ui/debug-panel/layoutManager.js +0 -73
  175. package/dist/ui/debug-panel/main.d.ts +0 -12
  176. package/dist/ui/debug-panel/main.d.ts.map +0 -1
  177. package/dist/ui/debug-panel/main.js +0 -42
  178. package/dist/ui/debug-panel/panelManager.d.ts +0 -17
  179. package/dist/ui/debug-panel/panelManager.d.ts.map +0 -1
  180. package/dist/ui/debug-panel/panelManager.js +0 -123
  181. package/dist/ui/debug-panel/renderer.d.ts +0 -4
  182. package/dist/ui/debug-panel/renderer.d.ts.map +0 -1
  183. package/dist/ui/debug-panel/renderer.js +0 -181
  184. package/dist/ui/debug-panel/services.d.ts +0 -4
  185. package/dist/ui/debug-panel/services.d.ts.map +0 -1
  186. package/dist/ui/debug-panel/services.js +0 -134
  187. package/dist/ui/debug-panel/settings.d.ts +0 -5
  188. package/dist/ui/debug-panel/settings.d.ts.map +0 -1
  189. package/dist/ui/debug-panel/settings.js +0 -35
  190. package/dist/ui/debug-panel/state.d.ts +0 -128
  191. package/dist/ui/debug-panel/state.d.ts.map +0 -1
  192. package/dist/ui/debug-panel/state.js +0 -42
  193. package/dist/ui/debug-panel/stateEditor.d.ts +0 -9
  194. package/dist/ui/debug-panel/stateEditor.d.ts.map +0 -1
  195. package/dist/ui/debug-panel/stateEditor.js +0 -158
  196. package/dist/ui/debug-panel/types.d.ts +0 -68
  197. package/dist/ui/debug-panel/types.d.ts.map +0 -1
  198. package/dist/ui/debug-panel/types.js +0 -1
  199. package/dist/ui/debug-panel/ui.d.ts +0 -10
  200. package/dist/ui/debug-panel/ui.d.ts.map +0 -1
  201. package/dist/ui/debug-panel/ui.js +0 -199
  202. package/dist/ui/debug-panel/utils.d.ts +0 -16
  203. package/dist/ui/debug-panel/utils.d.ts.map +0 -1
  204. package/dist/ui/debug-panel/utils.js +0 -104
  205. package/dist/utils.d.ts +0 -22
  206. package/dist/utils.d.ts.map +0 -1
  207. 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,4 +0,0 @@
1
- import { Signal } from '../../core/signals.js';
2
- import { DebugSettings } from './types.js';
3
- export declare function setupPanelRenderEffects(panelId: string, settingsSignal: Signal<DebugSettings>): void;
4
- //# sourceMappingURL=renderer.d.ts.map
@@ -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"}