@jqhtml/core 2.2.222

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 (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/component-registry.d.ts +64 -0
  4. package/dist/component-registry.d.ts.map +1 -0
  5. package/dist/component.d.ts +336 -0
  6. package/dist/component.d.ts.map +1 -0
  7. package/dist/debug-entry.d.ts +36 -0
  8. package/dist/debug-entry.d.ts.map +1 -0
  9. package/dist/debug-overlay.d.ts +61 -0
  10. package/dist/debug-overlay.d.ts.map +1 -0
  11. package/dist/debug.d.ts +19 -0
  12. package/dist/debug.d.ts.map +1 -0
  13. package/dist/index.cjs +4384 -0
  14. package/dist/index.cjs.map +1 -0
  15. package/dist/index.d.ts +91 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +4347 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/instruction-processor.d.ts +31 -0
  20. package/dist/instruction-processor.d.ts.map +1 -0
  21. package/dist/jqhtml-core.esm.js +4352 -0
  22. package/dist/jqhtml-core.esm.js.map +1 -0
  23. package/dist/jqhtml-debug.esm.js +575 -0
  24. package/dist/jqhtml-debug.esm.js.map +1 -0
  25. package/dist/jquery-plugin.d.ts +30 -0
  26. package/dist/jquery-plugin.d.ts.map +1 -0
  27. package/dist/lifecycle-manager.d.ts +34 -0
  28. package/dist/lifecycle-manager.d.ts.map +1 -0
  29. package/dist/load-coordinator.d.ts +79 -0
  30. package/dist/load-coordinator.d.ts.map +1 -0
  31. package/dist/local-storage.d.ts +147 -0
  32. package/dist/local-storage.d.ts.map +1 -0
  33. package/dist/template-renderer.d.ts +17 -0
  34. package/dist/template-renderer.d.ts.map +1 -0
  35. package/laravel-bridge/README.md +242 -0
  36. package/laravel-bridge/autoload.php +51 -0
  37. package/laravel-bridge/composer.json +34 -0
  38. package/laravel-bridge/config/jqhtml.php +82 -0
  39. package/laravel-bridge/examples/node-integration.js +201 -0
  40. package/laravel-bridge/src/JqhtmlErrorFormatter.php +187 -0
  41. package/laravel-bridge/src/JqhtmlException.php +173 -0
  42. package/laravel-bridge/src/JqhtmlExceptionRenderer.php +93 -0
  43. package/laravel-bridge/src/JqhtmlServiceProvider.php +72 -0
  44. package/laravel-bridge/src/Middleware/JqhtmlErrorMiddleware.php +90 -0
  45. package/laravel-bridge/tests/ExceptionFormattingTest.php +219 -0
  46. package/package.json +74 -0
@@ -0,0 +1,575 @@
1
+ /**
2
+ * JQHTML Debug Overlay
3
+ *
4
+ * Independent debug controls using pure jQuery DOM manipulation.
5
+ * Does NOT use JQHTML components so it works even when components are broken.
6
+ */
7
+ // Get global jQuery
8
+ function getJQuery() {
9
+ if (typeof window !== 'undefined' && window.$) {
10
+ return window.$;
11
+ }
12
+ if (typeof window !== 'undefined' && window.jQuery) {
13
+ return window.jQuery;
14
+ }
15
+ throw new Error('FATAL: jQuery is not defined. jQuery must be loaded before using JQHTML. ' +
16
+ 'Add <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> before loading JQHTML.');
17
+ }
18
+ // Get global jqhtml object
19
+ function getJqhtml$1() {
20
+ if (typeof window !== 'undefined' && window.jqhtml) {
21
+ return window.jqhtml;
22
+ }
23
+ if (typeof globalThis !== 'undefined' && globalThis.jqhtml) {
24
+ return globalThis.jqhtml;
25
+ }
26
+ throw new Error('FATAL: window.jqhtml is not defined. The JQHTML runtime must be loaded before using JQHTML components. ' +
27
+ 'Ensure @jqhtml/core is imported and initialized before attempting to use debug features.');
28
+ }
29
+ class DebugOverlay {
30
+ constructor(options = {}) {
31
+ this.$container = null;
32
+ this.$statusIndicator = null;
33
+ this.$ = getJQuery();
34
+ if (!this.$) {
35
+ throw new Error('jQuery is required for DebugOverlay');
36
+ }
37
+ this.options = {
38
+ position: 'bottom',
39
+ theme: 'dark',
40
+ compact: false,
41
+ showStatus: true,
42
+ autoHide: false,
43
+ ...options
44
+ };
45
+ }
46
+ /**
47
+ * Static method to show debug overlay (singleton pattern)
48
+ */
49
+ static show(options) {
50
+ if (!DebugOverlay.instance) {
51
+ DebugOverlay.instance = new DebugOverlay(options);
52
+ }
53
+ DebugOverlay.instance.display();
54
+ return DebugOverlay.instance;
55
+ }
56
+ /**
57
+ * Static method to hide debug overlay
58
+ */
59
+ static hide() {
60
+ if (DebugOverlay.instance) {
61
+ DebugOverlay.instance.hide();
62
+ }
63
+ }
64
+ /**
65
+ * Static method to toggle debug overlay visibility
66
+ */
67
+ static toggle() {
68
+ if (DebugOverlay.instance && DebugOverlay.instance.$container) {
69
+ if (DebugOverlay.instance.$container.is(':visible')) {
70
+ DebugOverlay.hide();
71
+ }
72
+ else {
73
+ DebugOverlay.instance.display();
74
+ }
75
+ }
76
+ else {
77
+ DebugOverlay.show();
78
+ }
79
+ }
80
+ /**
81
+ * Static method to destroy debug overlay
82
+ */
83
+ static destroy() {
84
+ if (DebugOverlay.instance) {
85
+ DebugOverlay.instance.destroy();
86
+ DebugOverlay.instance = null;
87
+ }
88
+ }
89
+ /**
90
+ * Display the debug overlay
91
+ */
92
+ display() {
93
+ if (this.$container) {
94
+ this.$container.show();
95
+ return;
96
+ }
97
+ this.createOverlay();
98
+ if (this.options.showStatus) {
99
+ this.createStatusIndicator();
100
+ }
101
+ }
102
+ /**
103
+ * Hide the debug overlay
104
+ */
105
+ hide() {
106
+ if (this.$container) {
107
+ this.$container.hide();
108
+ }
109
+ if (this.$statusIndicator) {
110
+ this.$statusIndicator.hide();
111
+ }
112
+ }
113
+ /**
114
+ * Remove the debug overlay completely
115
+ */
116
+ destroy() {
117
+ if (this.$container) {
118
+ this.$container.remove();
119
+ this.$container = null;
120
+ }
121
+ if (this.$statusIndicator) {
122
+ this.$statusIndicator.remove();
123
+ this.$statusIndicator = null;
124
+ }
125
+ }
126
+ /**
127
+ * Update the status indicator
128
+ */
129
+ updateStatus(mode) {
130
+ if (!this.$statusIndicator)
131
+ return;
132
+ this.$statusIndicator.text('Debug: ' + mode);
133
+ this.$statusIndicator.attr('class', 'jqhtml-debug-status' + (mode !== 'Off' ? ' active' : ''));
134
+ }
135
+ createOverlay() {
136
+ // Add styles first
137
+ this.addStyles();
138
+ // Create container using jQuery
139
+ this.$container = this.$('<div>')
140
+ .addClass(`jqhtml-debug-overlay ${this.options.theme} ${this.options.position}`);
141
+ // Create content structure
142
+ const $content = this.$('<div>').addClass('jqhtml-debug-content');
143
+ const $controls = this.$('<div>').addClass('jqhtml-debug-controls');
144
+ // Add title
145
+ const $title = this.$('<span>')
146
+ .addClass('jqhtml-debug-title')
147
+ .html('<strong>🐛 JQHTML Debug:</strong>');
148
+ $controls.append($title);
149
+ // Create buttons
150
+ const buttons = [
151
+ { text: 'Slow Motion + Flash', action: 'enableSlowMotionDebug', class: 'success' },
152
+ { text: 'Basic Debug', action: 'enableBasicDebug', class: '' },
153
+ { text: 'Full Debug', action: 'enableFullDebug', class: '' },
154
+ { text: 'Sequential', action: 'enableSequentialMode', class: '' },
155
+ { text: 'Clear Debug', action: 'clearAllDebug', class: 'danger' },
156
+ { text: 'Settings', action: 'showDebugInfo', class: '' }
157
+ ];
158
+ buttons.forEach(btn => {
159
+ const $button = this.$('<button>')
160
+ .text(btn.text)
161
+ .addClass('jqhtml-debug-btn' + (btn.class ? ` ${btn.class}` : ''))
162
+ .on('click', () => this.executeAction(btn.action));
163
+ $controls.append($button);
164
+ });
165
+ // Add minimize/close button
166
+ const $toggleBtn = this.$('<button>')
167
+ .text(this.options.compact ? '▼' : '▲')
168
+ .addClass('jqhtml-debug-toggle')
169
+ .on('click', () => this.toggle());
170
+ $controls.append($toggleBtn);
171
+ // Assemble and add to page
172
+ $content.append($controls);
173
+ this.$container.append($content);
174
+ this.$('body').append(this.$container);
175
+ }
176
+ createStatusIndicator() {
177
+ this.$statusIndicator = this.$('<div>')
178
+ .addClass('jqhtml-debug-status')
179
+ .text('Debug: Off')
180
+ .css({
181
+ position: 'fixed',
182
+ top: '10px',
183
+ right: '10px',
184
+ background: '#2c3e50',
185
+ color: 'white',
186
+ padding: '5px 10px',
187
+ borderRadius: '4px',
188
+ fontSize: '0.75rem',
189
+ zIndex: '10001',
190
+ opacity: '0.8',
191
+ fontFamily: 'monospace'
192
+ });
193
+ this.$('body').append(this.$statusIndicator);
194
+ }
195
+ addStyles() {
196
+ // Check if styles already exist
197
+ if (this.$('#jqhtml-debug-styles').length > 0)
198
+ return;
199
+ // Create and inject CSS using jQuery - concatenated strings for better minification
200
+ const $style = this.$('<style>')
201
+ .attr('id', 'jqhtml-debug-styles')
202
+ .text('.jqhtml-debug-overlay {' +
203
+ 'position: fixed;' +
204
+ 'left: 0;' +
205
+ 'right: 0;' +
206
+ 'z-index: 10000;' +
207
+ 'font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, monospace;' +
208
+ 'font-size: 0.8rem;' +
209
+ 'box-shadow: 0 2px 10px rgba(0,0,0,0.2);' +
210
+ '}' +
211
+ '.jqhtml-debug-overlay.top {' +
212
+ 'top: 0;' +
213
+ '}' +
214
+ '.jqhtml-debug-overlay.bottom {' +
215
+ 'bottom: 0;' +
216
+ '}' +
217
+ '.jqhtml-debug-overlay.dark {' +
218
+ 'background: #34495e;' +
219
+ 'color: #ecf0f1;' +
220
+ '}' +
221
+ '.jqhtml-debug-overlay.light {' +
222
+ 'background: #f8f9fa;' +
223
+ 'color: #333;' +
224
+ 'border-bottom: 1px solid #dee2e6;' +
225
+ '}' +
226
+ '.jqhtml-debug-content {' +
227
+ 'padding: 0.5rem 1rem;' +
228
+ '}' +
229
+ '.jqhtml-debug-controls {' +
230
+ 'display: flex;' +
231
+ 'flex-wrap: wrap;' +
232
+ 'gap: 8px;' +
233
+ 'align-items: center;' +
234
+ '}' +
235
+ '.jqhtml-debug-title {' +
236
+ 'margin-right: 10px;' +
237
+ 'font-weight: bold;' +
238
+ '}' +
239
+ '.jqhtml-debug-btn {' +
240
+ 'padding: 4px 8px;' +
241
+ 'border: none;' +
242
+ 'border-radius: 3px;' +
243
+ 'background: #3498db;' +
244
+ 'color: white;' +
245
+ 'cursor: pointer;' +
246
+ 'font-size: 0.75rem;' +
247
+ 'transition: background 0.2s;' +
248
+ '}' +
249
+ '.jqhtml-debug-btn:hover {' +
250
+ 'background: #2980b9;' +
251
+ '}' +
252
+ '.jqhtml-debug-btn.success {' +
253
+ 'background: #27ae60;' +
254
+ '}' +
255
+ '.jqhtml-debug-btn.success:hover {' +
256
+ 'background: #229954;' +
257
+ '}' +
258
+ '.jqhtml-debug-btn.danger {' +
259
+ 'background: #e74c3c;' +
260
+ '}' +
261
+ '.jqhtml-debug-btn.danger:hover {' +
262
+ 'background: #c0392b;' +
263
+ '}' +
264
+ '.jqhtml-debug-toggle {' +
265
+ 'padding: 4px 8px;' +
266
+ 'border: none;' +
267
+ 'border-radius: 3px;' +
268
+ 'background: #7f8c8d;' +
269
+ 'color: white;' +
270
+ 'cursor: pointer;' +
271
+ 'font-size: 0.75rem;' +
272
+ 'margin-left: auto;' +
273
+ '}' +
274
+ '.jqhtml-debug-toggle:hover {' +
275
+ 'background: #6c7b7d;' +
276
+ '}' +
277
+ '.jqhtml-debug-status.active {' +
278
+ 'background: #27ae60 !important;' +
279
+ '}' +
280
+ '@media (max-width: 768px) {' +
281
+ '.jqhtml-debug-controls {' +
282
+ 'flex-direction: column;' +
283
+ 'align-items: flex-start;' +
284
+ '}' +
285
+ '.jqhtml-debug-title {' +
286
+ 'margin-bottom: 5px;' +
287
+ '}' +
288
+ '}');
289
+ this.$('head').append($style);
290
+ }
291
+ toggle() {
292
+ // Toggle between compact and full view
293
+ this.options.compact = !this.options.compact;
294
+ const $toggleBtn = this.$container.find('.jqhtml-debug-toggle');
295
+ $toggleBtn.text(this.options.compact ? '▼' : '▲');
296
+ const $buttons = this.$container.find('.jqhtml-debug-btn');
297
+ if (this.options.compact) {
298
+ $buttons.hide();
299
+ }
300
+ else {
301
+ $buttons.show();
302
+ }
303
+ }
304
+ executeAction(action) {
305
+ const jqhtml = getJqhtml$1();
306
+ if (!jqhtml) {
307
+ console.warn('JQHTML not available - make sure it\'s loaded and exposed globally');
308
+ return;
309
+ }
310
+ switch (action) {
311
+ case 'enableSlowMotionDebug':
312
+ jqhtml.setDebugSettings({
313
+ logFullLifecycle: true,
314
+ sequentialProcessing: true,
315
+ delayAfterComponent: 150,
316
+ delayAfterRender: 200,
317
+ delayAfterRerender: 250,
318
+ flashComponents: true,
319
+ flashDuration: 800,
320
+ flashColors: {
321
+ create: '#3498db',
322
+ render: '#27ae60',
323
+ ready: '#9b59b6'
324
+ },
325
+ profilePerformance: true,
326
+ highlightSlowRenders: 30,
327
+ logDispatch: true
328
+ });
329
+ this.updateStatus('Slow Motion');
330
+ console.log('🐛 Slow Motion Debug Mode Enabled');
331
+ break;
332
+ case 'enableBasicDebug':
333
+ jqhtml.enableDebugMode('basic');
334
+ this.updateStatus('Basic');
335
+ console.log('🐛 Basic Debug Mode Enabled');
336
+ break;
337
+ case 'enableFullDebug':
338
+ jqhtml.enableDebugMode('full');
339
+ this.updateStatus('Full');
340
+ console.log('🐛 Full Debug Mode Enabled');
341
+ break;
342
+ case 'enableSequentialMode':
343
+ jqhtml.setDebugSettings({
344
+ logCreationReady: true,
345
+ sequentialProcessing: true,
346
+ flashComponents: true,
347
+ profilePerformance: true
348
+ });
349
+ this.updateStatus('Sequential');
350
+ console.log('🐛 Sequential Processing Mode Enabled');
351
+ break;
352
+ case 'clearAllDebug':
353
+ jqhtml.clearDebugSettings();
354
+ this.updateStatus('Off');
355
+ console.log('🐛 All Debug Modes Disabled');
356
+ break;
357
+ case 'showDebugInfo':
358
+ const settings = JSON.stringify(jqhtml.debug, null, 2);
359
+ console.log('🐛 Current Debug Settings:', settings);
360
+ alert('Debug settings logged to console:\n\n' + (Object.keys(jqhtml.debug).length > 0 ? settings : 'No debug settings active'));
361
+ break;
362
+ }
363
+ }
364
+ }
365
+ DebugOverlay.instance = null;
366
+ // Simplified global convenience functions that use static methods
367
+ function showDebugOverlay(options) {
368
+ return DebugOverlay.show(options);
369
+ }
370
+ function hideDebugOverlay() {
371
+ DebugOverlay.hide();
372
+ }
373
+ // Auto-initialize if debug query parameter is present
374
+ if (typeof window !== 'undefined') {
375
+ const urlParams = new URLSearchParams(window.location.search);
376
+ if (urlParams.get('debug') === 'true' || urlParams.get('jqhtml-debug') === 'true') {
377
+ document.addEventListener('DOMContentLoaded', () => {
378
+ DebugOverlay.show();
379
+ });
380
+ }
381
+ }
382
+
383
+ /**
384
+ * JQHTML Debug Module
385
+ *
386
+ * Provides comprehensive debugging capabilities for JQHTML components
387
+ */
388
+ // Global debug state
389
+ let performanceMetrics = new Map();
390
+ /**
391
+ * Development warning helper
392
+ * Warnings are suppressed in production builds or when JQHTML_SUPPRESS_WARNINGS is set
393
+ */
394
+ function devWarn(message) {
395
+ // Check if warnings are suppressed
396
+ if (typeof window !== 'undefined' && window.JQHTML_SUPPRESS_WARNINGS) {
397
+ return;
398
+ }
399
+ // Check if in production mode
400
+ if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production') {
401
+ return;
402
+ }
403
+ console.warn(`[JQHTML Dev Warning] ${message}`);
404
+ }
405
+ // Get global jqhtml object
406
+ function getJqhtml() {
407
+ if (typeof window !== 'undefined' && window.jqhtml) {
408
+ return window.jqhtml;
409
+ }
410
+ // Fallback: try to get from global if available
411
+ if (typeof globalThis !== 'undefined' && globalThis.jqhtml) {
412
+ return globalThis.jqhtml;
413
+ }
414
+ throw new Error('FATAL: window.jqhtml is not defined. The JQHTML runtime must be loaded before using debug features. ' +
415
+ 'Import and initialize @jqhtml/core before attempting to use debug functionality.');
416
+ }
417
+ // Visual flash effect
418
+ function flashComponent(component, eventType) {
419
+ const jqhtml = getJqhtml();
420
+ if (!jqhtml?.debug?.flashComponents)
421
+ return;
422
+ const duration = jqhtml.debug.flashDuration || 500;
423
+ const colors = jqhtml.debug.flashColors || {};
424
+ const color = colors[eventType] || (eventType === 'create' ? '#3498db' :
425
+ eventType === 'render' ? '#27ae60' :
426
+ '#9b59b6');
427
+ // Store original border
428
+ const originalBorder = component.$.css('border');
429
+ // Apply flash border
430
+ component.$.css({
431
+ 'border': `2px solid ${color}`,
432
+ 'transition': `border ${duration}ms ease-out`
433
+ });
434
+ // Remove after duration
435
+ setTimeout(() => {
436
+ component.$.css('border', originalBorder || '');
437
+ }, duration);
438
+ }
439
+ // Log lifecycle event
440
+ function logLifecycle(component, phase, status) {
441
+ const jqhtml = getJqhtml();
442
+ if (!jqhtml?.debug)
443
+ return;
444
+ const shouldLog = jqhtml.debug.logFullLifecycle ||
445
+ (jqhtml.debug.logCreationReady && (phase === 'create' || phase === 'ready'));
446
+ if (!shouldLog)
447
+ return;
448
+ const componentName = component.constructor.name;
449
+ const timestamp = new Date().toISOString();
450
+ const prefix = `[JQHTML ${timestamp}]`;
451
+ if (status === 'start') {
452
+ console.log(`${prefix} ${componentName}#${component._cid} → ${phase} starting...`);
453
+ // Start performance tracking
454
+ if (jqhtml.debug.profilePerformance) {
455
+ performanceMetrics.set(`${component._cid}_${phase}`, Date.now());
456
+ }
457
+ }
458
+ else {
459
+ let message = `${prefix} ${componentName}#${component._cid} ✓ ${phase} complete`;
460
+ // Add performance data
461
+ if (jqhtml.debug.profilePerformance) {
462
+ const startTime = performanceMetrics.get(`${component._cid}_${phase}`);
463
+ if (startTime) {
464
+ const duration = Date.now() - startTime;
465
+ message += ` (${duration}ms)`;
466
+ // Highlight slow renders
467
+ if (phase === 'render' && jqhtml.debug.highlightSlowRenders &&
468
+ duration > jqhtml.debug.highlightSlowRenders) {
469
+ console.warn(`${prefix} SLOW RENDER: ${componentName}#${component._cid} took ${duration}ms`);
470
+ component.$.css('outline', '2px dashed red');
471
+ }
472
+ }
473
+ }
474
+ console.log(message);
475
+ // Visual feedback
476
+ if (jqhtml.debug.flashComponents && (phase === 'create' || phase === 'render' || phase === 'ready')) {
477
+ flashComponent(component, phase);
478
+ }
479
+ }
480
+ // Update component tree if enabled
481
+ if (jqhtml.debug.showComponentTree) {
482
+ updateComponentTree();
483
+ }
484
+ }
485
+ // Apply delays based on lifecycle phase
486
+ function applyDebugDelay(phase) {
487
+ const jqhtml = getJqhtml();
488
+ if (!jqhtml?.debug)
489
+ return;
490
+ let delayMs = 0;
491
+ switch (phase) {
492
+ case 'component':
493
+ delayMs = jqhtml.debug.delayAfterComponent || 0;
494
+ break;
495
+ case 'render':
496
+ delayMs = jqhtml.debug.delayAfterRender || 0;
497
+ break;
498
+ case 'rerender':
499
+ delayMs = jqhtml.debug.delayAfterRerender || 0;
500
+ break;
501
+ }
502
+ if (delayMs > 0) {
503
+ console.log(`[JQHTML Debug] Applying ${delayMs}ms delay after ${phase}`);
504
+ }
505
+ }
506
+ // Log instruction processing
507
+ function logInstruction(type, data) {
508
+ const jqhtml = getJqhtml();
509
+ if (!jqhtml?.debug?.logInstructionProcessing)
510
+ return;
511
+ console.log(`[JQHTML Instruction] ${type}:`, data);
512
+ }
513
+ // Log data changes
514
+ function logDataChange(component, property, oldValue, newValue) {
515
+ const jqhtml = getJqhtml();
516
+ if (!jqhtml?.debug?.traceDataFlow)
517
+ return;
518
+ console.log(`[JQHTML Data] ${component.constructor.name}#${component._cid}.data.${property}:`, { old: oldValue, new: newValue });
519
+ }
520
+ // Update component tree visualization
521
+ function updateComponentTree() {
522
+ // This would update a debug panel if implemented
523
+ // For now, just log the tree structure periodically
524
+ console.log('[JQHTML Tree] Component hierarchy updated');
525
+ }
526
+ // Router dispatch logging
527
+ function logDispatch(url, route, params, verbose = false) {
528
+ const jqhtml = getJqhtml();
529
+ if (!jqhtml?.debug)
530
+ return;
531
+ const shouldLog = jqhtml.debug.logDispatch || jqhtml.debug.logDispatchVerbose;
532
+ if (!shouldLog)
533
+ return;
534
+ const isVerbose = jqhtml.debug.logDispatchVerbose || verbose;
535
+ if (isVerbose) {
536
+ console.group(`[JQHTML Router] Dispatching: ${url}`);
537
+ console.log('Matched route:', route);
538
+ console.log('Extracted params:', params);
539
+ console.log('Route component:', route.component);
540
+ console.log('Route layout:', route.layout);
541
+ console.log('Route meta:', route.meta);
542
+ console.groupEnd();
543
+ }
544
+ else {
545
+ console.log(`[JQHTML Router] ${url} → ${route.component} (params: ${JSON.stringify(params)})`);
546
+ }
547
+ }
548
+ // Check if sequential processing is enabled
549
+ function isSequentialProcessing() {
550
+ const jqhtml = getJqhtml();
551
+ return jqhtml?.debug?.sequentialProcessing || false;
552
+ }
553
+ // Error handling with break on error
554
+ function handleComponentError(component, phase, error) {
555
+ const jqhtml = getJqhtml();
556
+ console.error(`[JQHTML Error] ${component.constructor.name}#${component._cid} failed in ${phase}:`, error);
557
+ if (jqhtml?.debug?.breakOnError) {
558
+ debugger; // This will pause execution in dev tools
559
+ }
560
+ }
561
+ // Additional debug suggestions that could be implemented:
562
+ //
563
+ // 1. Component Inspector - Click on any component to see its data/args/state
564
+ // 2. Time Travel Debugging - Record state changes and replay them
565
+ // 3. Network Request Tracking - Log all AJAX calls made during load()
566
+ // 4. Memory Leak Detection - Track component creation/destruction
567
+ // 5. Template Compilation Debugging - Show compiled template functions
568
+ // 6. Event Flow Visualization - Show event bubbling through components
569
+ // 7. Dependency Graph - Show which components depend on which data
570
+ // 8. Hot Reload Support - Reload components without losing state
571
+ // 9. Performance Budgets - Warn when components exceed size/time limits
572
+ // 10. Accessibility Auditing - Check for missing ARIA attributes
573
+
574
+ export { DebugOverlay, applyDebugDelay, devWarn, handleComponentError, hideDebugOverlay, isSequentialProcessing, logDataChange, logDispatch, logInstruction, logLifecycle, showDebugOverlay };
575
+ //# sourceMappingURL=jqhtml-debug.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jqhtml-debug.esm.js","sources":["../src/debug-overlay.ts","../src/debug.ts"],"sourcesContent":[null,null],"names":["getJqhtml"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * JQHTML v2 jQuery Plugin
3
+ *
4
+ * Extends jQuery with component method:
5
+ * - $(el).component() - Get component instance
6
+ * - $(el).component(ComponentClass, args) - Create component
7
+ */
8
+ import { Jqhtml_Component } from './component.js';
9
+ import type { ComponentConstructor } from './component-registry.js';
10
+ declare global {
11
+ interface JQuery {
12
+ /**
13
+ * Get or create a component on this element
14
+ */
15
+ component(): Jqhtml_Component | null;
16
+ component(ComponentClass: ComponentConstructor, args?: Record<string, any>): Jqhtml_Component;
17
+ component(componentName: string, args?: Record<string, any>): Jqhtml_Component;
18
+ /**
19
+ * Find the nearest descendants matching the selector (opposite of closest)
20
+ * Returns all descendants that match, but stops traversal at matches
21
+ * (does not recurse into matched elements)
22
+ *
23
+ * Example: $element.shallowFind('.Widget') finds all .Widget descendants
24
+ * but excludes any .Widget elements nested inside other .Widget elements
25
+ */
26
+ shallowFind(selector: string): JQuery;
27
+ }
28
+ }
29
+ export declare function init_jquery_plugin(jQuery: any): void;
30
+ //# sourceMappingURL=jquery-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jquery-plugin.d.ts","sourceRoot":"","sources":["../src/jquery-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAQpE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd;;WAEG;QACH,SAAS,IAAI,gBAAgB,GAAG,IAAI,CAAC;QACrC,SAAS,CAAC,cAAc,EAAE,oBAAoB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC;QAC9F,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CAAC;QAE/E;;;;;;;WAOG;QACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;KACvC;CACF;AAGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CA6XpD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * JQHTML v2 Lifecycle Manager
3
+ *
4
+ * Simple lifecycle orchestration - no queues, no batching.
5
+ * Components boot when created. That's it.
6
+ *
7
+ * Lifecycle order:
8
+ * 1. create() - Calls on_create() BEFORE first render
9
+ * 2. render() - Creates DOM, instantiates child components, calls on_render()
10
+ * 3. _load() - Calls on_load(), may trigger re-render if this.data changes
11
+ * 4. ready() - Waits for children to be ready, calls on_ready()
12
+ */
13
+ import type { Jqhtml_Component } from './component.js';
14
+ export type LifecyclePhase = 'render' | 'create' | 'load' | 'ready';
15
+ export declare class LifecycleManager {
16
+ private static instance;
17
+ private active_components;
18
+ static get_instance(): LifecycleManager;
19
+ constructor();
20
+ /**
21
+ * Boot a component - run its full lifecycle
22
+ * Called when component is created
23
+ */
24
+ boot_component(component: Jqhtml_Component): Promise<void>;
25
+ /**
26
+ * Unregister a component (called on destroy)
27
+ */
28
+ unregister_component(component: Jqhtml_Component): void;
29
+ /**
30
+ * Wait for all active components to reach ready state
31
+ */
32
+ wait_for_ready(): Promise<void>;
33
+ }
34
+ //# sourceMappingURL=lifecycle-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-manager.d.ts","sourceRoot":"","sources":["../src/lifecycle-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpE,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAmB;IAC1C,OAAO,CAAC,iBAAiB,CAAoC;IAE7D,MAAM,CAAC,YAAY,IAAI,gBAAgB;;IAevC;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDhE;;OAEG;IACH,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAIvD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAetC"}