polyv-live-cli 1.1.2 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/dist/commands/index.d.ts +1 -0
  2. package/dist/commands/index.d.ts.map +1 -1
  3. package/dist/commands/index.js +3 -1
  4. package/dist/commands/index.js.map +1 -1
  5. package/dist/commands/monitor.commands.d.ts +12 -0
  6. package/dist/commands/monitor.commands.d.ts.map +1 -0
  7. package/dist/commands/monitor.commands.js +75 -0
  8. package/dist/commands/monitor.commands.js.map +1 -0
  9. package/dist/components/alert.panel.d.ts +98 -0
  10. package/dist/components/alert.panel.d.ts.map +1 -0
  11. package/dist/components/alert.panel.js +1000 -0
  12. package/dist/components/alert.panel.js.map +1 -0
  13. package/dist/components/base.component.d.ts +61 -0
  14. package/dist/components/base.component.d.ts.map +1 -0
  15. package/dist/components/base.component.js +346 -0
  16. package/dist/components/base.component.js.map +1 -0
  17. package/dist/components/batch-operations.dialog.d.ts +58 -0
  18. package/dist/components/batch-operations.dialog.d.ts.map +1 -0
  19. package/dist/components/batch-operations.dialog.js +340 -0
  20. package/dist/components/batch-operations.dialog.js.map +1 -0
  21. package/dist/components/channel-details.popup.d.ts +55 -0
  22. package/dist/components/channel-details.popup.d.ts.map +1 -0
  23. package/dist/components/channel-details.popup.js +416 -0
  24. package/dist/components/channel-details.popup.js.map +1 -0
  25. package/dist/components/channel-status.panel.d.ts +129 -0
  26. package/dist/components/channel-status.panel.d.ts.map +1 -0
  27. package/dist/components/channel-status.panel.js +858 -0
  28. package/dist/components/channel-status.panel.js.map +1 -0
  29. package/dist/components/component-registry.d.ts +36 -0
  30. package/dist/components/component-registry.d.ts.map +1 -0
  31. package/dist/components/component-registry.js +119 -0
  32. package/dist/components/component-registry.js.map +1 -0
  33. package/dist/components/context-menu-factory.d.ts +13 -0
  34. package/dist/components/context-menu-factory.d.ts.map +1 -0
  35. package/dist/components/context-menu-factory.js +341 -0
  36. package/dist/components/context-menu-factory.js.map +1 -0
  37. package/dist/components/context-menu.d.ts +54 -0
  38. package/dist/components/context-menu.d.ts.map +1 -0
  39. package/dist/components/context-menu.js +235 -0
  40. package/dist/components/context-menu.js.map +1 -0
  41. package/dist/components/grid-manager.d.ts +52 -0
  42. package/dist/components/grid-manager.d.ts.map +1 -0
  43. package/dist/components/grid-manager.js +404 -0
  44. package/dist/components/grid-manager.js.map +1 -0
  45. package/dist/components/help-panel.d.ts +34 -0
  46. package/dist/components/help-panel.d.ts.map +1 -0
  47. package/dist/components/help-panel.js +249 -0
  48. package/dist/components/help-panel.js.map +1 -0
  49. package/dist/components/index.d.ts +20 -0
  50. package/dist/components/index.d.ts.map +1 -0
  51. package/dist/components/index.js +43 -0
  52. package/dist/components/index.js.map +1 -0
  53. package/dist/components/interaction-manager.d.ts +47 -0
  54. package/dist/components/interaction-manager.d.ts.map +1 -0
  55. package/dist/components/interaction-manager.js +597 -0
  56. package/dist/components/interaction-manager.js.map +1 -0
  57. package/dist/components/layout-manager.d.ts +76 -0
  58. package/dist/components/layout-manager.d.ts.map +1 -0
  59. package/dist/components/layout-manager.js +538 -0
  60. package/dist/components/layout-manager.js.map +1 -0
  61. package/dist/components/monitoring-dashboard.d.ts +85 -0
  62. package/dist/components/monitoring-dashboard.d.ts.map +1 -0
  63. package/dist/components/monitoring-dashboard.js +908 -0
  64. package/dist/components/monitoring-dashboard.js.map +1 -0
  65. package/dist/components/search-panel.d.ts +80 -0
  66. package/dist/components/search-panel.d.ts.map +1 -0
  67. package/dist/components/search-panel.js +585 -0
  68. package/dist/components/search-panel.js.map +1 -0
  69. package/dist/components/status-bar.d.ts +77 -0
  70. package/dist/components/status-bar.d.ts.map +1 -0
  71. package/dist/components/status-bar.js +482 -0
  72. package/dist/components/status-bar.js.map +1 -0
  73. package/dist/components/status.component.d.ts +16 -0
  74. package/dist/components/status.component.d.ts.map +1 -0
  75. package/dist/components/status.component.js +79 -0
  76. package/dist/components/status.component.js.map +1 -0
  77. package/dist/components/stream-metrics.panel.d.ts +86 -0
  78. package/dist/components/stream-metrics.panel.d.ts.map +1 -0
  79. package/dist/components/stream-metrics.panel.js +395 -0
  80. package/dist/components/stream-metrics.panel.js.map +1 -0
  81. package/dist/components/system-resource.panel.d.ts +78 -0
  82. package/dist/components/system-resource.panel.d.ts.map +1 -0
  83. package/dist/components/system-resource.panel.js +642 -0
  84. package/dist/components/system-resource.panel.js.map +1 -0
  85. package/dist/components/tooltip.d.ts +35 -0
  86. package/dist/components/tooltip.d.ts.map +1 -0
  87. package/dist/components/tooltip.js +156 -0
  88. package/dist/components/tooltip.js.map +1 -0
  89. package/dist/config/config-io.d.ts +63 -0
  90. package/dist/config/config-io.d.ts.map +1 -0
  91. package/dist/config/config-io.js +352 -0
  92. package/dist/config/config-io.js.map +1 -0
  93. package/dist/config/config-manager.d.ts +51 -0
  94. package/dist/config/config-manager.d.ts.map +1 -0
  95. package/dist/config/config-manager.js +404 -0
  96. package/dist/config/config-manager.js.map +1 -0
  97. package/dist/config/config-validator.d.ts +27 -0
  98. package/dist/config/config-validator.d.ts.map +1 -0
  99. package/dist/config/config-validator.js +421 -0
  100. package/dist/config/config-validator.js.map +1 -0
  101. package/dist/config/custom-theme-builder.d.ts +88 -0
  102. package/dist/config/custom-theme-builder.d.ts.map +1 -0
  103. package/dist/config/custom-theme-builder.js +458 -0
  104. package/dist/config/custom-theme-builder.js.map +1 -0
  105. package/dist/config/layout-manager.d.ts +60 -0
  106. package/dist/config/layout-manager.d.ts.map +1 -0
  107. package/dist/config/layout-manager.js +595 -0
  108. package/dist/config/layout-manager.js.map +1 -0
  109. package/dist/config/monitoring.d.ts +27 -0
  110. package/dist/config/monitoring.d.ts.map +1 -0
  111. package/dist/config/monitoring.js +276 -0
  112. package/dist/config/monitoring.js.map +1 -0
  113. package/dist/config/theme-manager.d.ts +53 -0
  114. package/dist/config/theme-manager.d.ts.map +1 -0
  115. package/dist/config/theme-manager.js +490 -0
  116. package/dist/config/theme-manager.js.map +1 -0
  117. package/dist/handlers/monitor.handler.d.ts +28 -0
  118. package/dist/handlers/monitor.handler.d.ts.map +1 -0
  119. package/dist/handlers/monitor.handler.js +457 -0
  120. package/dist/handlers/monitor.handler.js.map +1 -0
  121. package/dist/index.d.ts +9 -1
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +24 -3
  124. package/dist/index.js.map +1 -1
  125. package/dist/performance/adaptive-polling.d.ts +69 -0
  126. package/dist/performance/adaptive-polling.d.ts.map +1 -0
  127. package/dist/performance/adaptive-polling.js +313 -0
  128. package/dist/performance/adaptive-polling.js.map +1 -0
  129. package/dist/performance/api-analytics.d.ts +137 -0
  130. package/dist/performance/api-analytics.d.ts.map +1 -0
  131. package/dist/performance/api-analytics.js +351 -0
  132. package/dist/performance/api-analytics.js.map +1 -0
  133. package/dist/performance/api-optimizer.d.ts +66 -0
  134. package/dist/performance/api-optimizer.d.ts.map +1 -0
  135. package/dist/performance/api-optimizer.js +368 -0
  136. package/dist/performance/api-optimizer.js.map +1 -0
  137. package/dist/performance/batch-request-manager.d.ts +89 -0
  138. package/dist/performance/batch-request-manager.d.ts.map +1 -0
  139. package/dist/performance/batch-request-manager.js +351 -0
  140. package/dist/performance/batch-request-manager.js.map +1 -0
  141. package/dist/performance/change-detector.d.ts +75 -0
  142. package/dist/performance/change-detector.d.ts.map +1 -0
  143. package/dist/performance/change-detector.js +392 -0
  144. package/dist/performance/change-detector.js.map +1 -0
  145. package/dist/performance/connection-pool-manager.d.ts +99 -0
  146. package/dist/performance/connection-pool-manager.d.ts.map +1 -0
  147. package/dist/performance/connection-pool-manager.js +474 -0
  148. package/dist/performance/connection-pool-manager.js.map +1 -0
  149. package/dist/performance/error-recovery-manager.d.ts +134 -0
  150. package/dist/performance/error-recovery-manager.d.ts.map +1 -0
  151. package/dist/performance/error-recovery-manager.js +673 -0
  152. package/dist/performance/error-recovery-manager.js.map +1 -0
  153. package/dist/performance/fallback-manager.d.ts +123 -0
  154. package/dist/performance/fallback-manager.d.ts.map +1 -0
  155. package/dist/performance/fallback-manager.js +524 -0
  156. package/dist/performance/fallback-manager.js.map +1 -0
  157. package/dist/performance/index.d.ts +13 -0
  158. package/dist/performance/index.d.ts.map +1 -0
  159. package/dist/performance/index.js +28 -0
  160. package/dist/performance/index.js.map +1 -0
  161. package/dist/performance/memory-manager.d.ts +97 -0
  162. package/dist/performance/memory-manager.d.ts.map +1 -0
  163. package/dist/performance/memory-manager.js +417 -0
  164. package/dist/performance/memory-manager.js.map +1 -0
  165. package/dist/performance/performance-monitor.d.ts +149 -0
  166. package/dist/performance/performance-monitor.d.ts.map +1 -0
  167. package/dist/performance/performance-monitor.js +513 -0
  168. package/dist/performance/performance-monitor.js.map +1 -0
  169. package/dist/performance/performance-optimizer.d.ts +110 -0
  170. package/dist/performance/performance-optimizer.d.ts.map +1 -0
  171. package/dist/performance/performance-optimizer.js +476 -0
  172. package/dist/performance/performance-optimizer.js.map +1 -0
  173. package/dist/performance/render-optimizer.d.ts +95 -0
  174. package/dist/performance/render-optimizer.d.ts.map +1 -0
  175. package/dist/performance/render-optimizer.js +408 -0
  176. package/dist/performance/render-optimizer.js.map +1 -0
  177. package/dist/services/index.d.ts +1 -0
  178. package/dist/services/index.d.ts.map +1 -1
  179. package/dist/services/index.js +3 -1
  180. package/dist/services/index.js.map +1 -1
  181. package/dist/services/system-resource.service.d.ts +168 -0
  182. package/dist/services/system-resource.service.d.ts.map +1 -0
  183. package/dist/services/system-resource.service.js +544 -0
  184. package/dist/services/system-resource.service.js.map +1 -0
  185. package/dist/types/alert.d.ts +147 -0
  186. package/dist/types/alert.d.ts.map +1 -0
  187. package/dist/types/alert.js +3 -0
  188. package/dist/types/alert.js.map +1 -0
  189. package/dist/types/index.d.ts +3 -0
  190. package/dist/types/index.d.ts.map +1 -1
  191. package/dist/types/index.js +2 -0
  192. package/dist/types/index.js.map +1 -1
  193. package/dist/types/interaction.d.ts +147 -0
  194. package/dist/types/interaction.d.ts.map +1 -0
  195. package/dist/types/interaction.js +3 -0
  196. package/dist/types/interaction.js.map +1 -0
  197. package/dist/types/monitoring.d.ts +233 -0
  198. package/dist/types/monitoring.d.ts.map +1 -0
  199. package/dist/types/monitoring.js +35 -0
  200. package/dist/types/monitoring.js.map +1 -0
  201. package/dist/utils/alert-history-manager.d.ts +72 -0
  202. package/dist/utils/alert-history-manager.d.ts.map +1 -0
  203. package/dist/utils/alert-history-manager.js +492 -0
  204. package/dist/utils/alert-history-manager.js.map +1 -0
  205. package/dist/utils/alert-manager.d.ts +75 -0
  206. package/dist/utils/alert-manager.d.ts.map +1 -0
  207. package/dist/utils/alert-manager.js +348 -0
  208. package/dist/utils/alert-manager.js.map +1 -0
  209. package/dist/utils/alert-rule-manager.d.ts +51 -0
  210. package/dist/utils/alert-rule-manager.d.ts.map +1 -0
  211. package/dist/utils/alert-rule-manager.js +515 -0
  212. package/dist/utils/alert-rule-manager.js.map +1 -0
  213. package/dist/utils/data-manager.d.ts +53 -0
  214. package/dist/utils/data-manager.d.ts.map +1 -0
  215. package/dist/utils/data-manager.js +228 -0
  216. package/dist/utils/data-manager.js.map +1 -0
  217. package/dist/utils/formatter.d.ts +5 -0
  218. package/dist/utils/formatter.d.ts.map +1 -1
  219. package/dist/utils/formatter.js +19 -0
  220. package/dist/utils/formatter.js.map +1 -1
  221. package/dist/utils/index.d.ts +6 -0
  222. package/dist/utils/index.d.ts.map +1 -1
  223. package/dist/utils/index.js +6 -0
  224. package/dist/utils/index.js.map +1 -1
  225. package/dist/utils/keyboard-handler.d.ts +32 -0
  226. package/dist/utils/keyboard-handler.d.ts.map +1 -0
  227. package/dist/utils/keyboard-handler.js +193 -0
  228. package/dist/utils/keyboard-handler.js.map +1 -0
  229. package/dist/utils/mouse-handler.d.ts +61 -0
  230. package/dist/utils/mouse-handler.d.ts.map +1 -0
  231. package/dist/utils/mouse-handler.js +192 -0
  232. package/dist/utils/mouse-handler.js.map +1 -0
  233. package/dist/utils/stream-verification.d.ts.map +1 -1
  234. package/dist/utils/stream-verification.js +2 -13
  235. package/dist/utils/stream-verification.js.map +1 -1
  236. package/dist/utils/terminal.d.ts +24 -0
  237. package/dist/utils/terminal.d.ts.map +1 -0
  238. package/dist/utils/terminal.js +148 -0
  239. package/dist/utils/terminal.js.map +1 -0
  240. package/dist/utils/time-series.processor.d.ts +65 -0
  241. package/dist/utils/time-series.processor.d.ts.map +1 -0
  242. package/dist/utils/time-series.processor.js +263 -0
  243. package/dist/utils/time-series.processor.js.map +1 -0
  244. package/package.json +28 -4
@@ -0,0 +1,597 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InteractionManager = void 0;
4
+ const events_1 = require("events");
5
+ class InteractionManager extends events_1.EventEmitter {
6
+ constructor(screen, config) {
7
+ super();
8
+ this.focusableComponents = new Map();
9
+ this.focusHistory = [];
10
+ this.shortcuts = new Map();
11
+ this.isDestroyed = false;
12
+ this.screen = screen;
13
+ this.config = config;
14
+ this.initializeInteractionHandlers();
15
+ this.registerDefaultShortcuts();
16
+ }
17
+ initializeInteractionHandlers() {
18
+ if (!this.screen) {
19
+ throw new Error('Screen instance is required for interaction management');
20
+ }
21
+ if (this.config.keyboardEnabled) {
22
+ this.setupKeyboardHandling();
23
+ }
24
+ if (this.config.mouseEnabled) {
25
+ this.setupMouseHandling();
26
+ }
27
+ if (this.config.mouseEnabled && this.screen.program) {
28
+ this.screen.program.enableMouse();
29
+ }
30
+ }
31
+ setupKeyboardHandling() {
32
+ this.screen.on('keypress', (ch, key) => {
33
+ if (this.isDestroyed || !key)
34
+ return;
35
+ const keyboardEvent = {
36
+ key: key.name || '',
37
+ shift: key.shift || false,
38
+ ctrl: key.ctrl || false,
39
+ alt: key.meta || false,
40
+ meta: key.meta || false,
41
+ full: key.full || '',
42
+ ch: ch || '',
43
+ };
44
+ this.handleKeyboardEvent(keyboardEvent);
45
+ });
46
+ this.screen.key(['tab'], () => {
47
+ this.focusNext();
48
+ });
49
+ this.screen.key(['S-tab'], () => {
50
+ this.focusPrevious();
51
+ });
52
+ this.screen.key(['escape'], () => {
53
+ this.handleEscape();
54
+ });
55
+ this.screen.key(['enter'], () => {
56
+ this.handleEnter();
57
+ });
58
+ }
59
+ setupMouseHandling() {
60
+ this.screen.on('mouse', (data) => {
61
+ if (this.isDestroyed)
62
+ return;
63
+ const mouseEvent = {
64
+ action: data.action || 'mousedown',
65
+ x: data.x || 0,
66
+ y: data.y || 0,
67
+ button: data.button || 'left',
68
+ shift: data.shift || false,
69
+ ctrl: data.ctrl || false,
70
+ };
71
+ this.handleMouseEvent(mouseEvent);
72
+ });
73
+ }
74
+ registerDefaultShortcuts() {
75
+ const defaultShortcuts = [
76
+ {
77
+ key: 'f5',
78
+ description: 'Refresh all monitoring data',
79
+ action: 'refresh-all',
80
+ global: true,
81
+ },
82
+ {
83
+ key: 'ctrl+r',
84
+ description: 'Refresh current panel',
85
+ action: 'refresh-current',
86
+ global: true,
87
+ },
88
+ {
89
+ key: 'f1',
90
+ description: 'Show help and shortcuts',
91
+ action: 'help',
92
+ global: true,
93
+ },
94
+ {
95
+ key: '?',
96
+ description: 'Show help and shortcuts',
97
+ action: 'help',
98
+ global: true,
99
+ },
100
+ {
101
+ key: 'q',
102
+ description: 'Exit application',
103
+ action: 'exit',
104
+ global: true,
105
+ },
106
+ {
107
+ key: 'ctrl+c',
108
+ description: 'Exit application',
109
+ action: 'exit',
110
+ global: true,
111
+ },
112
+ {
113
+ key: 'escape',
114
+ description: 'Cancel current operation or exit',
115
+ action: 'cancel',
116
+ global: true,
117
+ },
118
+ {
119
+ key: 'f11',
120
+ description: 'Toggle fullscreen for current panel',
121
+ action: 'fullscreen',
122
+ global: true,
123
+ },
124
+ {
125
+ key: 'ctrl+l',
126
+ description: 'Clear and redraw screen',
127
+ action: 'clear-screen',
128
+ global: true,
129
+ },
130
+ ...Array.from({ length: 9 }, (_, i) => ({
131
+ key: `${i + 1}`,
132
+ description: `Switch to layout ${i + 1}`,
133
+ action: `layout:${i + 1}`,
134
+ global: true,
135
+ })),
136
+ {
137
+ key: 'ctrl+f',
138
+ description: 'Open search',
139
+ action: 'search',
140
+ global: true,
141
+ context: 'list',
142
+ },
143
+ {
144
+ key: '/',
145
+ description: 'Quick search',
146
+ action: 'search',
147
+ global: true,
148
+ context: 'list',
149
+ },
150
+ ];
151
+ const allShortcuts = [...defaultShortcuts, ...this.config.shortcuts];
152
+ allShortcuts.forEach(shortcut => {
153
+ this.registerShortcut(shortcut);
154
+ });
155
+ }
156
+ handleKeyboardEvent(event) {
157
+ this.emit('keyboard:event', event);
158
+ const shortcutKey = this.buildShortcutKey(event);
159
+ if (this.shortcuts.has(shortcutKey)) {
160
+ const shortcut = this.shortcuts.get(shortcutKey);
161
+ this.activateShortcut(shortcut, event);
162
+ return;
163
+ }
164
+ if (this.currentFocus) {
165
+ const component = this.focusableComponents.get(this.currentFocus);
166
+ if (component && component.handleKeyboard(event)) {
167
+ return;
168
+ }
169
+ }
170
+ this.handleNavigationKeys(event);
171
+ }
172
+ handleMouseEvent(event) {
173
+ this.emit('mouse:event', event);
174
+ if (event.action === 'wheelup' || event.action === 'wheeldown') {
175
+ this.handleScrollEvent(event);
176
+ return;
177
+ }
178
+ if (event.action === 'mousedown' && event.button === 'right') {
179
+ this.handleContextMenu(event);
180
+ return;
181
+ }
182
+ if (event.action === 'mousemove') {
183
+ this.handleMouseHover(event);
184
+ }
185
+ const componentAtPosition = this.findComponentAtPosition(event.x, event.y);
186
+ if (componentAtPosition) {
187
+ const { id, component } = componentAtPosition;
188
+ if (component.handleMouse(event)) {
189
+ if (event.action === 'mousedown' && event.button === 'left') {
190
+ this.setFocus(id);
191
+ }
192
+ return;
193
+ }
194
+ }
195
+ for (const [id, component] of this.focusableComponents) {
196
+ if (component.handleMouse(event)) {
197
+ if (event.action === 'mousedown' && event.button === 'left') {
198
+ this.setFocus(id);
199
+ }
200
+ return;
201
+ }
202
+ }
203
+ }
204
+ buildShortcutKey(event) {
205
+ const parts = [];
206
+ if (event.ctrl)
207
+ parts.push('C');
208
+ if (event.alt)
209
+ parts.push('A');
210
+ if (event.shift)
211
+ parts.push('S');
212
+ if (event.meta)
213
+ parts.push('M');
214
+ parts.push(event.key);
215
+ return parts.join('-').toLowerCase();
216
+ }
217
+ handleNavigationKeys(event) {
218
+ switch (event.key) {
219
+ case 'up':
220
+ case 'down':
221
+ case 'left':
222
+ case 'right':
223
+ this.handleArrowKeys(event.key);
224
+ break;
225
+ case 'home':
226
+ this.focusFirst();
227
+ break;
228
+ case 'end':
229
+ this.focusLast();
230
+ break;
231
+ }
232
+ }
233
+ handleArrowKeys(direction) {
234
+ if (!this.currentFocus) {
235
+ this.focusFirst();
236
+ return;
237
+ }
238
+ switch (direction) {
239
+ case 'up':
240
+ case 'left':
241
+ this.focusPrevious();
242
+ break;
243
+ case 'down':
244
+ case 'right':
245
+ this.focusNext();
246
+ break;
247
+ }
248
+ }
249
+ handleEscape() {
250
+ if (this.currentFocus) {
251
+ const component = this.focusableComponents.get(this.currentFocus);
252
+ if (component) {
253
+ const handled = component.handleKeyboard({
254
+ key: 'escape',
255
+ shift: false,
256
+ ctrl: false,
257
+ alt: false,
258
+ meta: false,
259
+ });
260
+ if (!handled) {
261
+ this.clearFocus();
262
+ }
263
+ }
264
+ }
265
+ }
266
+ handleEnter() {
267
+ if (this.currentFocus) {
268
+ const component = this.focusableComponents.get(this.currentFocus);
269
+ if (component) {
270
+ component.handleKeyboard({
271
+ key: 'enter',
272
+ shift: false,
273
+ ctrl: false,
274
+ alt: false,
275
+ meta: false,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ handleScrollEvent(event) {
281
+ const componentAtPosition = this.findComponentAtPosition(event.x, event.y);
282
+ if (componentAtPosition) {
283
+ const { component } = componentAtPosition;
284
+ if (component.handleMouse(event)) {
285
+ return;
286
+ }
287
+ }
288
+ if (this.currentFocus) {
289
+ const component = this.focusableComponents.get(this.currentFocus);
290
+ if (component) {
291
+ component.handleMouse(event);
292
+ }
293
+ }
294
+ this.emit('scroll:event', {
295
+ direction: event.action === 'wheelup' ? 'up' : 'down',
296
+ x: event.x,
297
+ y: event.y,
298
+ });
299
+ }
300
+ handleMouseHover(event) {
301
+ const componentAtPosition = this.findComponentAtPosition(event.x, event.y);
302
+ if (componentAtPosition) {
303
+ const { id, component } = componentAtPosition;
304
+ this.emit('component:hover', {
305
+ componentId: id,
306
+ componentType: component.getType(),
307
+ x: event.x,
308
+ y: event.y,
309
+ });
310
+ component.handleMouse(event);
311
+ }
312
+ else {
313
+ this.emit('component:hover:clear');
314
+ }
315
+ }
316
+ findComponentAtPosition(x, y) {
317
+ for (const [id, component] of this.focusableComponents) {
318
+ if (component.canFocus() && this.isPositionInComponent(x, y, component)) {
319
+ return { id, component };
320
+ }
321
+ }
322
+ if (this.currentFocus) {
323
+ const component = this.focusableComponents.get(this.currentFocus);
324
+ if (component && component.canFocus()) {
325
+ return { id: this.currentFocus, component };
326
+ }
327
+ }
328
+ return undefined;
329
+ }
330
+ isPositionInComponent(x, y, component) {
331
+ if (component && typeof component.getComponentBounds === 'function') {
332
+ const bounds = component.getComponentBounds();
333
+ if (bounds) {
334
+ return x >= bounds.left && x <= bounds.right &&
335
+ y >= bounds.top && y <= bounds.bottom;
336
+ }
337
+ }
338
+ return true;
339
+ }
340
+ handleContextMenu(event) {
341
+ let context = 'global';
342
+ let componentId = '';
343
+ const componentAtPosition = this.findComponentAtPosition(event.x, event.y);
344
+ if (componentAtPosition) {
345
+ context = componentAtPosition.component.getType();
346
+ componentId = componentAtPosition.id;
347
+ }
348
+ this.emit('contextmenu:requested', {
349
+ x: event.x,
350
+ y: event.y,
351
+ context,
352
+ componentId,
353
+ });
354
+ }
355
+ registerComponent(component) {
356
+ if (this.isDestroyed)
357
+ return;
358
+ const id = component.getId();
359
+ this.focusableComponents.set(id, component);
360
+ if (!this.currentFocus && component.canFocus()) {
361
+ this.setFocus(id);
362
+ }
363
+ }
364
+ unregisterComponent(id) {
365
+ if (this.isDestroyed)
366
+ return;
367
+ if (this.currentFocus === id) {
368
+ this.focusableComponents.delete(id);
369
+ const remainingComponents = Array.from(this.focusableComponents.values())
370
+ .filter(c => c.canFocus());
371
+ if (remainingComponents.length > 0) {
372
+ const firstComponent = remainingComponents[0];
373
+ if (firstComponent) {
374
+ this.setFocus(firstComponent.getId());
375
+ }
376
+ }
377
+ else {
378
+ this.currentFocus = undefined;
379
+ this.emit('focus:changed', {
380
+ previous: id,
381
+ current: undefined,
382
+ });
383
+ }
384
+ }
385
+ else {
386
+ this.focusableComponents.delete(id);
387
+ }
388
+ this.focusHistory = this.focusHistory.filter(historyId => historyId !== id);
389
+ }
390
+ setFocus(componentId) {
391
+ if (this.isDestroyed)
392
+ return false;
393
+ const component = this.focusableComponents.get(componentId);
394
+ if (!component || !component.canFocus()) {
395
+ return false;
396
+ }
397
+ const previousFocus = this.currentFocus;
398
+ if (previousFocus && previousFocus !== componentId) {
399
+ const prevComponent = this.focusableComponents.get(previousFocus);
400
+ if (prevComponent) {
401
+ prevComponent.blur();
402
+ }
403
+ }
404
+ this.currentFocus = componentId;
405
+ component.focus();
406
+ if (previousFocus && previousFocus !== componentId) {
407
+ this.focusHistory.push(previousFocus);
408
+ if (this.focusHistory.length > 10) {
409
+ this.focusHistory.shift();
410
+ }
411
+ }
412
+ this.emit('focus:changed', {
413
+ previous: previousFocus,
414
+ current: componentId,
415
+ });
416
+ return true;
417
+ }
418
+ focusNext() {
419
+ if (this.isDestroyed)
420
+ return;
421
+ const components = Array.from(this.focusableComponents.values())
422
+ .filter(c => c.canFocus())
423
+ .sort((a, b) => a.getFocusState().tabIndex - b.getFocusState().tabIndex);
424
+ if (components.length === 0)
425
+ return;
426
+ if (!this.currentFocus) {
427
+ const firstComponent = components[0];
428
+ if (firstComponent) {
429
+ this.setFocus(firstComponent.getId());
430
+ }
431
+ return;
432
+ }
433
+ const currentIndex = components.findIndex(c => c.getId() === this.currentFocus);
434
+ const nextIndex = (currentIndex + 1) % components.length;
435
+ const nextComponent = components[nextIndex];
436
+ if (nextComponent) {
437
+ this.setFocus(nextComponent.getId());
438
+ }
439
+ }
440
+ focusPrevious() {
441
+ if (this.isDestroyed)
442
+ return;
443
+ const components = Array.from(this.focusableComponents.values())
444
+ .filter(c => c.canFocus())
445
+ .sort((a, b) => a.getFocusState().tabIndex - b.getFocusState().tabIndex);
446
+ if (components.length === 0)
447
+ return;
448
+ if (!this.currentFocus) {
449
+ const lastComponent = components[components.length - 1];
450
+ if (lastComponent) {
451
+ this.setFocus(lastComponent.getId());
452
+ }
453
+ return;
454
+ }
455
+ const currentIndex = components.findIndex(c => c.getId() === this.currentFocus);
456
+ const prevIndex = currentIndex === 0 ? components.length - 1 : currentIndex - 1;
457
+ const prevComponent = components[prevIndex];
458
+ if (prevComponent) {
459
+ this.setFocus(prevComponent.getId());
460
+ }
461
+ }
462
+ focusFirst() {
463
+ if (this.isDestroyed)
464
+ return;
465
+ const components = Array.from(this.focusableComponents.values())
466
+ .filter(c => c.canFocus())
467
+ .sort((a, b) => a.getFocusState().tabIndex - b.getFocusState().tabIndex);
468
+ if (components.length > 0) {
469
+ const firstComponent = components[0];
470
+ if (firstComponent) {
471
+ this.setFocus(firstComponent.getId());
472
+ }
473
+ }
474
+ }
475
+ focusLast() {
476
+ if (this.isDestroyed)
477
+ return;
478
+ const components = Array.from(this.focusableComponents.values())
479
+ .filter(c => c.canFocus())
480
+ .sort((a, b) => a.getFocusState().tabIndex - b.getFocusState().tabIndex);
481
+ if (components.length > 0) {
482
+ const lastComponent = components[components.length - 1];
483
+ if (lastComponent) {
484
+ this.setFocus(lastComponent.getId());
485
+ }
486
+ }
487
+ }
488
+ clearFocus() {
489
+ if (this.isDestroyed || !this.currentFocus)
490
+ return;
491
+ const component = this.focusableComponents.get(this.currentFocus);
492
+ if (component) {
493
+ component.blur();
494
+ }
495
+ const previousFocus = this.currentFocus;
496
+ this.currentFocus = undefined;
497
+ this.emit('focus:changed', {
498
+ previous: previousFocus,
499
+ current: undefined,
500
+ });
501
+ }
502
+ registerShortcut(shortcut) {
503
+ if (this.isDestroyed)
504
+ return;
505
+ const key = shortcut.key.toLowerCase();
506
+ this.shortcuts.set(key, shortcut);
507
+ }
508
+ unregisterShortcut(key) {
509
+ if (this.isDestroyed)
510
+ return;
511
+ this.shortcuts.delete(key.toLowerCase());
512
+ }
513
+ activateShortcut(shortcut, _event) {
514
+ this.emit('shortcut:activated', {
515
+ key: shortcut.key,
516
+ action: shortcut.action,
517
+ });
518
+ switch (shortcut.action) {
519
+ case 'refresh-all':
520
+ this.emit('action:refresh-all');
521
+ break;
522
+ case 'refresh-current':
523
+ this.emit('action:refresh-current');
524
+ break;
525
+ case 'help':
526
+ this.emit('action:help');
527
+ break;
528
+ case 'exit':
529
+ this.emit('action:exit');
530
+ break;
531
+ case 'cancel':
532
+ this.emit('action:cancel');
533
+ break;
534
+ case 'fullscreen':
535
+ this.emit('action:fullscreen');
536
+ break;
537
+ case 'clear-screen':
538
+ this.emit('action:clear-screen');
539
+ break;
540
+ case 'search':
541
+ this.emit('action:search');
542
+ break;
543
+ default:
544
+ if (shortcut.action.startsWith('layout:')) {
545
+ const layoutNumber = shortcut.action.split(':')[1];
546
+ this.emit('action:layout', { layout: layoutNumber });
547
+ }
548
+ else if (shortcut.action.startsWith('panel:')) {
549
+ const panelNumber = shortcut.action.split(':')[1];
550
+ this.emit('action:panel', { panel: panelNumber });
551
+ }
552
+ else {
553
+ this.emit('action:custom', {
554
+ action: shortcut.action,
555
+ key: shortcut.key,
556
+ description: shortcut.description
557
+ });
558
+ }
559
+ break;
560
+ }
561
+ }
562
+ getAllShortcuts() {
563
+ return Array.from(this.shortcuts.values());
564
+ }
565
+ getCurrentFocus() {
566
+ return this.currentFocus;
567
+ }
568
+ getComponents() {
569
+ return Array.from(this.focusableComponents.values());
570
+ }
571
+ getShortcuts() {
572
+ return Array.from(this.shortcuts.values());
573
+ }
574
+ getComponent(id) {
575
+ return this.focusableComponents.get(id);
576
+ }
577
+ isInteractionManagerDestroyed() {
578
+ return this.isDestroyed;
579
+ }
580
+ destroy() {
581
+ if (this.isDestroyed)
582
+ return;
583
+ this.isDestroyed = true;
584
+ this.clearFocus();
585
+ this.focusableComponents.clear();
586
+ this.currentFocus = undefined;
587
+ this.shortcuts.clear();
588
+ this.focusHistory = [];
589
+ if (this.config.mouseEnabled && this.screen?.program) {
590
+ this.screen.program.disableMouse();
591
+ }
592
+ this.removeAllListeners();
593
+ this.emit('destroyed');
594
+ }
595
+ }
596
+ exports.InteractionManager = InteractionManager;
597
+ //# sourceMappingURL=interaction-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction-manager.js","sourceRoot":"","sources":["../../src/components/interaction-manager.ts"],"names":[],"mappings":"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"}