@memberjunction/ng-explorer-settings 3.3.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/lib/account-info/account-info.component.d.ts +23 -0
  2. package/dist/lib/account-info/account-info.component.d.ts.map +1 -0
  3. package/dist/lib/account-info/account-info.component.js +157 -0
  4. package/dist/lib/account-info/account-info.component.js.map +1 -0
  5. package/dist/lib/appearance-settings/appearance-settings.component.d.ts +15 -0
  6. package/dist/lib/appearance-settings/appearance-settings.component.d.ts.map +1 -0
  7. package/dist/lib/appearance-settings/appearance-settings.component.js +79 -0
  8. package/dist/lib/appearance-settings/appearance-settings.component.js.map +1 -0
  9. package/dist/lib/application-management/application-dialog/application-dialog.component.d.ts.map +1 -1
  10. package/dist/lib/application-management/application-dialog/application-dialog.component.js +20 -18
  11. package/dist/lib/application-management/application-dialog/application-dialog.component.js.map +1 -1
  12. package/dist/lib/application-management/application-management.component.d.ts +3 -2
  13. package/dist/lib/application-management/application-management.component.d.ts.map +1 -1
  14. package/dist/lib/application-management/application-management.component.js +20 -15
  15. package/dist/lib/application-management/application-management.component.js.map +1 -1
  16. package/dist/lib/application-settings/application-settings.component.d.ts +113 -0
  17. package/dist/lib/application-settings/application-settings.component.d.ts.map +1 -0
  18. package/dist/lib/application-settings/application-settings.component.js +523 -0
  19. package/dist/lib/application-settings/application-settings.component.js.map +1 -0
  20. package/dist/lib/entity-permissions/entity-permissions.component.d.ts.map +1 -1
  21. package/dist/lib/entity-permissions/entity-permissions.component.js +13 -10
  22. package/dist/lib/entity-permissions/entity-permissions.component.js.map +1 -1
  23. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts +1 -1
  24. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.d.ts.map +1 -1
  25. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js +44 -43
  26. package/dist/lib/entity-permissions/permission-dialog/permission-dialog.component.js.map +1 -1
  27. package/dist/lib/general-settings/general-settings.component.d.ts +14 -0
  28. package/dist/lib/general-settings/general-settings.component.d.ts.map +1 -0
  29. package/dist/lib/general-settings/general-settings.component.js +50 -0
  30. package/dist/lib/general-settings/general-settings.component.js.map +1 -0
  31. package/dist/lib/module.d.ts +30 -28
  32. package/dist/lib/module.d.ts.map +1 -1
  33. package/dist/lib/module.js +64 -37
  34. package/dist/lib/module.js.map +1 -1
  35. package/dist/lib/notification-preferences/notification-preferences.component.d.ts.map +1 -1
  36. package/dist/lib/notification-preferences/notification-preferences.component.js +9 -8
  37. package/dist/lib/notification-preferences/notification-preferences.component.js.map +1 -1
  38. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts +1 -1
  39. package/dist/lib/role-management/role-dialog/role-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/role-management/role-dialog/role-dialog.component.js +32 -32
  41. package/dist/lib/role-management/role-dialog/role-dialog.component.js.map +1 -1
  42. package/dist/lib/role-management/role-management.component.d.ts.map +1 -1
  43. package/dist/lib/role-management/role-management.component.js +11 -8
  44. package/dist/lib/role-management/role-management.component.js.map +1 -1
  45. package/dist/lib/settings/settings.component.d.ts +5 -14
  46. package/dist/lib/settings/settings.component.d.ts.map +1 -1
  47. package/dist/lib/settings/settings.component.js +149 -419
  48. package/dist/lib/settings/settings.component.js.map +1 -1
  49. package/dist/lib/shared/components/settings-card/settings-card.component.d.ts +27 -0
  50. package/dist/lib/shared/components/settings-card/settings-card.component.d.ts.map +1 -0
  51. package/dist/lib/shared/components/settings-card/settings-card.component.js +170 -0
  52. package/dist/lib/shared/components/settings-card/settings-card.component.js.map +1 -0
  53. package/dist/lib/shared/settings-card.component.d.ts.map +1 -1
  54. package/dist/lib/shared/settings-card.component.js +4 -4
  55. package/dist/lib/shared/settings-card.component.js.map +1 -1
  56. package/dist/lib/sql-logging/sql-logging.component.d.ts +2 -2
  57. package/dist/lib/sql-logging/sql-logging.component.d.ts.map +1 -1
  58. package/dist/lib/sql-logging/sql-logging.component.js +21 -16
  59. package/dist/lib/sql-logging/sql-logging.component.js.map +1 -1
  60. package/dist/lib/user-app-config/user-app-config.component.d.ts.map +1 -1
  61. package/dist/lib/user-app-config/user-app-config.component.js +14 -11
  62. package/dist/lib/user-app-config/user-app-config.component.js.map +1 -1
  63. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts +1 -1
  64. package/dist/lib/user-management/user-dialog/user-dialog.component.d.ts.map +1 -1
  65. package/dist/lib/user-management/user-dialog/user-dialog.component.js +37 -36
  66. package/dist/lib/user-management/user-dialog/user-dialog.component.js.map +1 -1
  67. package/dist/lib/user-management/user-management.component.d.ts.map +1 -1
  68. package/dist/lib/user-management/user-management.component.js +23 -19
  69. package/dist/lib/user-management/user-management.component.js.map +1 -1
  70. package/dist/lib/user-profile-settings/user-profile-settings.component.d.ts.map +1 -1
  71. package/dist/lib/user-profile-settings/user-profile-settings.component.js +16 -12
  72. package/dist/lib/user-profile-settings/user-profile-settings.component.js.map +1 -1
  73. package/dist/public-api.d.ts +5 -12
  74. package/dist/public-api.d.ts.map +1 -1
  75. package/dist/public-api.js +6 -38
  76. package/dist/public-api.js.map +1 -1
  77. package/package.json +35 -37
@@ -211,7 +211,8 @@ function SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Template(rf, ctx)
211
211
  i0.ɵɵelement(13, "i", 54);
212
212
  i0.ɵɵelementEnd()();
213
213
  i0.ɵɵelementStart(14, "div", 63);
214
- i0.ɵɵtemplate(15, SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Conditional_15_Template, 3, 0, "span", 64)(16, SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Conditional_16_Template, 3, 0, "span", 65);
214
+ i0.ɵɵconditionalCreate(15, SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Conditional_15_Template, 3, 0, "span", 64);
215
+ i0.ɵɵconditionalCreate(16, SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Conditional_16_Template, 3, 0, "span", 65);
215
216
  i0.ɵɵelementStart(17, "span", 66);
216
217
  i0.ɵɵtext(18);
217
218
  i0.ɵɵelementEnd()()();
@@ -285,13 +286,13 @@ function SqlLoggingComponent_Conditional_8_Conditional_4_Template(rf, ctx) { if
285
286
  i0.ɵɵelementStart(0, "div", 36)(1, "div", 46)(2, "div", 47)(3, "h3", 48);
286
287
  i0.ɵɵtext(4, "Active Sessions");
287
288
  i0.ɵɵelementEnd();
288
- i0.ɵɵtemplate(5, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_5_Template, 3, 1, "button", 49);
289
+ i0.ɵɵconditionalCreate(5, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_5_Template, 3, 1, "button", 49);
289
290
  i0.ɵɵelementEnd();
290
291
  i0.ɵɵelementStart(6, "div", 50);
291
292
  i0.ɵɵrepeaterCreate(7, SqlLoggingComponent_Conditional_8_Conditional_4_For_8_Template, 19, 11, "div", 51, _forTrack0);
292
293
  i0.ɵɵelementEnd()();
293
294
  i0.ɵɵelementStart(9, "div", 52);
294
- i0.ɵɵtemplate(10, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_10_Template, 13, 17)(11, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_11_Template, 6, 0, "div", 35);
295
+ i0.ɵɵconditionalCreate(10, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_10_Template, 13, 17)(11, SqlLoggingComponent_Conditional_8_Conditional_4_Conditional_11_Template, 6, 0, "div", 35);
295
296
  i0.ɵɵelementEnd()();
296
297
  } if (rf & 2) {
297
298
  const ctx_r1 = i0.ɵɵnextContext(2);
@@ -306,7 +307,7 @@ function SqlLoggingComponent_Conditional_8_Conditional_4_Template(rf, ctx) { if
306
307
  } }
307
308
  function SqlLoggingComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
308
309
  i0.ɵɵelementStart(0, "div", 7);
309
- i0.ɵɵtemplate(1, SqlLoggingComponent_Conditional_8_Conditional_1_Template, 9, 0, "div", 34)(2, SqlLoggingComponent_Conditional_8_Conditional_2_Template, 19, 0, "div", 34)(3, SqlLoggingComponent_Conditional_8_Conditional_3_Template, 9, 0, "div", 35)(4, SqlLoggingComponent_Conditional_8_Conditional_4_Template, 12, 4, "div", 36);
310
+ i0.ɵɵconditionalCreate(1, SqlLoggingComponent_Conditional_8_Conditional_1_Template, 9, 0, "div", 34)(2, SqlLoggingComponent_Conditional_8_Conditional_2_Template, 19, 0, "div", 34)(3, SqlLoggingComponent_Conditional_8_Conditional_3_Template, 9, 0, "div", 35)(4, SqlLoggingComponent_Conditional_8_Conditional_4_Template, 12, 4, "div", 36);
310
311
  i0.ɵɵelementEnd();
311
312
  } if (rf & 2) {
312
313
  const ctx_r1 = i0.ɵɵnextContext();
@@ -445,7 +446,7 @@ function SqlLoggingComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
445
446
  i0.ɵɵelement(62, "i", 109);
446
447
  i0.ɵɵtext(63, " Advanced Options ");
447
448
  i0.ɵɵelementEnd();
448
- i0.ɵɵtemplate(64, SqlLoggingComponent_Conditional_9_Conditional_64_Template, 6, 1, "div", 87);
449
+ i0.ɵɵconditionalCreate(64, SqlLoggingComponent_Conditional_9_Conditional_64_Template, 6, 1, "div", 87);
449
450
  i0.ɵɵelementStart(65, "div", 110)(66, "label", 70)(67, "input", 99);
450
451
  i0.ɵɵtwoWayListener("ngModelChange", function SqlLoggingComponent_Conditional_9_Template_input_ngModelChange_67_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.newSessionOptions.verboseOutput, $event) || (ctx_r1.newSessionOptions.verboseOutput = $event); return i0.ɵɵresetView($event); });
451
452
  i0.ɵɵelementEnd();
@@ -456,7 +457,7 @@ function SqlLoggingComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
456
457
  i0.ɵɵelementEnd()()()();
457
458
  i0.ɵɵelementStart(71, "div", 112)(72, "button", 113);
458
459
  i0.ɵɵlistener("click", function SqlLoggingComponent_Conditional_9_Template_button_click_72_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.startNewSession()); });
459
- i0.ɵɵtemplate(73, SqlLoggingComponent_Conditional_9_Conditional_73_Template, 2, 0)(74, SqlLoggingComponent_Conditional_9_Conditional_74_Template, 2, 0);
460
+ i0.ɵɵconditionalCreate(73, SqlLoggingComponent_Conditional_9_Conditional_73_Template, 2, 0)(74, SqlLoggingComponent_Conditional_9_Conditional_74_Template, 2, 0);
460
461
  i0.ɵɵelementEnd();
461
462
  i0.ɵɵelementStart(75, "button", 114);
462
463
  i0.ɵɵlistener("click", function SqlLoggingComponent_Conditional_9_Template_button_click_75_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.showStartSessionDialog = false); });
@@ -544,7 +545,7 @@ function SqlLoggingComponent_Conditional_10_Conditional_14_Conditional_2_Templat
544
545
  } }
545
546
  function SqlLoggingComponent_Conditional_10_Conditional_14_Template(rf, ctx) { if (rf & 1) {
546
547
  i0.ɵɵelement(0, "i", 54);
547
- i0.ɵɵtemplate(1, SqlLoggingComponent_Conditional_10_Conditional_14_Conditional_1_Template, 1, 0)(2, SqlLoggingComponent_Conditional_10_Conditional_14_Conditional_2_Template, 1, 0);
548
+ i0.ɵɵconditionalCreate(1, SqlLoggingComponent_Conditional_10_Conditional_14_Conditional_1_Template, 1, 0)(2, SqlLoggingComponent_Conditional_10_Conditional_14_Conditional_2_Template, 1, 0);
548
549
  } if (rf & 2) {
549
550
  const ctx_r1 = i0.ɵɵnextContext(2);
550
551
  i0.ɵɵadvance();
@@ -560,14 +561,14 @@ function SqlLoggingComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
560
561
  i0.ɵɵelement(3, "i", 122);
561
562
  i0.ɵɵelementEnd();
562
563
  i0.ɵɵelementStart(4, "div", 123)(5, "h3", 124);
563
- i0.ɵɵtemplate(6, SqlLoggingComponent_Conditional_10_Conditional_6_Template, 1, 0)(7, SqlLoggingComponent_Conditional_10_Conditional_7_Template, 1, 0);
564
+ i0.ɵɵconditionalCreate(6, SqlLoggingComponent_Conditional_10_Conditional_6_Template, 1, 0)(7, SqlLoggingComponent_Conditional_10_Conditional_7_Template, 1, 0);
564
565
  i0.ɵɵelementEnd();
565
566
  i0.ɵɵelementStart(8, "p", 125);
566
- i0.ɵɵtemplate(9, SqlLoggingComponent_Conditional_10_Conditional_9_Template, 4, 1)(10, SqlLoggingComponent_Conditional_10_Conditional_10_Template, 6, 2);
567
+ i0.ɵɵconditionalCreate(9, SqlLoggingComponent_Conditional_10_Conditional_9_Template, 4, 1)(10, SqlLoggingComponent_Conditional_10_Conditional_10_Template, 6, 2);
567
568
  i0.ɵɵelementEnd()();
568
569
  i0.ɵɵelementStart(11, "div", 126)(12, "button", 127);
569
570
  i0.ɵɵlistener("click", function SqlLoggingComponent_Conditional_10_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmStopSession()); });
570
- i0.ɵɵtemplate(13, SqlLoggingComponent_Conditional_10_Conditional_13_Template, 2, 0)(14, SqlLoggingComponent_Conditional_10_Conditional_14_Template, 3, 1);
571
+ i0.ɵɵconditionalCreate(13, SqlLoggingComponent_Conditional_10_Conditional_13_Template, 2, 0)(14, SqlLoggingComponent_Conditional_10_Conditional_14_Template, 3, 1);
571
572
  i0.ɵɵelementEnd();
572
573
  i0.ɵɵelementStart(15, "button", 128);
573
574
  i0.ɵɵlistener("click", function SqlLoggingComponent_Conditional_10_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelStopConfirm()); });
@@ -1243,16 +1244,20 @@ let SqlLoggingComponent = class SqlLoggingComponent extends BaseDashboard {
1243
1244
  }
1244
1245
  static ɵfac = function SqlLoggingComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SqlLoggingComponent)(i0.ɵɵdirectiveInject(i1.SharedService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
1245
1246
  static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SqlLoggingComponent, selectors: [["mj-sql-logging"]], hostBindings: function SqlLoggingComponent_HostBindings(rf, ctx) { if (rf & 1) {
1246
- i0.ɵɵlistener("keydown.escape", function SqlLoggingComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, false, i0.ɵɵresolveDocument);
1247
- } }, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 9, consts: [[1, "sql-logging-container"], ["role", "toolbar", "aria-label", "SQL logging actions", 1, "action-buttons"], ["aria-label", "Refresh sessions", 1, "btn-secondary", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-refresh"], [1, "btn-primary", 3, "disabled"], [1, "stats-toggle-container"], ["role", "status", "aria-live", "polite", "aria-busy", "true", 1, "loading-container"], [1, "content-area"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "start-session-dialog-title", 1, "modal-backdrop"], ["role", "alertdialog", "aria-modal", "true", "aria-labelledby", "stop-dialog-title", "aria-describedby", "stop-dialog-desc", 1, "modal-backdrop"], [1, "btn-primary", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-play"], ["aria-controls", "stats-grid-content", 1, "stats-toggle-button", 3, "click"], [1, "stats-toggle-left"], [1, "stats-toggle-icon"], ["aria-hidden", "true", 1, "fa-solid", "fa-chart-line"], [1, "stats-toggle-text"], [1, "stats-toggle-title"], [1, "stats-toggle-subtitle"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down", "stats-toggle-arrow"], ["id", "stats-grid-content", "role", "region", "aria-label", "SQL logging statistics", 1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "stat-icon-status"], ["aria-hidden", "true", 1, "fa-solid", "fa-power-off"], [1, "stat-content"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "stat-icon-active"], ["aria-hidden", "true", 1, "fa-solid", "fa-play-circle"], [1, "stat-icon", "stat-icon-limit"], ["aria-hidden", "true", 1, "fa-solid", "fa-gauge-high"], [1, "stat-icon", "stat-icon-total"], ["aria-hidden", "true", 1, "fa-solid", "fa-database"], ["text", "Loading SQL logging configuration...", "size", "medium"], ["role", "alert", 1, "empty-state"], ["role", "status", 1, "empty-state"], [1, "sessions-layout"], ["aria-hidden", "true", 1, "fa-solid", "fa-lock", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], ["aria-label", "Refresh user permissions", 1, "btn-secondary", 2, "margin-top", "1rem", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-sync"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "empty-icon", "warning"], [1, "info-box"], ["aria-hidden", "true", 1, "fa-solid", "fa-file-code", "empty-icon"], ["aria-label", "Start a new SQL logging session", 1, "btn-primary", 2, "margin-top", "1rem", 3, "click"], ["role", "region", "aria-label", "Active sessions list", 1, "sessions-panel"], [1, "panel-header"], [1, "panel-title"], ["aria-label", "Stop all active sessions", 1, "btn-danger", "btn-small", 3, "disabled"], ["role", "list", "aria-label", "SQL logging sessions", 1, "sessions-list"], ["role", "listitem", "tabindex", "0", 1, "session-card", 3, "selected"], ["role", "region", "aria-label", "SQL log viewer", 1, "log-viewer-panel"], ["aria-label", "Stop all active sessions", 1, "btn-danger", "btn-small", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-stop"], ["role", "listitem", "tabindex", "0", 1, "session-card", 3, "click", "keydown.enter", "keydown.space"], [1, "session-header"], [1, "session-info"], [1, "session-title"], [1, "session-meta"], [1, "meta-item"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock"], [1, "action-btn", "action-btn-danger", 3, "click"], [1, "session-badges"], [1, "badge", "badge-user"], [1, "badge", "badge-migration"], [1, "badge", "badge-type"], ["aria-hidden", "true", 1, "fa-solid", "fa-user"], ["aria-hidden", "true", 1, "fa-solid", "fa-code-branch"], [1, "panel-actions"], [1, "checkbox-label"], ["type", "checkbox", "aria-label", "Enable auto-refresh", 3, "ngModelChange", "ngModel"], ["aria-label", "Refresh log content", 1, "action-btn", 3, "click"], [1, "action-btn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid"], [1, "log-content"], ["aria-label", "SQL log content", 2, "height", "100%", 3, "value", "readonly", "disabled", "language", "setup", "lineWrapping", "highlightWhitespace"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-left", "empty-icon"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "start-session-dialog-title", 1, "modal-backdrop", 3, "click"], [1, "modal-dialog", "modal-large", 3, "click"], [1, "modal-header"], ["id", "start-session-dialog-title", 1, "modal-title"], [1, "modal-header-actions"], ["type", "button", 1, "modal-action-btn", 3, "click"], ["aria-label", "Close dialog", 1, "modal-close", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], [1, "modal-body"], [1, "form-group"], ["for", "session-name", 1, "form-label"], ["type", "text", "id", "session-name", "placeholder", "Enter a descriptive name for this session", "aria-describedby", "session-name-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "session-name-hint", 1, "form-hint"], ["for", "file-name", 1, "form-label"], ["type", "text", "id", "file-name", "placeholder", "sql-log-2024-01-01.sql", "aria-describedby", "file-name-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "file-name-hint", 1, "form-hint"], ["for", "statement-types", 1, "form-label"], ["id", "statement-types", "aria-describedby", "statement-types-hint", 1, "form-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["id", "statement-types-hint", 1, "form-hint"], ["role", "group", "aria-label", "Session options", 1, "form-checkboxes"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "form-section"], [1, "form-section-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-filter"], ["for", "filter-type", 1, "form-label"], ["id", "filter-type", "aria-describedby", "filter-type-hint", 1, "form-select", 3, "ngModelChange", "ngModel"], ["id", "filter-type-hint", 1, "form-hint"], ["for", "filter-patterns", 1, "form-label"], ["id", "filter-patterns", "rows", "4", "placeholder", "Examples:\n*AIPrompt*\n/spCreate.*Run/i\nSELECT * FROM vwMetadata", "aria-describedby", "filter-patterns-hint", 1, "form-textarea", 3, "ngModelChange", "ngModel"], ["id", "filter-patterns-hint", 1, "form-hint"], ["aria-hidden", "true", 1, "fa-solid", "fa-cog"], [1, "form-checkboxes"], [1, "form-hint", 2, "margin-left", "1.75rem"], [1, "modal-footer"], ["aria-label", "Start the SQL logging session", 1, "btn-primary", 3, "click", "disabled"], ["aria-label", "Cancel and close dialog", 1, "btn-secondary", 3, "click"], ["for", "default-schema", 1, "form-label"], ["type", "text", "id", "default-schema", "placeholder", "__mj", "aria-describedby", "default-schema-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "default-schema-hint", 1, "form-hint"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "fa-spin"], ["role", "alertdialog", "aria-modal", "true", "aria-labelledby", "stop-dialog-title", "aria-describedby", "stop-dialog-desc", 1, "modal-backdrop", 3, "click"], [1, "confirm-dialog", 3, "click"], [1, "confirm-dialog-icon"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle"], [1, "confirm-dialog-content"], ["id", "stop-dialog-title", 1, "confirm-dialog-title"], ["id", "stop-dialog-desc", 1, "confirm-dialog-message"], [1, "confirm-dialog-actions"], [1, "btn-danger", 3, "click", "disabled"], ["aria-label", "Cancel and keep sessions running", 1, "btn-secondary", 3, "click", "disabled"], [1, "confirm-dialog-details"]], template: function SqlLoggingComponent_Template(rf, ctx) { if (rf & 1) {
1247
+ i0.ɵɵlistener("keydown.escape", function SqlLoggingComponent_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
1248
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 11, vars: 9, consts: [[1, "sql-logging-container"], ["role", "toolbar", "aria-label", "SQL logging actions", 1, "action-buttons"], ["aria-label", "Refresh sessions", 1, "btn-secondary", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-refresh"], [1, "btn-primary", 3, "disabled"], [1, "stats-toggle-container"], ["role", "status", "aria-live", "polite", "aria-busy", "true", 1, "loading-container"], [1, "content-area"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "start-session-dialog-title", 1, "modal-backdrop"], ["role", "alertdialog", "aria-modal", "true", "aria-labelledby", "stop-dialog-title", "aria-describedby", "stop-dialog-desc", 1, "modal-backdrop"], [1, "btn-primary", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-play"], ["aria-controls", "stats-grid-content", 1, "stats-toggle-button", 3, "click"], [1, "stats-toggle-left"], [1, "stats-toggle-icon"], ["aria-hidden", "true", 1, "fa-solid", "fa-chart-line"], [1, "stats-toggle-text"], [1, "stats-toggle-title"], [1, "stats-toggle-subtitle"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-down", "stats-toggle-arrow"], ["id", "stats-grid-content", "role", "region", "aria-label", "SQL logging statistics", 1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "stat-icon-status"], ["aria-hidden", "true", 1, "fa-solid", "fa-power-off"], [1, "stat-content"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "stat-icon-active"], ["aria-hidden", "true", 1, "fa-solid", "fa-play-circle"], [1, "stat-icon", "stat-icon-limit"], ["aria-hidden", "true", 1, "fa-solid", "fa-gauge-high"], [1, "stat-icon", "stat-icon-total"], ["aria-hidden", "true", 1, "fa-solid", "fa-database"], ["text", "Loading SQL logging configuration...", "size", "medium"], ["role", "alert", 1, "empty-state"], ["role", "status", 1, "empty-state"], [1, "sessions-layout"], ["aria-hidden", "true", 1, "fa-solid", "fa-lock", "empty-icon"], [1, "empty-text"], [1, "empty-subtext"], ["aria-label", "Refresh user permissions", 1, "btn-secondary", 2, "margin-top", "1rem", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-sync"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle", "empty-icon", "warning"], [1, "info-box"], ["aria-hidden", "true", 1, "fa-solid", "fa-file-code", "empty-icon"], ["aria-label", "Start a new SQL logging session", 1, "btn-primary", 2, "margin-top", "1rem", 3, "click"], ["role", "region", "aria-label", "Active sessions list", 1, "sessions-panel"], [1, "panel-header"], [1, "panel-title"], ["aria-label", "Stop all active sessions", 1, "btn-danger", "btn-small", 3, "disabled"], ["role", "list", "aria-label", "SQL logging sessions", 1, "sessions-list"], ["role", "listitem", "tabindex", "0", 1, "session-card", 3, "selected"], ["role", "region", "aria-label", "SQL log viewer", 1, "log-viewer-panel"], ["aria-label", "Stop all active sessions", 1, "btn-danger", "btn-small", 3, "click", "disabled"], ["aria-hidden", "true", 1, "fa-solid", "fa-stop"], ["role", "listitem", "tabindex", "0", 1, "session-card", 3, "click", "keydown.enter", "keydown.space"], [1, "session-header"], [1, "session-info"], [1, "session-title"], [1, "session-meta"], [1, "meta-item"], ["aria-hidden", "true", 1, "fa-solid", "fa-clock"], [1, "action-btn", "action-btn-danger", 3, "click"], [1, "session-badges"], [1, "badge", "badge-user"], [1, "badge", "badge-migration"], [1, "badge", "badge-type"], ["aria-hidden", "true", 1, "fa-solid", "fa-user"], ["aria-hidden", "true", 1, "fa-solid", "fa-code-branch"], [1, "panel-actions"], [1, "checkbox-label"], ["type", "checkbox", "aria-label", "Enable auto-refresh", 3, "ngModelChange", "ngModel"], ["aria-label", "Refresh log content", 1, "action-btn", 3, "click"], [1, "action-btn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid"], [1, "log-content"], ["aria-label", "SQL log content", 2, "height", "100%", 3, "value", "readonly", "disabled", "language", "setup", "lineWrapping", "highlightWhitespace"], ["aria-hidden", "true", 1, "fa-solid", "fa-arrow-left", "empty-icon"], ["role", "dialog", "aria-modal", "true", "aria-labelledby", "start-session-dialog-title", 1, "modal-backdrop", 3, "click"], [1, "modal-dialog", "modal-large", 3, "click"], [1, "modal-header"], ["id", "start-session-dialog-title", 1, "modal-title"], [1, "modal-header-actions"], ["type", "button", 1, "modal-action-btn", 3, "click"], ["aria-label", "Close dialog", 1, "modal-close", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-times"], [1, "modal-body"], [1, "form-group"], ["for", "session-name", 1, "form-label"], ["type", "text", "id", "session-name", "placeholder", "Enter a descriptive name for this session", "aria-describedby", "session-name-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "session-name-hint", 1, "form-hint"], ["for", "file-name", 1, "form-label"], ["type", "text", "id", "file-name", "placeholder", "sql-log-2024-01-01.sql", "aria-describedby", "file-name-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "file-name-hint", 1, "form-hint"], ["for", "statement-types", 1, "form-label"], ["id", "statement-types", "aria-describedby", "statement-types-hint", 1, "form-select", 3, "ngModelChange", "ngModel"], [3, "value"], ["id", "statement-types-hint", 1, "form-hint"], ["role", "group", "aria-label", "Session options", 1, "form-checkboxes"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "form-section"], [1, "form-section-title"], ["aria-hidden", "true", 1, "fa-solid", "fa-filter"], ["for", "filter-type", 1, "form-label"], ["id", "filter-type", "aria-describedby", "filter-type-hint", 1, "form-select", 3, "ngModelChange", "ngModel"], ["id", "filter-type-hint", 1, "form-hint"], ["for", "filter-patterns", 1, "form-label"], ["id", "filter-patterns", "rows", "4", "placeholder", "Examples:\n*AIPrompt*\n/spCreate.*Run/i\nSELECT * FROM vwMetadata", "aria-describedby", "filter-patterns-hint", 1, "form-textarea", 3, "ngModelChange", "ngModel"], ["id", "filter-patterns-hint", 1, "form-hint"], ["aria-hidden", "true", 1, "fa-solid", "fa-cog"], [1, "form-checkboxes"], [1, "form-hint", 2, "margin-left", "1.75rem"], [1, "modal-footer"], ["aria-label", "Start the SQL logging session", 1, "btn-primary", 3, "click", "disabled"], ["aria-label", "Cancel and close dialog", 1, "btn-secondary", 3, "click"], ["for", "default-schema", 1, "form-label"], ["type", "text", "id", "default-schema", "placeholder", "__mj", "aria-describedby", "default-schema-hint", 1, "form-input", 3, "ngModelChange", "ngModel"], ["id", "default-schema-hint", 1, "form-hint"], ["aria-hidden", "true", 1, "fa-solid", "fa-spinner", "fa-spin"], ["role", "alertdialog", "aria-modal", "true", "aria-labelledby", "stop-dialog-title", "aria-describedby", "stop-dialog-desc", 1, "modal-backdrop", 3, "click"], [1, "confirm-dialog", 3, "click"], [1, "confirm-dialog-icon"], ["aria-hidden", "true", 1, "fa-solid", "fa-exclamation-triangle"], [1, "confirm-dialog-content"], ["id", "stop-dialog-title", 1, "confirm-dialog-title"], ["id", "stop-dialog-desc", 1, "confirm-dialog-message"], [1, "confirm-dialog-actions"], [1, "btn-danger", 3, "click", "disabled"], ["aria-label", "Cancel and keep sessions running", 1, "btn-secondary", 3, "click", "disabled"], [1, "confirm-dialog-details"]], template: function SqlLoggingComponent_Template(rf, ctx) { if (rf & 1) {
1248
1249
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "button", 2);
1249
1250
  i0.ɵɵlistener("click", function SqlLoggingComponent_Template_button_click_2_listener() { return ctx.loadActiveSessions(); });
1250
1251
  i0.ɵɵelement(3, "i", 3);
1251
1252
  i0.ɵɵtext(4, " Refresh ");
1252
1253
  i0.ɵɵelementEnd();
1253
- i0.ɵɵtemplate(5, SqlLoggingComponent_Conditional_5_Template, 3, 2, "button", 4);
1254
+ i0.ɵɵconditionalCreate(5, SqlLoggingComponent_Conditional_5_Template, 3, 2, "button", 4);
1254
1255
  i0.ɵɵelementEnd();
1255
- i0.ɵɵtemplate(6, SqlLoggingComponent_Conditional_6_Template, 44, 13, "div", 5)(7, SqlLoggingComponent_Conditional_7_Template, 2, 0, "div", 6)(8, SqlLoggingComponent_Conditional_8_Template, 5, 1, "div", 7)(9, SqlLoggingComponent_Conditional_9_Template, 77, 19, "div", 8)(10, SqlLoggingComponent_Conditional_10_Template, 17, 6, "div", 9);
1256
+ i0.ɵɵconditionalCreate(6, SqlLoggingComponent_Conditional_6_Template, 44, 13, "div", 5);
1257
+ i0.ɵɵconditionalCreate(7, SqlLoggingComponent_Conditional_7_Template, 2, 0, "div", 6);
1258
+ i0.ɵɵconditionalCreate(8, SqlLoggingComponent_Conditional_8_Template, 5, 1, "div", 7);
1259
+ i0.ɵɵconditionalCreate(9, SqlLoggingComponent_Conditional_9_Template, 77, 19, "div", 8);
1260
+ i0.ɵɵconditionalCreate(10, SqlLoggingComponent_Conditional_10_Template, 17, 6, "div", 9);
1256
1261
  i0.ɵɵelementEnd();
1257
1262
  } if (rf & 2) {
1258
1263
  i0.ɵɵadvance(2);
@@ -1279,10 +1284,10 @@ SqlLoggingComponent = __decorate([
1279
1284
  export { SqlLoggingComponent };
1280
1285
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SqlLoggingComponent, [{
1281
1286
  type: Component,
1282
- args: [{ selector: 'mj-sql-logging', template: "<div class=\"sql-logging-container\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\" role=\"toolbar\" aria-label=\"SQL logging actions\">\n <button\n class=\"btn-secondary\"\n (click)=\"loadActiveSessions()\"\n [disabled]=\"loading\"\n aria-label=\"Refresh sessions\"\n >\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"loading\" aria-hidden=\"true\"></i>\n Refresh\n </button>\n @if (isOwner && configEnabled) {\n <button\n class=\"btn-primary\"\n [disabled]=\"loading || activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5)\"\n (click)=\"openStartSessionDialog()\"\n [attr.aria-label]=\"'Start new SQL logging session' + (activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5) ? ' (maximum sessions reached)' : '')\"\n >\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start New Session\n </button>\n }\n </div>\n\n <!-- Stats Cards with Toggle -->\n @if (isOwner && configEnabled) {\n <div class=\"stats-toggle-container\">\n <!-- Toggle Button -->\n <button\n class=\"stats-toggle-button\"\n [class.expanded]=\"showStats\"\n (click)=\"showStats = !showStats\"\n [attr.aria-expanded]=\"showStats\"\n aria-controls=\"stats-grid-content\"\n >\n <div class=\"stats-toggle-left\">\n <div class=\"stats-toggle-icon\">\n <i class=\"fa-solid fa-chart-line\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stats-toggle-text\">\n <h3 class=\"stats-toggle-title\">Statistics</h3>\n <p class=\"stats-toggle-subtitle\">View session statistics and metrics</p>\n </div>\n </div>\n <i class=\"fa-solid fa-chevron-down stats-toggle-arrow\" aria-hidden=\"true\"></i>\n </button>\n\n <!-- Stats Grid (Collapsible) -->\n <div\n id=\"stats-grid-content\"\n class=\"stats-grid\"\n [class.visible]=\"showStats\"\n role=\"region\"\n aria-label=\"SQL logging statistics\"\n >\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-status\">\n <i class=\"fa-solid fa-power-off\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"'Status: ' + (configEnabled ? 'Enabled' : 'Disabled')\">\n {{ configEnabled ? \"Enabled\" : \"Disabled\" }}\n </div>\n <div class=\"stat-label\">Status</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-active\">\n <i class=\"fa-solid fa-play-circle\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"activeSessions.length + ' active sessions'\">\n {{ activeSessions.length }}\n </div>\n <div class=\"stat-label\">Active Sessions</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-limit\">\n <i class=\"fa-solid fa-gauge-high\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"(sqlLoggingConfig?.maxActiveSessions || 5) + ' maximum sessions allowed'\">\n {{ sqlLoggingConfig?.maxActiveSessions || 5 }}\n </div>\n <div class=\"stat-label\">Max Sessions</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-total\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"getTotalStatementCount() + ' total SQL statements captured'\">\n {{ getTotalStatementCount() }}\n </div>\n <div class=\"stat-label\">Total Statements</div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (loading && !activeSessions.length) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <mj-loading text=\"Loading SQL logging configuration...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Content Area -->\n @if (!loading || activeSessions.length > 0) {\n <div class=\"content-area\">\n @if (!isOwner) {\n <!-- Not authorized -->\n <div class=\"empty-state\" role=\"alert\">\n <i class=\"fa-solid fa-lock empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">Access Denied</p>\n <p class=\"empty-subtext\">SQL logging requires Owner privileges. Please contact your system administrator for access.</p>\n <button class=\"btn-secondary\" (click)=\"refreshUserPermissions()\" style=\"margin-top: 1rem\" aria-label=\"Refresh user permissions\">\n <i class=\"fa-solid fa-sync\" aria-hidden=\"true\"></i>\n Refresh Permissions\n </button>\n </div>\n } @else if (!configEnabled) {\n <!-- Not enabled in config -->\n <div class=\"empty-state\" role=\"alert\">\n <i class=\"fa-solid fa-exclamation-triangle empty-icon warning\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">SQL Logging Disabled</p>\n <p class=\"empty-subtext\">SQL logging is not enabled in the server configuration.</p>\n <div class=\"info-box\">\n <h4>To enable SQL logging:</h4>\n <ol>\n <li>Set <code>sqlLogging.enabled = true</code> in mj.config.cjs</li>\n <li>Restart the MJ API server</li>\n <li>Refresh this page</li>\n </ol>\n </div>\n </div>\n } @else if (activeSessions.length === 0) {\n <!-- No active sessions -->\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-file-code empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">No Active Sessions</p>\n <p class=\"empty-subtext\">Start a new SQL logging session to begin capturing SQL statements.</p>\n <button class=\"btn-primary\" (click)=\"openStartSessionDialog()\" style=\"margin-top: 1rem\" aria-label=\"Start a new SQL logging session\">\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start New Session\n </button>\n </div>\n } @else {\n <!-- Sessions layout -->\n <div class=\"sessions-layout\">\n <!-- Sessions panel -->\n <div class=\"sessions-panel\" role=\"region\" aria-label=\"Active sessions list\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Active Sessions</h3>\n @if (activeSessions.length > 0) {\n <button\n class=\"btn-danger btn-small\"\n (click)=\"openStopAllSessionsConfirm()\"\n [disabled]=\"loading\"\n aria-label=\"Stop all active sessions\"\n >\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n Stop All\n </button>\n }\n </div>\n <div class=\"sessions-list\" role=\"list\" aria-label=\"SQL logging sessions\">\n @for (session of activeSessions; track session.id) {\n <div\n class=\"session-card\"\n [class.selected]=\"selectedSession?.id === session.id\"\n (click)=\"selectSession(session)\"\n role=\"listitem\"\n tabindex=\"0\"\n (keydown.enter)=\"selectSession(session)\"\n (keydown.space)=\"selectSession(session); $event.preventDefault()\"\n [attr.aria-label]=\"'Session: ' + session.sessionName + ', ' + session.statementCount + ' statements, duration ' + getSessionDuration(session.startTime)\"\n [attr.aria-selected]=\"selectedSession?.id === session.id\"\n >\n <div class=\"session-header\">\n <div class=\"session-info\">\n <h4 class=\"session-title\">{{ session.sessionName }}</h4>\n <div class=\"session-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n {{ getSessionDuration(session.startTime) }}\n </span>\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n {{ session.statementCount }} statements\n </span>\n </div>\n </div>\n <button\n class=\"action-btn action-btn-danger\"\n (click)=\"openStopSessionConfirm(session, $event)\"\n [attr.aria-label]=\"'Stop session ' + session.sessionName\"\n >\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"session-badges\">\n @if (session.filterByUserId) {\n <span class=\"badge badge-user\">\n <i class=\"fa-solid fa-user\" aria-hidden=\"true\"></i>\n User Filtered\n </span>\n }\n @if (session.options?.formatAsMigration) {\n <span class=\"badge badge-migration\">\n <i class=\"fa-solid fa-code-branch\" aria-hidden=\"true\"></i>\n Migration\n </span>\n }\n <span class=\"badge badge-type\">\n {{ session.options?.statementTypes || \"both\" }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Log viewer panel -->\n <div class=\"log-viewer-panel\" [class.expanded]=\"isLogViewerExpanded\" role=\"region\" aria-label=\"SQL log viewer\">\n @if (selectedSession) {\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">{{ selectedSession.sessionName }}</h3>\n <div class=\"panel-actions\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"autoRefresh\"\n aria-label=\"Enable auto-refresh\"\n />\n Auto-refresh\n </label>\n <button\n class=\"action-btn\"\n (click)=\"loadSessionLog(selectedSession)\"\n aria-label=\"Refresh log content\"\n >\n <i class=\"fa-solid fa-sync\" [class.fa-spin]=\"loading\" aria-hidden=\"true\"></i>\n </button>\n <button\n class=\"action-btn\"\n (click)=\"toggleLogViewerExpand()\"\n [attr.aria-label]=\"isLogViewerExpanded ? 'Collapse log viewer' : 'Expand log viewer to fullscreen'\"\n [attr.aria-expanded]=\"isLogViewerExpanded\"\n >\n <i class=\"fa-solid\" [class.fa-expand]=\"!isLogViewerExpanded\" [class.fa-compress]=\"isLogViewerExpanded\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"log-content\">\n <mj-code-editor\n [value]=\"logContent\"\n [readonly]=\"true\"\n [disabled]=\"true\"\n [language]=\"'sql'\"\n [setup]=\"'basic'\"\n [lineWrapping]=\"true\"\n [highlightWhitespace]=\"false\"\n style=\"height: 100%\"\n aria-label=\"SQL log content\"\n ></mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-arrow-left empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">Select a Session</p>\n <p class=\"empty-subtext\">Choose a session from the list to view its SQL log.</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Start Session Dialog -->\n @if (showStartSessionDialog) {\n <div\n class=\"modal-backdrop\"\n (click)=\"showStartSessionDialog = false\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"start-session-dialog-title\"\n >\n <div class=\"modal-dialog modal-large\" [class.fullscreen]=\"isStartDialogFullscreen\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"start-session-dialog-title\">\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start SQL Logging Session\n </h3>\n <div class=\"modal-header-actions\">\n <button\n class=\"modal-action-btn\"\n (click)=\"toggleStartDialogFullscreen()\"\n [attr.aria-label]=\"isStartDialogFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'\"\n type=\"button\"\n >\n <i class=\"fa-solid\" [class.fa-compress]=\"isStartDialogFullscreen\" [class.fa-expand]=\"!isStartDialogFullscreen\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"modal-close\" (click)=\"showStartSessionDialog = false\" aria-label=\"Close dialog\">\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"session-name\">Session Name</label>\n <input\n type=\"text\"\n id=\"session-name\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.sessionName\"\n placeholder=\"Enter a descriptive name for this session\"\n aria-describedby=\"session-name-hint\"\n />\n <div id=\"session-name-hint\" class=\"form-hint\">A descriptive name to identify this logging session</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"file-name\">File Name</label>\n <input\n type=\"text\"\n id=\"file-name\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.fileName\"\n placeholder=\"sql-log-2024-01-01.sql\"\n aria-describedby=\"file-name-hint\"\n />\n <div id=\"file-name-hint\" class=\"form-hint\">The SQL log will be saved to this file</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"statement-types\">Statement Types</label>\n <select\n id=\"statement-types\"\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.statementTypes\"\n aria-describedby=\"statement-types-hint\"\n >\n @for (option of statementTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n <div id=\"statement-types-hint\" class=\"form-hint\">Filter which types of SQL statements to capture</div>\n </div>\n\n <div class=\"form-checkboxes\" role=\"group\" aria-label=\"Session options\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.filterToCurrentUser\" />\n Filter to my SQL statements only\n </label>\n\n\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.formatAsMigration\" />\n Format as migration file\n </label>\n\n\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.prettyPrint\" />\n Pretty print SQL statements\n </label>\n </div>\n\n <!-- SQL Pattern Filtering Section -->\n <div class=\"form-section\">\n <h4 class=\"form-section-title\">\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\n SQL Pattern Filtering\n </h4>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"filter-type\">Filter Mode</label>\n <select\n id=\"filter-type\"\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.filterType\"\n aria-describedby=\"filter-type-hint\"\n >\n @for (option of filterTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n <div id=\"filter-type-hint\" class=\"form-hint\">Exclude: Skip SQL matching any pattern. Include: Only log SQL matching a pattern.</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"filter-patterns\">Filter Patterns (one per line or comma-separated)</label>\n <textarea\n id=\"filter-patterns\"\n class=\"form-textarea\"\n [(ngModel)]=\"newSessionOptions.filterPatterns\"\n rows=\"4\"\n placeholder=\"Examples:&#10;*AIPrompt*&#10;/spCreate.*Run/i&#10;SELECT * FROM vwMetadata\"\n aria-describedby=\"filter-patterns-hint\"\n ></textarea>\n <div id=\"filter-patterns-hint\" class=\"form-hint\">Supports wildcards (*) and regex (/pattern/flags). Example: *spCreate* matches any SP starting with spCreate.</div>\n </div>\n </div>\n\n <!-- Advanced Options Section -->\n <div class=\"form-section\">\n <h4 class=\"form-section-title\">\n <i class=\"fa-solid fa-cog\" aria-hidden=\"true\"></i>\n Advanced Options\n </h4>\n\n @if (newSessionOptions.formatAsMigration) {\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"default-schema\">Default Schema Name</label>\n <input\n type=\"text\"\n id=\"default-schema\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.defaultSchemaName\"\n placeholder=\"__mj\"\n aria-describedby=\"default-schema-hint\"\n />\n <div id=\"default-schema-hint\" class=\"form-hint\">Schema name to replace with $&#123;flyway:defaultSchema&#125; placeholder.</div>\n </div>\n }\n\n <div class=\"form-checkboxes\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.verboseOutput\" />\n Verbose Debug Output\n </label>\n <div class=\"form-hint\" style=\"margin-left: 1.75rem\">Log detailed filter decisions to server console (for debugging).</div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn-primary\" (click)=\"startNewSession()\" [disabled]=\"loading\" aria-label=\"Start the SQL logging session\">\n @if (loading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Starting...\n } @else {\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start Session\n }\n </button>\n <button class=\"btn-secondary\" (click)=\"showStartSessionDialog = false\" aria-label=\"Cancel and close dialog\">Cancel</button>\n </div>\n </div>\n </div>\n }\n\n <!-- Stop Session Confirmation Dialog -->\n @if (showStopConfirmDialog) {\n <div\n class=\"modal-backdrop\"\n (click)=\"cancelStopConfirm()\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=\"stop-dialog-title\"\n aria-describedby=\"stop-dialog-desc\"\n >\n <div class=\"confirm-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"confirm-dialog-icon\">\n <i class=\"fa-solid fa-exclamation-triangle\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"confirm-dialog-content\">\n <h3 class=\"confirm-dialog-title\" id=\"stop-dialog-title\">\n @if (isStoppingAll) {\n Stop All Sessions?\n } @else {\n Stop Session?\n }\n </h3>\n <p class=\"confirm-dialog-message\" id=\"stop-dialog-desc\">\n @if (isStoppingAll) {\n Are you sure you want to stop <strong>all {{ activeSessions.length }} active</strong> SQL logging sessions? This action cannot be undone.\n } @else if (sessionToStop) {\n Are you sure you want to stop the session <strong>\"{{ sessionToStop.sessionName }}\"</strong>?\n <span class=\"confirm-dialog-details\"> This session has captured {{ sessionToStop.statementCount }} SQL statements. </span>\n }\n </p>\n </div>\n <div class=\"confirm-dialog-actions\">\n <button class=\"btn-danger\" (click)=\"confirmStopSession()\" [disabled]=\"loading\" [attr.aria-label]=\"isStoppingAll ? 'Confirm stop all sessions' : 'Confirm stop session'\">\n @if (loading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Stopping...\n } @else {\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n @if (isStoppingAll) {\n Stop All Sessions\n } @else {\n Stop Session\n }\n }\n </button>\n <button class=\"btn-secondary\" (click)=\"cancelStopConfirm()\" [disabled]=\"loading\" aria-label=\"Cancel and keep sessions running\">Cancel</button>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* =============================================================================\n SQL Logging Component - Material Design 3 Styles\n Following MD3 Design System with custom color palette and design tokens\n ============================================================================= */\n\n/* MD3 Design Tokens - Color Palette */\n:host {\n /* Primary - Deep Blue */\n --md-primary: #0076B6;\n --md-on-primary: #FFFFFF;\n --md-primary-container: #AAE7FD;\n --md-on-primary-container: #001F2A;\n\n /* Secondary - Light Orange */\n --md-secondary: #F5A623;\n --md-on-secondary: #FFFFFF;\n --md-secondary-container: #FFECD6;\n --md-on-secondary-container: #2D1600;\n\n /* Tertiary - Light Green */\n --md-tertiary: #4CAF50;\n --md-on-tertiary: #FFFFFF;\n --md-tertiary-container: #C8E6C9;\n --md-on-tertiary-container: #002204;\n\n /* Error - Red */\n --md-error: #D32F2F;\n --md-on-error: #FFFFFF;\n --md-error-container: #FFCDD2;\n --md-on-error-container: #410002;\n\n /* Surface Colors */\n --md-surface: #FAFCFF;\n --md-surface-container-lowest: #FFFFFF;\n --md-surface-container-low: #F3F5F9;\n --md-surface-container: #EDF0F4;\n --md-surface-container-high: #E7EAEE;\n --md-surface-container-highest: #E1E3E8;\n --md-on-surface: #191C20;\n --md-on-surface-variant: #43474E;\n --md-outline: #74777F;\n --md-outline-variant: #C4C6D0;\n\n /* Elevation (Box Shadows) */\n --md-elevation-1: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);\n --md-elevation-2: 0 2px 4px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.08);\n --md-elevation-3: 0 4px 8px rgba(0, 0, 0, 0.1), 0 8px 16px rgba(0, 0, 0, 0.08);\n --md-elevation-4: 0 6px 12px rgba(0, 0, 0, 0.1), 0 12px 24px rgba(0, 0, 0, 0.08);\n --md-elevation-5: 0 8px 16px rgba(0, 0, 0, 0.12), 0 16px 32px rgba(0, 0, 0, 0.1);\n\n /* Corner Radii */\n --md-corner-extra-small: 4px;\n --md-corner-small: 8px;\n --md-corner-medium: 12px;\n --md-corner-large: 16px;\n --md-corner-extra-large: 28px;\n --md-corner-full: 9999px;\n\n /* Host element layout */\n display: block;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* -----------------------------------------------------------------------------\n Container & Layout\n ----------------------------------------------------------------------------- */\n.sql-logging-container {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n position: relative;\n background: var(--md-surface);\n padding: 1rem;\n}\n\n@media (min-width: 640px) {\n .sql-logging-container {\n padding: 1.25rem;\n }\n}\n\n@media (min-width: 768px) {\n .sql-logging-container {\n padding: 1.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n .sql-logging-container {\n padding: 2rem;\n }\n}\n\n@media (min-width: 1440px) {\n .sql-logging-container {\n padding: 2rem 2.5rem;\n max-width: 1920px;\n margin: 0 auto;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons\n ----------------------------------------------------------------------------- */\n.action-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n flex-wrap: wrap;\n}\n\n@media (max-width: 639px) {\n .action-buttons {\n justify-content: center;\n }\n\n /* Icon-only buttons on mobile */\n .action-buttons .btn-primary,\n .action-buttons .btn-secondary {\n font-size: 0;\n padding: 0.75rem;\n min-width: 48px;\n min-height: 48px;\n gap: 0;\n }\n\n .action-buttons .btn-primary i,\n .action-buttons .btn-secondary i {\n font-size: 1.125rem;\n }\n\n .stats-toggle-button {\n padding: 0.875rem 1rem;\n }\n\n .stats-toggle-icon {\n width: 40px;\n height: 40px;\n font-size: 1rem;\n }\n\n .stats-toggle-title {\n font-size: 0.9375rem;\n }\n\n .stats-toggle-subtitle {\n font-size: 0.75rem;\n }\n\n .stats-toggle-arrow {\n font-size: 1.125rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Button System - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.btn-primary,\n.btn-secondary,\n.btn-danger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.75rem 1.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n border: none;\n border-radius: var(--md-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: nowrap;\n min-height: 44px;\n min-width: 44px;\n}\n\n/* Primary Button - Dark blue, lightens on hover */\n.btn-primary {\n background: var(--md-primary);\n color: var(--md-on-primary);\n box-shadow: var(--md-elevation-1);\n}\n\n.btn-primary:hover:not(:disabled) {\n background: #3395C8;\n box-shadow: var(--md-elevation-2);\n}\n\n.btn-primary:active:not(:disabled) {\n background: #4BA5D4;\n transform: scale(0.98);\n}\n\n.btn-primary:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-primary i {\n font-size: 0.875rem;\n}\n\n/* Secondary Button - Light, darkens/fills on hover */\n.btn-secondary {\n background: var(--md-surface);\n color: var(--md-primary);\n border: 1px solid var(--md-outline);\n}\n\n.btn-secondary:hover:not(:disabled) {\n background: var(--md-primary);\n color: var(--md-on-primary);\n border-color: var(--md-primary);\n}\n\n.btn-secondary:active:not(:disabled) {\n background: #005A8C;\n border-color: #005A8C;\n}\n\n.btn-secondary:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-secondary i {\n font-size: 0.875rem;\n}\n\n/* Danger Button - Dark red, lightens on hover */\n.btn-danger {\n background: var(--md-error);\n color: var(--md-on-error);\n box-shadow: var(--md-elevation-1);\n}\n\n.btn-danger:hover:not(:disabled) {\n background: #E57373;\n box-shadow: var(--md-elevation-2);\n}\n\n.btn-danger:active:not(:disabled) {\n background: #EF9A9A;\n transform: scale(0.98);\n}\n\n.btn-danger:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-danger i {\n font-size: 0.875rem;\n}\n\n.btn-danger.btn-small {\n padding: 0.5rem 0.875rem;\n font-size: 0.8125rem;\n min-height: 36px;\n}\n\n/* -----------------------------------------------------------------------------\n Statistics Grid - MD3 Cards\n ----------------------------------------------------------------------------- */\n.stats-toggle-container {\n margin-bottom: 1.5rem;\n}\n\n.stats-toggle-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n background: var(--md-surface-container-low);\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-height: 56px;\n}\n\n.stats-toggle-button:hover {\n background: var(--md-surface-container);\n border-color: var(--md-primary);\n box-shadow: var(--md-elevation-1);\n}\n\n.stats-toggle-button.expanded {\n border-color: var(--md-primary);\n background: var(--md-primary-container);\n margin-bottom: 1rem;\n}\n\n.stats-toggle-left {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.stats-toggle-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--md-corner-medium);\n background: var(--md-primary-container);\n color: var(--md-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.stats-toggle-button.expanded .stats-toggle-icon {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.stats-toggle-text {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.stats-toggle-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n.stats-toggle-button.expanded .stats-toggle-title {\n color: var(--md-primary);\n}\n\n.stats-toggle-subtitle {\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n margin: 0;\n}\n\n.stats-toggle-arrow {\n font-size: 1.25rem;\n color: var(--md-on-surface-variant);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.stats-toggle-button.expanded .stats-toggle-arrow {\n transform: rotate(180deg);\n color: var(--md-primary);\n}\n\n.stats-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 0.75rem;\n width: 100%;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.stats-grid.visible {\n max-height: 1000px;\n opacity: 1;\n margin-bottom: 1.5rem;\n}\n\n@media (min-width: 640px) {\n .stats-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n@media (min-width: 768px) {\n /* Hide toggle button on desktop - stats always visible */\n .stats-toggle-button {\n display: none;\n }\n\n /* Always show stats grid on desktop */\n .stats-grid {\n max-height: none;\n opacity: 1;\n margin-bottom: 1.5rem;\n gap: 1.25rem;\n }\n}\n\n@media (min-width: 1024px) {\n .stats-grid {\n grid-template-columns: repeat(4, 1fr);\n gap: 1.5rem;\n }\n}\n\n@media (min-width: 1440px) {\n .stats-grid {\n gap: 2rem;\n }\n}\n\n/* Static Display Card - Non-interactive */\n.stat-card {\n background: var(--md-surface-container-low);\n border-radius: var(--md-corner-medium);\n padding: 1.25rem;\n box-shadow: var(--md-elevation-1);\n display: flex;\n align-items: center;\n gap: 1rem;\n border: 1px solid var(--md-outline-variant);\n cursor: default;\n}\n\n.stat-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--md-corner-medium);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .stat-icon {\n width: 48px;\n height: 48px;\n font-size: 1.25rem;\n }\n}\n\n.stat-icon-status {\n background: var(--md-tertiary-container);\n color: var(--md-tertiary);\n}\n\n.stat-icon-active {\n background: var(--md-primary-container);\n color: var(--md-primary);\n}\n\n.stat-icon-limit {\n background: var(--md-secondary-container);\n color: #B5751A;\n}\n\n.stat-icon-total {\n background: var(--md-tertiary-container);\n color: var(--md-tertiary);\n}\n\n.stat-content {\n flex: 1;\n min-width: 0;\n}\n\n.stat-content .stat-value {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--md-on-surface);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n@media (max-width: 639px) {\n .stat-content .stat-value {\n font-size: 1.5rem;\n font-weight: 700;\n }\n}\n\n.stat-content .stat-label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--md-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-top: 0.25rem;\n}\n\n/* -----------------------------------------------------------------------------\n Content Area\n ----------------------------------------------------------------------------- */\n.content-area {\n flex: 1;\n overflow: visible;\n min-height: 0;\n position: relative;\n background: var(--md-surface-container);\n border-radius: var(--md-corner-medium);\n border: 1px solid var(--md-outline-variant);\n padding: 1rem;\n}\n\n@media (min-width: 640px) {\n .content-area {\n padding: 1.25rem;\n }\n}\n\n@media (min-width: 768px) {\n .content-area {\n padding: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Sessions Layout - Two-panel design\n ----------------------------------------------------------------------------- */\n.sessions-layout {\n display: flex;\n gap: 1.5rem;\n min-height: 400px;\n overflow: visible;\n}\n\n@media (max-width: 767px) {\n .sessions-layout {\n flex-direction: column;\n gap: 1rem;\n min-height: auto;\n }\n}\n\n@media (min-width: 768px) and (max-width: 1023px) {\n .sessions-layout {\n gap: 1.25rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Sessions Panel\n ----------------------------------------------------------------------------- */\n.sessions-panel {\n flex: 0 0 380px;\n display: flex;\n flex-direction: column;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n overflow: hidden;\n background: var(--md-surface);\n max-height: 600px;\n}\n\n@media (max-width: 767px) {\n .sessions-panel {\n flex: none;\n max-height: 350px;\n }\n}\n\n@media (min-width: 768px) and (max-width: 1023px) {\n .sessions-panel {\n flex: 0 0 320px;\n }\n}\n\n@media (min-width: 1440px) {\n .sessions-panel {\n flex: 0 0 420px;\n }\n}\n\n.panel-header {\n padding: 1rem;\n background: var(--md-surface-container-low);\n border-bottom: 1px solid var(--md-outline-variant);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n gap: 0.5rem;\n}\n\n@media (max-width: 639px) {\n .panel-header {\n padding: 0.75rem;\n flex-wrap: wrap;\n }\n}\n\n.panel-header .panel-title {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-on-surface);\n flex-shrink: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (max-width: 639px) {\n .panel-header .panel-title {\n font-size: 0.875rem;\n max-width: 50%;\n }\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .panel-actions {\n gap: 0.25rem;\n }\n\n /* Hide checkbox label text on mobile, show only checkbox */\n .panel-actions .checkbox-label {\n font-size: 0;\n gap: 0;\n min-height: 36px;\n padding: 0;\n }\n\n .panel-actions .checkbox-label::after {\n content: \"Auto\";\n font-size: 0.75rem;\n margin-left: 0.25rem;\n }\n}\n\n.sessions-list {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n min-height: 0;\n position: relative;\n padding: 0.75rem;\n}\n\n/* -----------------------------------------------------------------------------\n Session Cards\n ----------------------------------------------------------------------------- */\n.session-card {\n background: var(--md-surface);\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-small);\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.session-card:last-child {\n margin-bottom: 0;\n}\n\n.session-card:hover {\n box-shadow: var(--md-elevation-1);\n border-color: var(--md-primary);\n}\n\n.session-card.selected {\n border-color: var(--md-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--md-primary-container);\n}\n\n.session-card:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.session-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info {\n flex: 1;\n min-width: 0;\n}\n\n.session-info .session-title {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.session-meta {\n display: flex;\n gap: 1rem;\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n flex-wrap: wrap;\n}\n\n.session-meta .meta-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.session-badges {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n margin-top: 0.5rem;\n}\n\n/* -----------------------------------------------------------------------------\n Badges - MD3 Chips\n ----------------------------------------------------------------------------- */\n.badge {\n padding: 0.375rem 0.875rem;\n border-radius: var(--md-corner-full);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.badge-user {\n background: var(--md-primary-container);\n color: var(--md-primary);\n border: 1px solid var(--md-primary);\n}\n\n.badge-migration {\n background: var(--md-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--md-tertiary);\n}\n\n.badge-type {\n background: var(--md-secondary-container);\n color: #7A4D0C;\n border: 1px solid var(--md-secondary);\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons (Icon buttons)\n ----------------------------------------------------------------------------- */\n.action-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1rem;\n border-radius: var(--md-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.action-btn:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.action-btn:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.action-btn-danger:hover {\n background: var(--md-error);\n color: var(--md-on-error);\n}\n\n/* -----------------------------------------------------------------------------\n Log Viewer Panel\n ----------------------------------------------------------------------------- */\n.log-viewer-panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n overflow: hidden;\n background: var(--md-surface);\n min-height: 400px;\n}\n\n@media (max-width: 767px) {\n .log-viewer-panel {\n min-height: 350px;\n }\n}\n\n/* Code editor keeps its dark theme for readability (per design guide exception) */\n.log-content {\n flex: 1;\n overflow: hidden;\n min-height: 300px;\n height: 100%;\n position: relative;\n background: #1e1e1e;\n color: #d4d4d4;\n}\n\n.log-content ::ng-deep .cm-editor {\n height: 100%;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n font-size: 0.875rem;\n}\n\n.log-content ::ng-deep .cm-scroller {\n font-family: inherit;\n}\n\n.log-content ::ng-deep .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n}\n\n.log-content ::ng-deep .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n}\n\n.log-content ::ng-deep .cm-activeLineGutter {\n background: #2a2a2a;\n}\n\n.log-content ::ng-deep .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n}\n\n/* Expanded Log Viewer */\n.log-viewer-panel.expanded {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n border-radius: 0;\n margin: 0;\n max-height: none;\n height: 100vh;\n animation: expandIn 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.log-viewer-panel.expanded .panel-header {\n border-radius: 0;\n}\n\n.log-viewer-panel.expanded .log-content {\n max-height: calc(100vh - 60px);\n min-height: calc(100vh - 60px);\n}\n\n/* -----------------------------------------------------------------------------\n Empty State - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 4rem 2rem;\n gap: 1rem;\n}\n\n.empty-state .empty-icon {\n font-size: 4rem;\n color: var(--md-outline-variant);\n margin-bottom: 0.5rem;\n}\n\n.empty-state .empty-icon.warning {\n color: var(--md-secondary);\n}\n\n.empty-state .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n.empty-state .empty-subtext {\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n margin: 0;\n max-width: 400px;\n}\n\n/* -----------------------------------------------------------------------------\n Info Box\n ----------------------------------------------------------------------------- */\n.info-box {\n background: var(--md-surface-container);\n border-radius: var(--md-corner-medium);\n padding: 1.5rem;\n margin-top: 1.5rem;\n text-align: left;\n max-width: 500px;\n border: 1px solid var(--md-outline-variant);\n}\n\n.info-box h4 {\n margin: 0 0 1rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.info-box ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 1rem;\n color: var(--md-on-surface);\n}\n\n.info-box ol li {\n margin-bottom: 0.5rem;\n}\n\n.info-box code {\n background: var(--md-surface-container-high);\n padding: 0.125rem 0.5rem;\n border-radius: var(--md-corner-extra-small);\n font-size: 0.8125rem;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n color: var(--md-on-surface);\n}\n\n/* -----------------------------------------------------------------------------\n Loading Container - Uses mj-loading component\n ----------------------------------------------------------------------------- */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 300px;\n}\n\n.loading-text {\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n margin-top: 1rem;\n}\n\n/* -----------------------------------------------------------------------------\n Modal Dialogs - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 1rem;\n animation: fadeIn 0.2s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.modal-dialog {\n background: var(--md-surface);\n border-radius: var(--md-corner-extra-large);\n box-shadow: var(--md-elevation-5);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n animation: slideUp 0.3s cubic-bezier(0, 0, 0.2, 1);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.modal-dialog.modal-large {\n max-width: 700px;\n}\n\n/* Fullscreen mode */\n.modal-dialog.fullscreen {\n max-width: 100vw;\n width: 100vw;\n max-height: 100vh;\n height: 100vh;\n border-radius: 0;\n margin: 0;\n}\n\n@media (max-width: 639px) {\n .modal-dialog {\n width: 95%;\n max-height: 85vh;\n border-radius: 20px;\n }\n\n .modal-dialog.fullscreen {\n border-radius: 0;\n max-height: 100vh;\n }\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid var(--md-outline-variant);\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .modal-header {\n padding: 1rem 1.25rem;\n }\n}\n\n.modal-header .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n/* Modal Header Actions */\n.modal-header-actions {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n flex-shrink: 0;\n}\n\n.modal-action-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1.125rem;\n cursor: pointer;\n border-radius: var(--md-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.modal-action-btn:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.modal-action-btn:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.modal-header .modal-close {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: var(--md-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal-header .modal-close:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.modal-header .modal-close:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.modal-body {\n padding: 1.5rem;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n flex: 1;\n}\n\n@media (max-width: 639px) {\n .modal-body {\n padding: 1rem 1.25rem;\n }\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid var(--md-outline-variant);\n background: var(--md-surface-container-low);\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .modal-footer {\n padding: 1rem 1.25rem;\n flex-direction: column;\n }\n\n .modal-footer .btn-primary,\n .modal-footer .btn-secondary {\n width: 100%;\n justify-content: center;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Form Elements - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.form-group {\n margin-bottom: 1.5rem;\n}\n\n.form-label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--md-on-surface);\n margin-bottom: 0.5rem;\n}\n\n.form-input,\n.form-select,\n.form-textarea {\n width: 100%;\n min-height: 44px;\n padding: 0.875rem 1rem;\n border: 2px solid var(--md-outline-variant);\n border-radius: var(--md-corner-small);\n font-size: 1rem;\n background: var(--md-surface);\n color: var(--md-on-surface);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.form-input:hover,\n.form-select:hover,\n.form-textarea:hover {\n border-color: var(--md-primary);\n background: var(--md-surface-container-lowest);\n}\n\n.form-input:focus,\n.form-select:focus,\n.form-textarea:focus {\n outline: none;\n border-color: var(--md-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--md-surface);\n}\n\n.form-input::placeholder,\n.form-textarea::placeholder {\n color: var(--md-on-surface-variant);\n opacity: 0.7;\n}\n\n.form-select {\n cursor: pointer;\n}\n\n.form-hint {\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n margin-top: 0.375rem;\n}\n\n.form-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n font-size: 1rem;\n color: var(--md-on-surface);\n cursor: pointer;\n min-height: 44px;\n padding: 0.25rem 0;\n}\n\n.checkbox-label input[type=\"checkbox\"] {\n width: 20px;\n height: 20px;\n cursor: pointer;\n accent-color: var(--md-primary);\n flex-shrink: 0;\n}\n\n/* Form Section */\n.form-section {\n margin-top: 1.5rem;\n padding: 1.25rem;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n background: var(--md-surface-container-low);\n}\n\n.form-section-title {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n margin: 0 0 1rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.form-section-title i {\n color: var(--md-primary);\n font-size: 1.125rem;\n}\n\n.form-textarea {\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n resize: vertical;\n min-height: 100px;\n}\n\n/* -----------------------------------------------------------------------------\n Confirmation Dialog - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.confirm-dialog {\n background: var(--md-surface);\n border-radius: var(--md-corner-extra-large);\n box-shadow: var(--md-elevation-5);\n max-width: 420px;\n width: 90%;\n padding: 2rem;\n text-align: center;\n animation: dialogBounce 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n@media (max-width: 639px) {\n .confirm-dialog {\n padding: 1.5rem;\n border-radius: 20px;\n }\n}\n\n.confirm-dialog-icon {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n background: var(--md-secondary-container);\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 1.5rem;\n}\n\n.confirm-dialog-icon i {\n font-size: 1.75rem;\n color: #B5751A;\n}\n\n.confirm-dialog-content {\n margin-bottom: 1.5rem;\n}\n\n.confirm-dialog-title {\n margin: 0 0 0.75rem 0;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.confirm-dialog-message {\n margin: 0;\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n line-height: 1.6;\n}\n\n.confirm-dialog-message strong {\n color: var(--md-on-surface);\n font-weight: 600;\n}\n\n.confirm-dialog-details {\n display: block;\n margin-top: 0.75rem;\n padding: 0.75rem;\n background: var(--md-surface-container);\n border-radius: var(--md-corner-small);\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n}\n\n.confirm-dialog-actions {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n}\n\n@media (max-width: 639px) {\n .confirm-dialog-actions {\n flex-direction: column-reverse;\n }\n\n .confirm-dialog-actions .btn-danger,\n .confirm-dialog-actions .btn-secondary {\n width: 100%;\n justify-content: center;\n }\n}\n\n.confirm-dialog-actions .btn-danger {\n min-width: 140px;\n}\n\n.confirm-dialog-actions .btn-secondary {\n min-width: 100px;\n}\n\n/* -----------------------------------------------------------------------------\n Animations - MD3 Easing\n ----------------------------------------------------------------------------- */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes expandIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes dialogBounce {\n 0% {\n transform: scale(0.9) translateY(10px);\n opacity: 0;\n }\n 70% {\n transform: scale(1.02) translateY(-5px);\n }\n 100% {\n transform: scale(1) translateY(0);\n opacity: 1;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Reduced Motion Support\n ----------------------------------------------------------------------------- */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Focus Indicators - Accessibility\n ----------------------------------------------------------------------------- */\nbutton:focus-visible,\ninput:focus-visible,\nselect:focus-visible,\ntextarea:focus-visible,\na:focus-visible,\n[tabindex]:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n/* -----------------------------------------------------------------------------\n Screen Reader Only\n ----------------------------------------------------------------------------- */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n"] }]
1287
+ args: [{ standalone: false, selector: 'mj-sql-logging', template: "<div class=\"sql-logging-container\">\n <!-- Action Buttons -->\n <div class=\"action-buttons\" role=\"toolbar\" aria-label=\"SQL logging actions\">\n <button\n class=\"btn-secondary\"\n (click)=\"loadActiveSessions()\"\n [disabled]=\"loading\"\n aria-label=\"Refresh sessions\"\n >\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"loading\" aria-hidden=\"true\"></i>\n Refresh\n </button>\n @if (isOwner && configEnabled) {\n <button\n class=\"btn-primary\"\n [disabled]=\"loading || activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5)\"\n (click)=\"openStartSessionDialog()\"\n [attr.aria-label]=\"'Start new SQL logging session' + (activeSessions.length >= (sqlLoggingConfig?.maxActiveSessions || 5) ? ' (maximum sessions reached)' : '')\"\n >\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start New Session\n </button>\n }\n </div>\n\n <!-- Stats Cards with Toggle -->\n @if (isOwner && configEnabled) {\n <div class=\"stats-toggle-container\">\n <!-- Toggle Button -->\n <button\n class=\"stats-toggle-button\"\n [class.expanded]=\"showStats\"\n (click)=\"showStats = !showStats\"\n [attr.aria-expanded]=\"showStats\"\n aria-controls=\"stats-grid-content\"\n >\n <div class=\"stats-toggle-left\">\n <div class=\"stats-toggle-icon\">\n <i class=\"fa-solid fa-chart-line\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stats-toggle-text\">\n <h3 class=\"stats-toggle-title\">Statistics</h3>\n <p class=\"stats-toggle-subtitle\">View session statistics and metrics</p>\n </div>\n </div>\n <i class=\"fa-solid fa-chevron-down stats-toggle-arrow\" aria-hidden=\"true\"></i>\n </button>\n\n <!-- Stats Grid (Collapsible) -->\n <div\n id=\"stats-grid-content\"\n class=\"stats-grid\"\n [class.visible]=\"showStats\"\n role=\"region\"\n aria-label=\"SQL logging statistics\"\n >\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-status\">\n <i class=\"fa-solid fa-power-off\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"'Status: ' + (configEnabled ? 'Enabled' : 'Disabled')\">\n {{ configEnabled ? \"Enabled\" : \"Disabled\" }}\n </div>\n <div class=\"stat-label\">Status</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-active\">\n <i class=\"fa-solid fa-play-circle\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"activeSessions.length + ' active sessions'\">\n {{ activeSessions.length }}\n </div>\n <div class=\"stat-label\">Active Sessions</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-limit\">\n <i class=\"fa-solid fa-gauge-high\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"(sqlLoggingConfig?.maxActiveSessions || 5) + ' maximum sessions allowed'\">\n {{ sqlLoggingConfig?.maxActiveSessions || 5 }}\n </div>\n <div class=\"stat-label\">Max Sessions</div>\n </div>\n </div>\n\n <div class=\"stat-card\">\n <div class=\"stat-icon stat-icon-total\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\" [attr.aria-label]=\"getTotalStatementCount() + ' total SQL statements captured'\">\n {{ getTotalStatementCount() }}\n </div>\n <div class=\"stat-label\">Total Statements</div>\n </div>\n </div>\n </div>\n </div>\n }\n\n <!-- Loading State -->\n @if (loading && !activeSessions.length) {\n <div class=\"loading-container\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <mj-loading text=\"Loading SQL logging configuration...\" size=\"medium\"></mj-loading>\n </div>\n }\n\n <!-- Content Area -->\n @if (!loading || activeSessions.length > 0) {\n <div class=\"content-area\">\n @if (!isOwner) {\n <!-- Not authorized -->\n <div class=\"empty-state\" role=\"alert\">\n <i class=\"fa-solid fa-lock empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">Access Denied</p>\n <p class=\"empty-subtext\">SQL logging requires Owner privileges. Please contact your system administrator for access.</p>\n <button class=\"btn-secondary\" (click)=\"refreshUserPermissions()\" style=\"margin-top: 1rem\" aria-label=\"Refresh user permissions\">\n <i class=\"fa-solid fa-sync\" aria-hidden=\"true\"></i>\n Refresh Permissions\n </button>\n </div>\n } @else if (!configEnabled) {\n <!-- Not enabled in config -->\n <div class=\"empty-state\" role=\"alert\">\n <i class=\"fa-solid fa-exclamation-triangle empty-icon warning\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">SQL Logging Disabled</p>\n <p class=\"empty-subtext\">SQL logging is not enabled in the server configuration.</p>\n <div class=\"info-box\">\n <h4>To enable SQL logging:</h4>\n <ol>\n <li>Set <code>sqlLogging.enabled = true</code> in mj.config.cjs</li>\n <li>Restart the MJ API server</li>\n <li>Refresh this page</li>\n </ol>\n </div>\n </div>\n } @else if (activeSessions.length === 0) {\n <!-- No active sessions -->\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-file-code empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">No Active Sessions</p>\n <p class=\"empty-subtext\">Start a new SQL logging session to begin capturing SQL statements.</p>\n <button class=\"btn-primary\" (click)=\"openStartSessionDialog()\" style=\"margin-top: 1rem\" aria-label=\"Start a new SQL logging session\">\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start New Session\n </button>\n </div>\n } @else {\n <!-- Sessions layout -->\n <div class=\"sessions-layout\">\n <!-- Sessions panel -->\n <div class=\"sessions-panel\" role=\"region\" aria-label=\"Active sessions list\">\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">Active Sessions</h3>\n @if (activeSessions.length > 0) {\n <button\n class=\"btn-danger btn-small\"\n (click)=\"openStopAllSessionsConfirm()\"\n [disabled]=\"loading\"\n aria-label=\"Stop all active sessions\"\n >\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n Stop All\n </button>\n }\n </div>\n <div class=\"sessions-list\" role=\"list\" aria-label=\"SQL logging sessions\">\n @for (session of activeSessions; track session.id) {\n <div\n class=\"session-card\"\n [class.selected]=\"selectedSession?.id === session.id\"\n (click)=\"selectSession(session)\"\n role=\"listitem\"\n tabindex=\"0\"\n (keydown.enter)=\"selectSession(session)\"\n (keydown.space)=\"selectSession(session); $event.preventDefault()\"\n [attr.aria-label]=\"'Session: ' + session.sessionName + ', ' + session.statementCount + ' statements, duration ' + getSessionDuration(session.startTime)\"\n [attr.aria-selected]=\"selectedSession?.id === session.id\"\n >\n <div class=\"session-header\">\n <div class=\"session-info\">\n <h4 class=\"session-title\">{{ session.sessionName }}</h4>\n <div class=\"session-meta\">\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-clock\" aria-hidden=\"true\"></i>\n {{ getSessionDuration(session.startTime) }}\n </span>\n <span class=\"meta-item\">\n <i class=\"fa-solid fa-database\" aria-hidden=\"true\"></i>\n {{ session.statementCount }} statements\n </span>\n </div>\n </div>\n <button\n class=\"action-btn action-btn-danger\"\n (click)=\"openStopSessionConfirm(session, $event)\"\n [attr.aria-label]=\"'Stop session ' + session.sessionName\"\n >\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n </button>\n </div>\n <div class=\"session-badges\">\n @if (session.filterByUserId) {\n <span class=\"badge badge-user\">\n <i class=\"fa-solid fa-user\" aria-hidden=\"true\"></i>\n User Filtered\n </span>\n }\n @if (session.options?.formatAsMigration) {\n <span class=\"badge badge-migration\">\n <i class=\"fa-solid fa-code-branch\" aria-hidden=\"true\"></i>\n Migration\n </span>\n }\n <span class=\"badge badge-type\">\n {{ session.options?.statementTypes || \"both\" }}\n </span>\n </div>\n </div>\n }\n </div>\n </div>\n\n <!-- Log viewer panel -->\n <div class=\"log-viewer-panel\" [class.expanded]=\"isLogViewerExpanded\" role=\"region\" aria-label=\"SQL log viewer\">\n @if (selectedSession) {\n <div class=\"panel-header\">\n <h3 class=\"panel-title\">{{ selectedSession.sessionName }}</h3>\n <div class=\"panel-actions\">\n <label class=\"checkbox-label\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"autoRefresh\"\n aria-label=\"Enable auto-refresh\"\n />\n Auto-refresh\n </label>\n <button\n class=\"action-btn\"\n (click)=\"loadSessionLog(selectedSession)\"\n aria-label=\"Refresh log content\"\n >\n <i class=\"fa-solid fa-sync\" [class.fa-spin]=\"loading\" aria-hidden=\"true\"></i>\n </button>\n <button\n class=\"action-btn\"\n (click)=\"toggleLogViewerExpand()\"\n [attr.aria-label]=\"isLogViewerExpanded ? 'Collapse log viewer' : 'Expand log viewer to fullscreen'\"\n [attr.aria-expanded]=\"isLogViewerExpanded\"\n >\n <i class=\"fa-solid\" [class.fa-expand]=\"!isLogViewerExpanded\" [class.fa-compress]=\"isLogViewerExpanded\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"log-content\">\n <mj-code-editor\n [value]=\"logContent\"\n [readonly]=\"true\"\n [disabled]=\"true\"\n [language]=\"'sql'\"\n [setup]=\"'basic'\"\n [lineWrapping]=\"true\"\n [highlightWhitespace]=\"false\"\n style=\"height: 100%\"\n aria-label=\"SQL log content\"\n ></mj-code-editor>\n </div>\n } @else {\n <div class=\"empty-state\" role=\"status\">\n <i class=\"fa-solid fa-arrow-left empty-icon\" aria-hidden=\"true\"></i>\n <p class=\"empty-text\">Select a Session</p>\n <p class=\"empty-subtext\">Choose a session from the list to view its SQL log.</p>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n\n <!-- Start Session Dialog -->\n @if (showStartSessionDialog) {\n <div\n class=\"modal-backdrop\"\n (click)=\"showStartSessionDialog = false\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"start-session-dialog-title\"\n >\n <div class=\"modal-dialog modal-large\" [class.fullscreen]=\"isStartDialogFullscreen\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-header\">\n <h3 class=\"modal-title\" id=\"start-session-dialog-title\">\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start SQL Logging Session\n </h3>\n <div class=\"modal-header-actions\">\n <button\n class=\"modal-action-btn\"\n (click)=\"toggleStartDialogFullscreen()\"\n [attr.aria-label]=\"isStartDialogFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'\"\n type=\"button\"\n >\n <i class=\"fa-solid\" [class.fa-compress]=\"isStartDialogFullscreen\" [class.fa-expand]=\"!isStartDialogFullscreen\" aria-hidden=\"true\"></i>\n </button>\n <button class=\"modal-close\" (click)=\"showStartSessionDialog = false\" aria-label=\"Close dialog\">\n <i class=\"fa-solid fa-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n <div class=\"modal-body\">\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"session-name\">Session Name</label>\n <input\n type=\"text\"\n id=\"session-name\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.sessionName\"\n placeholder=\"Enter a descriptive name for this session\"\n aria-describedby=\"session-name-hint\"\n />\n <div id=\"session-name-hint\" class=\"form-hint\">A descriptive name to identify this logging session</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"file-name\">File Name</label>\n <input\n type=\"text\"\n id=\"file-name\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.fileName\"\n placeholder=\"sql-log-2024-01-01.sql\"\n aria-describedby=\"file-name-hint\"\n />\n <div id=\"file-name-hint\" class=\"form-hint\">The SQL log will be saved to this file</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"statement-types\">Statement Types</label>\n <select\n id=\"statement-types\"\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.statementTypes\"\n aria-describedby=\"statement-types-hint\"\n >\n @for (option of statementTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n <div id=\"statement-types-hint\" class=\"form-hint\">Filter which types of SQL statements to capture</div>\n </div>\n\n <div class=\"form-checkboxes\" role=\"group\" aria-label=\"Session options\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.filterToCurrentUser\" />\n Filter to my SQL statements only\n </label>\n\n\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.formatAsMigration\" />\n Format as migration file\n </label>\n\n\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.prettyPrint\" />\n Pretty print SQL statements\n </label>\n </div>\n\n <!-- SQL Pattern Filtering Section -->\n <div class=\"form-section\">\n <h4 class=\"form-section-title\">\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\n SQL Pattern Filtering\n </h4>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"filter-type\">Filter Mode</label>\n <select\n id=\"filter-type\"\n class=\"form-select\"\n [(ngModel)]=\"newSessionOptions.filterType\"\n aria-describedby=\"filter-type-hint\"\n >\n @for (option of filterTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n <div id=\"filter-type-hint\" class=\"form-hint\">Exclude: Skip SQL matching any pattern. Include: Only log SQL matching a pattern.</div>\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"filter-patterns\">Filter Patterns (one per line or comma-separated)</label>\n <textarea\n id=\"filter-patterns\"\n class=\"form-textarea\"\n [(ngModel)]=\"newSessionOptions.filterPatterns\"\n rows=\"4\"\n placeholder=\"Examples:&#10;*AIPrompt*&#10;/spCreate.*Run/i&#10;SELECT * FROM vwMetadata\"\n aria-describedby=\"filter-patterns-hint\"\n ></textarea>\n <div id=\"filter-patterns-hint\" class=\"form-hint\">Supports wildcards (*) and regex (/pattern/flags). Example: *spCreate* matches any SP starting with spCreate.</div>\n </div>\n </div>\n\n <!-- Advanced Options Section -->\n <div class=\"form-section\">\n <h4 class=\"form-section-title\">\n <i class=\"fa-solid fa-cog\" aria-hidden=\"true\"></i>\n Advanced Options\n </h4>\n\n @if (newSessionOptions.formatAsMigration) {\n <div class=\"form-group\">\n <label class=\"form-label\" for=\"default-schema\">Default Schema Name</label>\n <input\n type=\"text\"\n id=\"default-schema\"\n class=\"form-input\"\n [(ngModel)]=\"newSessionOptions.defaultSchemaName\"\n placeholder=\"__mj\"\n aria-describedby=\"default-schema-hint\"\n />\n <div id=\"default-schema-hint\" class=\"form-hint\">Schema name to replace with $&#123;flyway:defaultSchema&#125; placeholder.</div>\n </div>\n }\n\n <div class=\"form-checkboxes\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"newSessionOptions.verboseOutput\" />\n Verbose Debug Output\n </label>\n <div class=\"form-hint\" style=\"margin-left: 1.75rem\">Log detailed filter decisions to server console (for debugging).</div>\n </div>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button class=\"btn-primary\" (click)=\"startNewSession()\" [disabled]=\"loading\" aria-label=\"Start the SQL logging session\">\n @if (loading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Starting...\n } @else {\n <i class=\"fa-solid fa-play\" aria-hidden=\"true\"></i>\n Start Session\n }\n </button>\n <button class=\"btn-secondary\" (click)=\"showStartSessionDialog = false\" aria-label=\"Cancel and close dialog\">Cancel</button>\n </div>\n </div>\n </div>\n }\n\n <!-- Stop Session Confirmation Dialog -->\n @if (showStopConfirmDialog) {\n <div\n class=\"modal-backdrop\"\n (click)=\"cancelStopConfirm()\"\n role=\"alertdialog\"\n aria-modal=\"true\"\n aria-labelledby=\"stop-dialog-title\"\n aria-describedby=\"stop-dialog-desc\"\n >\n <div class=\"confirm-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"confirm-dialog-icon\">\n <i class=\"fa-solid fa-exclamation-triangle\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"confirm-dialog-content\">\n <h3 class=\"confirm-dialog-title\" id=\"stop-dialog-title\">\n @if (isStoppingAll) {\n Stop All Sessions?\n } @else {\n Stop Session?\n }\n </h3>\n <p class=\"confirm-dialog-message\" id=\"stop-dialog-desc\">\n @if (isStoppingAll) {\n Are you sure you want to stop <strong>all {{ activeSessions.length }} active</strong> SQL logging sessions? This action cannot be undone.\n } @else if (sessionToStop) {\n Are you sure you want to stop the session <strong>\"{{ sessionToStop.sessionName }}\"</strong>?\n <span class=\"confirm-dialog-details\"> This session has captured {{ sessionToStop.statementCount }} SQL statements. </span>\n }\n </p>\n </div>\n <div class=\"confirm-dialog-actions\">\n <button class=\"btn-danger\" (click)=\"confirmStopSession()\" [disabled]=\"loading\" [attr.aria-label]=\"isStoppingAll ? 'Confirm stop all sessions' : 'Confirm stop session'\">\n @if (loading) {\n <i class=\"fa-solid fa-spinner fa-spin\" aria-hidden=\"true\"></i>\n Stopping...\n } @else {\n <i class=\"fa-solid fa-stop\" aria-hidden=\"true\"></i>\n @if (isStoppingAll) {\n Stop All Sessions\n } @else {\n Stop Session\n }\n }\n </button>\n <button class=\"btn-secondary\" (click)=\"cancelStopConfirm()\" [disabled]=\"loading\" aria-label=\"Cancel and keep sessions running\">Cancel</button>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: ["/* =============================================================================\n SQL Logging Component - Material Design 3 Styles\n Following MD3 Design System with custom color palette and design tokens\n ============================================================================= */\n\n/* MD3 Design Tokens - Color Palette */\n:host {\n /* Primary - Deep Blue */\n --md-primary: #0076B6;\n --md-on-primary: #FFFFFF;\n --md-primary-container: #AAE7FD;\n --md-on-primary-container: #001F2A;\n\n /* Secondary - Light Orange */\n --md-secondary: #F5A623;\n --md-on-secondary: #FFFFFF;\n --md-secondary-container: #FFECD6;\n --md-on-secondary-container: #2D1600;\n\n /* Tertiary - Light Green */\n --md-tertiary: #4CAF50;\n --md-on-tertiary: #FFFFFF;\n --md-tertiary-container: #C8E6C9;\n --md-on-tertiary-container: #002204;\n\n /* Error - Red */\n --md-error: #D32F2F;\n --md-on-error: #FFFFFF;\n --md-error-container: #FFCDD2;\n --md-on-error-container: #410002;\n\n /* Surface Colors */\n --md-surface: #FAFCFF;\n --md-surface-container-lowest: #FFFFFF;\n --md-surface-container-low: #F3F5F9;\n --md-surface-container: #EDF0F4;\n --md-surface-container-high: #E7EAEE;\n --md-surface-container-highest: #E1E3E8;\n --md-on-surface: #191C20;\n --md-on-surface-variant: #43474E;\n --md-outline: #74777F;\n --md-outline-variant: #C4C6D0;\n\n /* Elevation (Box Shadows) */\n --md-elevation-1: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08);\n --md-elevation-2: 0 2px 4px rgba(0, 0, 0, 0.1), 0 4px 8px rgba(0, 0, 0, 0.08);\n --md-elevation-3: 0 4px 8px rgba(0, 0, 0, 0.1), 0 8px 16px rgba(0, 0, 0, 0.08);\n --md-elevation-4: 0 6px 12px rgba(0, 0, 0, 0.1), 0 12px 24px rgba(0, 0, 0, 0.08);\n --md-elevation-5: 0 8px 16px rgba(0, 0, 0, 0.12), 0 16px 32px rgba(0, 0, 0, 0.1);\n\n /* Corner Radii */\n --md-corner-extra-small: 4px;\n --md-corner-small: 8px;\n --md-corner-medium: 12px;\n --md-corner-large: 16px;\n --md-corner-extra-large: 28px;\n --md-corner-full: 9999px;\n\n /* Host element layout */\n display: block;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n}\n\n/* -----------------------------------------------------------------------------\n Container & Layout\n ----------------------------------------------------------------------------- */\n.sql-logging-container {\n display: flex;\n flex-direction: column;\n min-height: 100%;\n width: 100%;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n position: relative;\n background: var(--md-surface);\n padding: 1rem;\n}\n\n@media (min-width: 640px) {\n .sql-logging-container {\n padding: 1.25rem;\n }\n}\n\n@media (min-width: 768px) {\n .sql-logging-container {\n padding: 1.5rem;\n }\n}\n\n@media (min-width: 1024px) {\n .sql-logging-container {\n padding: 2rem;\n }\n}\n\n@media (min-width: 1440px) {\n .sql-logging-container {\n padding: 2rem 2.5rem;\n max-width: 1920px;\n margin: 0 auto;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons\n ----------------------------------------------------------------------------- */\n.action-buttons {\n display: flex;\n gap: 0.75rem;\n justify-content: flex-end;\n margin-bottom: 1.5rem;\n flex-wrap: wrap;\n}\n\n@media (max-width: 639px) {\n .action-buttons {\n justify-content: center;\n }\n\n /* Icon-only buttons on mobile */\n .action-buttons .btn-primary,\n .action-buttons .btn-secondary {\n font-size: 0;\n padding: 0.75rem;\n min-width: 48px;\n min-height: 48px;\n gap: 0;\n }\n\n .action-buttons .btn-primary i,\n .action-buttons .btn-secondary i {\n font-size: 1.125rem;\n }\n\n .stats-toggle-button {\n padding: 0.875rem 1rem;\n }\n\n .stats-toggle-icon {\n width: 40px;\n height: 40px;\n font-size: 1rem;\n }\n\n .stats-toggle-title {\n font-size: 0.9375rem;\n }\n\n .stats-toggle-subtitle {\n font-size: 0.75rem;\n }\n\n .stats-toggle-arrow {\n font-size: 1.125rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Button System - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.btn-primary,\n.btn-secondary,\n.btn-danger {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n padding: 0.75rem 1.5rem;\n font-size: 0.875rem;\n font-weight: 600;\n border: none;\n border-radius: var(--md-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: nowrap;\n min-height: 44px;\n min-width: 44px;\n}\n\n/* Primary Button - Dark blue, lightens on hover */\n.btn-primary {\n background: var(--md-primary);\n color: var(--md-on-primary);\n box-shadow: var(--md-elevation-1);\n}\n\n.btn-primary:hover:not(:disabled) {\n background: #3395C8;\n box-shadow: var(--md-elevation-2);\n}\n\n.btn-primary:active:not(:disabled) {\n background: #4BA5D4;\n transform: scale(0.98);\n}\n\n.btn-primary:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-primary i {\n font-size: 0.875rem;\n}\n\n/* Secondary Button - Light, darkens/fills on hover */\n.btn-secondary {\n background: var(--md-surface);\n color: var(--md-primary);\n border: 1px solid var(--md-outline);\n}\n\n.btn-secondary:hover:not(:disabled) {\n background: var(--md-primary);\n color: var(--md-on-primary);\n border-color: var(--md-primary);\n}\n\n.btn-secondary:active:not(:disabled) {\n background: #005A8C;\n border-color: #005A8C;\n}\n\n.btn-secondary:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-secondary i {\n font-size: 0.875rem;\n}\n\n/* Danger Button - Dark red, lightens on hover */\n.btn-danger {\n background: var(--md-error);\n color: var(--md-on-error);\n box-shadow: var(--md-elevation-1);\n}\n\n.btn-danger:hover:not(:disabled) {\n background: #E57373;\n box-shadow: var(--md-elevation-2);\n}\n\n.btn-danger:active:not(:disabled) {\n background: #EF9A9A;\n transform: scale(0.98);\n}\n\n.btn-danger:disabled {\n opacity: 0.38;\n cursor: not-allowed;\n}\n\n.btn-danger i {\n font-size: 0.875rem;\n}\n\n.btn-danger.btn-small {\n padding: 0.5rem 0.875rem;\n font-size: 0.8125rem;\n min-height: 36px;\n}\n\n/* -----------------------------------------------------------------------------\n Statistics Grid - MD3 Cards\n ----------------------------------------------------------------------------- */\n.stats-toggle-container {\n margin-bottom: 1.5rem;\n}\n\n.stats-toggle-button {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 1rem 1.5rem;\n background: var(--md-surface-container-low);\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-height: 56px;\n}\n\n.stats-toggle-button:hover {\n background: var(--md-surface-container);\n border-color: var(--md-primary);\n box-shadow: var(--md-elevation-1);\n}\n\n.stats-toggle-button.expanded {\n border-color: var(--md-primary);\n background: var(--md-primary-container);\n margin-bottom: 1rem;\n}\n\n.stats-toggle-left {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n\n.stats-toggle-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--md-corner-medium);\n background: var(--md-primary-container);\n color: var(--md-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.25rem;\n flex-shrink: 0;\n}\n\n.stats-toggle-button.expanded .stats-toggle-icon {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.stats-toggle-text {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n}\n\n.stats-toggle-title {\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n.stats-toggle-button.expanded .stats-toggle-title {\n color: var(--md-primary);\n}\n\n.stats-toggle-subtitle {\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n margin: 0;\n}\n\n.stats-toggle-arrow {\n font-size: 1.25rem;\n color: var(--md-on-surface-variant);\n transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.stats-toggle-button.expanded .stats-toggle-arrow {\n transform: rotate(180deg);\n color: var(--md-primary);\n}\n\n.stats-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 0.75rem;\n width: 100%;\n overflow: hidden;\n max-height: 0;\n opacity: 0;\n transition: max-height 0.3s cubic-bezier(0.4, 0, 0.2, 1),\n opacity 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.stats-grid.visible {\n max-height: 1000px;\n opacity: 1;\n margin-bottom: 1.5rem;\n}\n\n@media (min-width: 640px) {\n .stats-grid {\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n }\n}\n\n@media (min-width: 768px) {\n /* Hide toggle button on desktop - stats always visible */\n .stats-toggle-button {\n display: none;\n }\n\n /* Always show stats grid on desktop */\n .stats-grid {\n max-height: none;\n opacity: 1;\n margin-bottom: 1.5rem;\n gap: 1.25rem;\n }\n}\n\n@media (min-width: 1024px) {\n .stats-grid {\n grid-template-columns: repeat(4, 1fr);\n gap: 1.5rem;\n }\n}\n\n@media (min-width: 1440px) {\n .stats-grid {\n gap: 2rem;\n }\n}\n\n/* Static Display Card - Non-interactive */\n.stat-card {\n background: var(--md-surface-container-low);\n border-radius: var(--md-corner-medium);\n padding: 1.25rem;\n box-shadow: var(--md-elevation-1);\n display: flex;\n align-items: center;\n gap: 1rem;\n border: 1px solid var(--md-outline-variant);\n cursor: default;\n}\n\n.stat-icon {\n width: 56px;\n height: 56px;\n border-radius: var(--md-corner-medium);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .stat-icon {\n width: 48px;\n height: 48px;\n font-size: 1.25rem;\n }\n}\n\n.stat-icon-status {\n background: var(--md-tertiary-container);\n color: var(--md-tertiary);\n}\n\n.stat-icon-active {\n background: var(--md-primary-container);\n color: var(--md-primary);\n}\n\n.stat-icon-limit {\n background: var(--md-secondary-container);\n color: #B5751A;\n}\n\n.stat-icon-total {\n background: var(--md-tertiary-container);\n color: var(--md-tertiary);\n}\n\n.stat-content {\n flex: 1;\n min-width: 0;\n}\n\n.stat-content .stat-value {\n font-size: 1.75rem;\n font-weight: 700;\n color: var(--md-on-surface);\n line-height: 1;\n letter-spacing: -0.02em;\n}\n\n@media (max-width: 639px) {\n .stat-content .stat-value {\n font-size: 1.5rem;\n font-weight: 700;\n }\n}\n\n.stat-content .stat-label {\n font-size: 0.75rem;\n font-weight: 500;\n color: var(--md-on-surface-variant);\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-top: 0.25rem;\n}\n\n/* -----------------------------------------------------------------------------\n Content Area\n ----------------------------------------------------------------------------- */\n.content-area {\n flex: 1;\n overflow: visible;\n min-height: 0;\n position: relative;\n background: var(--md-surface-container);\n border-radius: var(--md-corner-medium);\n border: 1px solid var(--md-outline-variant);\n padding: 1rem;\n}\n\n@media (min-width: 640px) {\n .content-area {\n padding: 1.25rem;\n }\n}\n\n@media (min-width: 768px) {\n .content-area {\n padding: 1.5rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Sessions Layout - Two-panel design\n ----------------------------------------------------------------------------- */\n.sessions-layout {\n display: flex;\n gap: 1.5rem;\n min-height: 400px;\n overflow: visible;\n}\n\n@media (max-width: 767px) {\n .sessions-layout {\n flex-direction: column;\n gap: 1rem;\n min-height: auto;\n }\n}\n\n@media (min-width: 768px) and (max-width: 1023px) {\n .sessions-layout {\n gap: 1.25rem;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Sessions Panel\n ----------------------------------------------------------------------------- */\n.sessions-panel {\n flex: 0 0 380px;\n display: flex;\n flex-direction: column;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n overflow: hidden;\n background: var(--md-surface);\n max-height: 600px;\n}\n\n@media (max-width: 767px) {\n .sessions-panel {\n flex: none;\n max-height: 350px;\n }\n}\n\n@media (min-width: 768px) and (max-width: 1023px) {\n .sessions-panel {\n flex: 0 0 320px;\n }\n}\n\n@media (min-width: 1440px) {\n .sessions-panel {\n flex: 0 0 420px;\n }\n}\n\n.panel-header {\n padding: 1rem;\n background: var(--md-surface-container-low);\n border-bottom: 1px solid var(--md-outline-variant);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-shrink: 0;\n gap: 0.5rem;\n}\n\n@media (max-width: 639px) {\n .panel-header {\n padding: 0.75rem;\n flex-wrap: wrap;\n }\n}\n\n.panel-header .panel-title {\n margin: 0;\n font-size: 1rem;\n font-weight: 600;\n color: var(--md-on-surface);\n flex-shrink: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n@media (max-width: 639px) {\n .panel-header .panel-title {\n font-size: 0.875rem;\n max-width: 50%;\n }\n}\n\n.panel-actions {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .panel-actions {\n gap: 0.25rem;\n }\n\n /* Hide checkbox label text on mobile, show only checkbox */\n .panel-actions .checkbox-label {\n font-size: 0;\n gap: 0;\n min-height: 36px;\n padding: 0;\n }\n\n .panel-actions .checkbox-label::after {\n content: \"Auto\";\n font-size: 0.75rem;\n margin-left: 0.25rem;\n }\n}\n\n.sessions-list {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n -webkit-overflow-scrolling: touch;\n min-height: 0;\n position: relative;\n padding: 0.75rem;\n}\n\n/* -----------------------------------------------------------------------------\n Session Cards\n ----------------------------------------------------------------------------- */\n.session-card {\n background: var(--md-surface);\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-small);\n padding: 1rem;\n margin-bottom: 0.75rem;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.session-card:last-child {\n margin-bottom: 0;\n}\n\n.session-card:hover {\n box-shadow: var(--md-elevation-1);\n border-color: var(--md-primary);\n}\n\n.session-card.selected {\n border-color: var(--md-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--md-primary-container);\n}\n\n.session-card:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.session-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 0.75rem;\n}\n\n.session-info {\n flex: 1;\n min-width: 0;\n}\n\n.session-info .session-title {\n margin: 0 0 0.5rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.session-meta {\n display: flex;\n gap: 1rem;\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n flex-wrap: wrap;\n}\n\n.session-meta .meta-item {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n\n.session-badges {\n display: flex;\n gap: 0.5rem;\n flex-wrap: wrap;\n margin-top: 0.5rem;\n}\n\n/* -----------------------------------------------------------------------------\n Badges - MD3 Chips\n ----------------------------------------------------------------------------- */\n.badge {\n padding: 0.375rem 0.875rem;\n border-radius: var(--md-corner-full);\n font-size: 0.75rem;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.03em;\n display: inline-flex;\n align-items: center;\n gap: 0.375rem;\n}\n\n.badge-user {\n background: var(--md-primary-container);\n color: var(--md-primary);\n border: 1px solid var(--md-primary);\n}\n\n.badge-migration {\n background: var(--md-tertiary-container);\n color: #1B5E20;\n border: 1px solid var(--md-tertiary);\n}\n\n.badge-type {\n background: var(--md-secondary-container);\n color: #7A4D0C;\n border: 1px solid var(--md-secondary);\n}\n\n/* -----------------------------------------------------------------------------\n Action Buttons (Icon buttons)\n ----------------------------------------------------------------------------- */\n.action-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1rem;\n border-radius: var(--md-corner-full);\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.action-btn:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.action-btn:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.action-btn-danger:hover {\n background: var(--md-error);\n color: var(--md-on-error);\n}\n\n/* -----------------------------------------------------------------------------\n Log Viewer Panel\n ----------------------------------------------------------------------------- */\n.log-viewer-panel {\n flex: 1;\n display: flex;\n flex-direction: column;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n overflow: hidden;\n background: var(--md-surface);\n min-height: 400px;\n}\n\n@media (max-width: 767px) {\n .log-viewer-panel {\n min-height: 350px;\n }\n}\n\n/* Code editor keeps its dark theme for readability (per design guide exception) */\n.log-content {\n flex: 1;\n overflow: hidden;\n min-height: 300px;\n height: 100%;\n position: relative;\n background: #1e1e1e;\n color: #d4d4d4;\n}\n\n.log-content ::ng-deep .cm-editor {\n height: 100%;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n font-size: 0.875rem;\n}\n\n.log-content ::ng-deep .cm-scroller {\n font-family: inherit;\n}\n\n.log-content ::ng-deep .cm-content {\n background: #1e1e1e;\n color: #d4d4d4;\n}\n\n.log-content ::ng-deep .cm-gutters {\n background: #252526;\n color: #858585;\n border-right: 1px solid #464647;\n}\n\n.log-content ::ng-deep .cm-activeLineGutter {\n background: #2a2a2a;\n}\n\n.log-content ::ng-deep .cm-activeLine {\n background: rgba(255, 255, 255, 0.04);\n}\n\n/* Expanded Log Viewer */\n.log-viewer-panel.expanded {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n border-radius: 0;\n margin: 0;\n max-height: none;\n height: 100vh;\n animation: expandIn 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.log-viewer-panel.expanded .panel-header {\n border-radius: 0;\n}\n\n.log-viewer-panel.expanded .log-content {\n max-height: calc(100vh - 60px);\n min-height: calc(100vh - 60px);\n}\n\n/* -----------------------------------------------------------------------------\n Empty State - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 4rem 2rem;\n gap: 1rem;\n}\n\n.empty-state .empty-icon {\n font-size: 4rem;\n color: var(--md-outline-variant);\n margin-bottom: 0.5rem;\n}\n\n.empty-state .empty-icon.warning {\n color: var(--md-secondary);\n}\n\n.empty-state .empty-text {\n font-size: 1.25rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n.empty-state .empty-subtext {\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n margin: 0;\n max-width: 400px;\n}\n\n/* -----------------------------------------------------------------------------\n Info Box\n ----------------------------------------------------------------------------- */\n.info-box {\n background: var(--md-surface-container);\n border-radius: var(--md-corner-medium);\n padding: 1.5rem;\n margin-top: 1.5rem;\n text-align: left;\n max-width: 500px;\n border: 1px solid var(--md-outline-variant);\n}\n\n.info-box h4 {\n margin: 0 0 1rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.info-box ol {\n margin: 0;\n padding-left: 1.25rem;\n font-size: 1rem;\n color: var(--md-on-surface);\n}\n\n.info-box ol li {\n margin-bottom: 0.5rem;\n}\n\n.info-box code {\n background: var(--md-surface-container-high);\n padding: 0.125rem 0.5rem;\n border-radius: var(--md-corner-extra-small);\n font-size: 0.8125rem;\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n color: var(--md-on-surface);\n}\n\n/* -----------------------------------------------------------------------------\n Loading Container - Uses mj-loading component\n ----------------------------------------------------------------------------- */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 4rem 2rem;\n min-height: 300px;\n}\n\n.loading-text {\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n margin-top: 1rem;\n}\n\n/* -----------------------------------------------------------------------------\n Modal Dialogs - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.modal-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n padding: 1rem;\n animation: fadeIn 0.2s cubic-bezier(0, 0, 0.2, 1);\n}\n\n.modal-dialog {\n background: var(--md-surface);\n border-radius: var(--md-corner-extra-large);\n box-shadow: var(--md-elevation-5);\n max-width: 500px;\n width: 90%;\n max-height: 90vh;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n animation: slideUp 0.3s cubic-bezier(0, 0, 0.2, 1);\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.modal-dialog.modal-large {\n max-width: 700px;\n}\n\n/* Fullscreen mode */\n.modal-dialog.fullscreen {\n max-width: 100vw;\n width: 100vw;\n max-height: 100vh;\n height: 100vh;\n border-radius: 0;\n margin: 0;\n}\n\n@media (max-width: 639px) {\n .modal-dialog {\n width: 95%;\n max-height: 85vh;\n border-radius: 20px;\n }\n\n .modal-dialog.fullscreen {\n border-radius: 0;\n max-height: 100vh;\n }\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1.5rem;\n border-bottom: 1px solid var(--md-outline-variant);\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .modal-header {\n padding: 1rem 1.25rem;\n }\n}\n\n.modal-header .modal-title {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--md-on-surface);\n margin: 0;\n}\n\n/* Modal Header Actions */\n.modal-header-actions {\n display: flex;\n gap: 0.5rem;\n align-items: center;\n flex-shrink: 0;\n}\n\n.modal-action-btn {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1.125rem;\n cursor: pointer;\n border-radius: var(--md-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.modal-action-btn:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.modal-action-btn:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.modal-header .modal-close {\n padding: 0.625rem;\n border: none;\n background: transparent;\n color: var(--md-on-surface-variant);\n font-size: 1.25rem;\n cursor: pointer;\n border-radius: var(--md-corner-full);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n min-width: 44px;\n min-height: 44px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.modal-header .modal-close:hover {\n background: var(--md-primary);\n color: var(--md-on-primary);\n}\n\n.modal-header .modal-close:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n.modal-body {\n padding: 1.5rem;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n flex: 1;\n}\n\n@media (max-width: 639px) {\n .modal-body {\n padding: 1rem 1.25rem;\n }\n}\n\n.modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 0.75rem;\n padding: 1.5rem;\n border-top: 1px solid var(--md-outline-variant);\n background: var(--md-surface-container-low);\n flex-shrink: 0;\n}\n\n@media (max-width: 639px) {\n .modal-footer {\n padding: 1rem 1.25rem;\n flex-direction: column;\n }\n\n .modal-footer .btn-primary,\n .modal-footer .btn-secondary {\n width: 100%;\n justify-content: center;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Form Elements - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.form-group {\n margin-bottom: 1.5rem;\n}\n\n.form-label {\n display: block;\n font-size: 0.875rem;\n font-weight: 500;\n color: var(--md-on-surface);\n margin-bottom: 0.5rem;\n}\n\n.form-input,\n.form-select,\n.form-textarea {\n width: 100%;\n min-height: 44px;\n padding: 0.875rem 1rem;\n border: 2px solid var(--md-outline-variant);\n border-radius: var(--md-corner-small);\n font-size: 1rem;\n background: var(--md-surface);\n color: var(--md-on-surface);\n transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.form-input:hover,\n.form-select:hover,\n.form-textarea:hover {\n border-color: var(--md-primary);\n background: var(--md-surface-container-lowest);\n}\n\n.form-input:focus,\n.form-select:focus,\n.form-textarea:focus {\n outline: none;\n border-color: var(--md-primary);\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.2);\n background: var(--md-surface);\n}\n\n.form-input::placeholder,\n.form-textarea::placeholder {\n color: var(--md-on-surface-variant);\n opacity: 0.7;\n}\n\n.form-select {\n cursor: pointer;\n}\n\n.form-hint {\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n margin-top: 0.375rem;\n}\n\n.form-checkboxes {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n font-size: 1rem;\n color: var(--md-on-surface);\n cursor: pointer;\n min-height: 44px;\n padding: 0.25rem 0;\n}\n\n.checkbox-label input[type=\"checkbox\"] {\n width: 20px;\n height: 20px;\n cursor: pointer;\n accent-color: var(--md-primary);\n flex-shrink: 0;\n}\n\n/* Form Section */\n.form-section {\n margin-top: 1.5rem;\n padding: 1.25rem;\n border: 1px solid var(--md-outline-variant);\n border-radius: var(--md-corner-medium);\n background: var(--md-surface-container-low);\n}\n\n.form-section-title {\n display: flex;\n align-items: center;\n gap: 0.625rem;\n margin: 0 0 1rem 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.form-section-title i {\n color: var(--md-primary);\n font-size: 1.125rem;\n}\n\n.form-textarea {\n font-family: \"Consolas\", \"Monaco\", \"Courier New\", monospace;\n resize: vertical;\n min-height: 100px;\n}\n\n/* -----------------------------------------------------------------------------\n Confirmation Dialog - MD3 Pattern\n ----------------------------------------------------------------------------- */\n.confirm-dialog {\n background: var(--md-surface);\n border-radius: var(--md-corner-extra-large);\n box-shadow: var(--md-elevation-5);\n max-width: 420px;\n width: 90%;\n padding: 2rem;\n text-align: center;\n animation: dialogBounce 0.3s cubic-bezier(0, 0, 0.2, 1);\n}\n\n@media (max-width: 639px) {\n .confirm-dialog {\n padding: 1.5rem;\n border-radius: 20px;\n }\n}\n\n.confirm-dialog-icon {\n width: 64px;\n height: 64px;\n border-radius: 50%;\n background: var(--md-secondary-container);\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 1.5rem;\n}\n\n.confirm-dialog-icon i {\n font-size: 1.75rem;\n color: #B5751A;\n}\n\n.confirm-dialog-content {\n margin-bottom: 1.5rem;\n}\n\n.confirm-dialog-title {\n margin: 0 0 0.75rem 0;\n font-size: 1.375rem;\n font-weight: 600;\n color: var(--md-on-surface);\n}\n\n.confirm-dialog-message {\n margin: 0;\n font-size: 1rem;\n color: var(--md-on-surface-variant);\n line-height: 1.6;\n}\n\n.confirm-dialog-message strong {\n color: var(--md-on-surface);\n font-weight: 600;\n}\n\n.confirm-dialog-details {\n display: block;\n margin-top: 0.75rem;\n padding: 0.75rem;\n background: var(--md-surface-container);\n border-radius: var(--md-corner-small);\n font-size: 0.8125rem;\n color: var(--md-on-surface-variant);\n}\n\n.confirm-dialog-actions {\n display: flex;\n gap: 0.75rem;\n justify-content: center;\n}\n\n@media (max-width: 639px) {\n .confirm-dialog-actions {\n flex-direction: column-reverse;\n }\n\n .confirm-dialog-actions .btn-danger,\n .confirm-dialog-actions .btn-secondary {\n width: 100%;\n justify-content: center;\n }\n}\n\n.confirm-dialog-actions .btn-danger {\n min-width: 140px;\n}\n\n.confirm-dialog-actions .btn-secondary {\n min-width: 100px;\n}\n\n/* -----------------------------------------------------------------------------\n Animations - MD3 Easing\n ----------------------------------------------------------------------------- */\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes slideUp {\n from {\n transform: translateY(20px);\n opacity: 0;\n }\n to {\n transform: translateY(0);\n opacity: 1;\n }\n}\n\n@keyframes expandIn {\n from {\n transform: scale(0.95);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes dialogBounce {\n 0% {\n transform: scale(0.9) translateY(10px);\n opacity: 0;\n }\n 70% {\n transform: scale(1.02) translateY(-5px);\n }\n 100% {\n transform: scale(1) translateY(0);\n opacity: 1;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Reduced Motion Support\n ----------------------------------------------------------------------------- */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n }\n}\n\n/* -----------------------------------------------------------------------------\n Focus Indicators - Accessibility\n ----------------------------------------------------------------------------- */\nbutton:focus-visible,\ninput:focus-visible,\nselect:focus-visible,\ntextarea:focus-visible,\na:focus-visible,\n[tabindex]:focus-visible {\n outline: 2px solid var(--md-primary);\n outline-offset: 2px;\n}\n\n/* -----------------------------------------------------------------------------\n Screen Reader Only\n ----------------------------------------------------------------------------- */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n"] }]
1283
1288
  }], () => [{ type: i1.SharedService }, { type: i0.ChangeDetectorRef }], { onEscapeKey: [{
1284
1289
  type: HostListener,
1285
1290
  args: ['document:keydown.escape']
1286
1291
  }] }); })();
1287
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SqlLoggingComponent, { className: "SqlLoggingComponent", filePath: "src/lib/sql-logging/sql-logging.component.ts", lineNumber: 65 }); })();
1292
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SqlLoggingComponent, { className: "SqlLoggingComponent", filePath: "src/lib/sql-logging/sql-logging.component.ts", lineNumber: 66 }); })();
1288
1293
  //# sourceMappingURL=sql-logging.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql-logging.component.js","sourceRoot":"","sources":["../../../src/lib/sql-logging/sql-logging.component.ts","../../../src/lib/sql-logging/sql-logging.component.html"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-logging.component.js","sourceRoot":"","sources":["../../../src/lib/sql-logging/sql-logging.component.ts","../../../src/lib/sql-logging/sql-logging.component.html"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAa,YAAY,EAAqB,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;;;;;;;;;;ICMjD,kCAKC;IAFC,uLAAS,+BAAwB,KAAC;IAGlC,wBAAmD;IACnD,mCACF;IAAA,iBAAS;;;IANP,wKAA2F;;;;;IAc7F,AAFF,8BAAoC,iBAQjC;IAHC,gOAAgC;IAK9B,AADF,+BAA+B,cACE;IAC7B,wBAAyD;IAC3D,iBAAM;IAEJ,AADF,+BAA+B,aACE;IAAA,0BAAU;IAAA,iBAAK;IAC9C,6BAAiC;IAAA,mDAAmC;IAExE,AADE,AADsE,iBAAI,EACpE,EACF;IACN,yBAA8E;IAChF,iBAAS;IAWL,AADF,AAPF,gCAMC,eACwB,eACmB;IACtC,yBAAwD;IAC1D,iBAAM;IAEJ,AADF,gCAA0B,eAC0E;IAChG,aACF;IAAA,iBAAM;IACN,gCAAwB;IAAA,uBAAM;IAElC,AADE,AADgC,iBAAM,EAChC,EACF;IAGJ,AADF,gCAAuB,eACmB;IACtC,yBAA0D;IAC5D,iBAAM;IAEJ,AADF,gCAA0B,eAC+D;IACrF,aACF;IAAA,iBAAM;IACN,gCAAwB;IAAA,gCAAe;IAE3C,AADE,AADyC,iBAAM,EACzC,EACF;IAGJ,AADF,gCAAuB,eACkB;IACrC,yBAAyD;IAC3D,iBAAM;IAEJ,AADF,gCAA0B,eAC6F;IACnH,aACF;IAAA,iBAAM;IACN,gCAAwB;IAAA,6BAAY;IAExC,AADE,AADsC,iBAAM,EACtC,EACF;IAGJ,AADF,gCAAuB,eACkB;IACrC,yBAAuD;IACzD,iBAAM;IAEJ,AADF,gCAA0B,eACgF;IACtG,aACF;IAAA,iBAAM;IACN,gCAAwB;IAAA,iCAAgB;IAIhD,AADE,AADE,AADE,AAD0C,iBAAM,EAC1C,EACF,EACF,EACF;;;IAzEF,cAA4B;IAA5B,4CAA4B;;IAqB5B,gBAA2B;IAA3B,2CAA2B;IASC,eAAyE;;IAC/F,cACF;IADE,8EACF;IAUwB,eAA8D;;IACpF,cACF;IADE,6DACF;IAUwB,eAA4F;;IAClH,cACF;IADE,0HACF;IAUwB,eAA+E;;IACrG,cACF;IADE,gEACF;;;IAUR,8BAAiF;IAC/E,iCAAmF;IACrF,iBAAM;;;;IAQF,+BAAsC;IACpC,wBAA8D;IAC9D,6BAAsB;IAAA,6BAAa;IAAA,iBAAI;IACvC,6BAAyB;IAAA,2GAA2F;IAAA,iBAAI;IACxH,kCAAgI;IAAlG,sMAAS,+BAAwB,KAAC;IAC9D,wBAAmD;IACnD,qCACF;IACF,AADE,iBAAS,EACL;;;IAGN,+BAAsC;IACpC,wBAAsF;IACtF,6BAAsB;IAAA,oCAAoB;IAAA,iBAAI;IAC9C,6BAAyB;IAAA,uEAAuD;IAAA,iBAAI;IAElF,AADF,+BAAsB,SAChB;IAAA,sCAAsB;IAAA,iBAAK;IAE7B,AADF,0BAAI,UACE;IAAA,qBAAI;IAAA,6BAAM;IAAA,0CAAyB;IAAA,iBAAO;IAAC,kCAAgB;IAAA,iBAAK;IACpE,2BAAI;IAAA,0CAAyB;IAAA,iBAAK;IAClC,2BAAI;IAAA,kCAAiB;IAG3B,AADE,AADE,AADuB,iBAAK,EACvB,EACD,EACF;;;;IAGN,+BAAuC;IACrC,wBAAmE;IACnE,6BAAsB;IAAA,kCAAkB;IAAA,iBAAI;IAC5C,6BAAyB;IAAA,kFAAkE;IAAA,iBAAI;IAC/F,kCAAqI;IAAzG,sMAAS,+BAAwB,KAAC;IAC5D,wBAAmD;IACnD,mCACF;IACF,AADE,iBAAS,EACL;;;;IASE,kCAKC;IAHC,oNAAS,mCAA4B,KAAC;IAItC,wBAAmD;IACnD,0BACF;IAAA,iBAAS;;;IALP,yCAAoB;;;IA6ChB,gCAA+B;IAC7B,wBAAmD;IACnD,+BACF;IAAA,iBAAO;;;IAGP,gCAAoC;IAClC,wBAA0D;IAC1D,2BACF;IAAA,iBAAO;;;;IA5Cb,+BAUC;IAHC,AADA,AAHA,sOAAS,gCAAsB,KAAC,yOAGf,gCAAsB,KAAC,yNACvB,gCAAsB,wBAAE,uBAAuB,KAAC;IAM7D,AADF,AADF,+BAA4B,cACA,aACE;IAAA,YAAyB;IAAA,iBAAK;IAEtD,AADF,+BAA0B,eACA;IACtB,wBAAoD;IACpD,YACF;IAAA,iBAAO;IACP,gCAAwB;IACtB,yBAAuD;IACvD,aACF;IAEJ,AADE,AADE,iBAAO,EACH,EACF;IACN,mCAIC;IAFC,gPAAS,iDAAuC,KAAC;IAGjD,yBAAmD;IAEvD,AADE,iBAAS,EACL;IACN,gCAA4B;IAC1B,2HAA8B;IAM9B,2HAA0C;IAM1C,iCAA+B;IAC7B,aACF;IAEJ,AADE,AADE,iBAAO,EACH,EACF;;;;IAhDJ,iHAAqD;;IAWvB,eAAyB;IAAzB,4CAAyB;IAI/C,eACF;IADE,gFACF;IAGE,eACF;IADE,qEACF;IAMF,cAAyD;;IAM3D,eAKC;IALD,qDAKC;IACD,cAKC;IALD,sGAKC;IAEC,eACF;IADE,kHACF;;;;IAWJ,AADF,+BAA0B,aACA;IAAA,YAAiC;IAAA,iBAAK;IAG1D,AADF,AADF,+BAA2B,gBACK,gBAK1B;IAFA,+UAAyB;IAF3B,iBAIE;IACF,8BACF;IAAA,iBAAQ;IACR,kCAIC;IAFC,qNAAS,6CAA+B,KAAC;IAGzC,wBAA6E;IAC/E,iBAAS;IACT,kCAKC;IAHC,qNAAS,8BAAuB,KAAC;IAIjC,yBAA8H;IAGpI,AADE,AADE,iBAAS,EACL,EACF;IACN,gCAAyB;IACvB,sCAUkB;IACpB,iBAAM;;;IAvCoB,eAAiC;IAAjC,wDAAiC;IAKnD,eAAyB;IAAzB,kDAAyB;IAUC,eAAyB;IAAzB,yCAAyB;IAKrD,cAAmG;;IAG/E,cAAwC;IAAC,AAAzC,wDAAwC,2CAA0C;IAMxG,eAAoB;IAMpB,AADA,AADA,AADA,AADA,AADA,AADA,yCAAoB,kBACH,kBACA,mBACC,kBACD,sBACI,8BACQ;;;IAMjC,+BAAuC;IACrC,wBAAoE;IACpE,6BAAsB;IAAA,gCAAgB;IAAA,iBAAI;IAC1C,6BAAyB;IAAA,mEAAmD;IAC9E,AAD8E,iBAAI,EAC5E;;;IAvHN,AADF,AADF,AAFF,+BAA6B,cAEiD,cAChD,aACA;IAAA,+BAAe;IAAA,iBAAK;IAC5C,qHAAiC;IAWnC,iBAAM;IACN,+BAAyE;IACvE,qHAoDC;IAEL,AADE,iBAAM,EACF;IAGN,+BAA+G;IA2C3G,AA1CF,2GAAuB,8FA0Cd;IAQb,AADE,iBAAM,EACF;;;IAzHA,eAUC;IAVD,2DAUC;IAGD,eAoDC;IApDD,oCAoDC;IAKyB,eAAsC;IAAtC,sDAAsC;IAClE,cAgDC;IAhDD,kDAgDC;;;IApKT,8BAA0B;IAsCtB,AAXA,AAfA,AAXF,oGAAgB,+EAWa,8EAea,+EAWjC;IAkIX,iBAAM;;;IAvKJ,cAsKC;IAtKD,8GAsKC;;;IAqES,kCAA+B;IAAA,YAAiB;IAAA,iBAAS;;;IAAjD,wCAAsB;IAAC,cAAiB;IAAjB,qCAAiB;;;IAyC9C,kCAA+B;IAAA,YAAiB;IAAA,iBAAS;;;IAAjD,wCAAsB;IAAC,cAAiB;IAAjB,qCAAiB;;;;IA6BlD,AADF,+BAAwB,iBACyB;IAAA,mCAAmB;IAAA,iBAAQ;IAC1E,kCAOE;IAHA,kXAAiD;IAJnD,iBAOE;IACF,gCAAgD;IAAA,gFAA0E;IAC5H,AAD4H,iBAAM,EAC5H;;;IALF,eAAiD;IAAjD,0EAAiD;;;IAoBrD,yBAA8D;IAC9D,6BACF;;;IACE,wBAAmD;IACnD,+BACF;;;;IAnKR,+BAMC;IAJC,qNAAkC,KAAK,KAAC;IAKxC,+BAAsH;IAAnC,wJAAS,wBAAwB,KAAC;IAEjH,AADF,+BAA0B,aACgC;IACtD,wBAAmD;IACnD,2CACF;IAAA,iBAAK;IAEH,AADF,+BAAkC,iBAM/B;IAHC,wLAAS,oCAA6B,KAAC;IAIvC,wBAAsI;IACxI,iBAAS;IACT,kCAA+F;IAAnE,wNAAkC,KAAK,KAAC;IAClE,yBAAoD;IAG1D,AADE,AADE,iBAAS,EACL,EACF;IAGF,AADF,AADF,gCAAwB,eACE,iBACuB;IAAA,6BAAY;IAAA,iBAAQ;IACjE,kCAOE;IAHA,uVAA2C;IAJ7C,iBAOE;IACF,gCAA8C;IAAA,oEAAmD;IACnG,AADmG,iBAAM,EACnG;IAGJ,AADF,gCAAwB,iBACoB;IAAA,0BAAS;IAAA,iBAAQ;IAC3D,kCAOE;IAHA,iVAAwC;IAJ1C,iBAOE;IACF,gCAA2C;IAAA,uDAAsC;IACnF,AADmF,iBAAM,EACnF;IAGJ,AADF,gCAAwB,iBAC0B;IAAA,gCAAe;IAAA,iBAAQ;IACvE,mCAKC;IAFC,8VAA8C;IAG9C,0GAEC;IACH,iBAAS;IACT,gCAAiD;IAAA,gEAA+C;IAClG,AADkG,iBAAM,EAClG;IAIF,AADF,AADF,gCAAuE,iBACvC,iBACiD;IAAtD,uWAAmD;IAA1E,iBAA6E;IAC7E,mDACF;IAAA,iBAAQ;IAIN,AADF,kCAA8B,iBAC+C;IAApD,mWAAiD;IAAxE,iBAA2E;IAC3E,2CACF;IAAA,iBAAQ;IAIN,AADF,kCAA8B,iBACyC;IAA9C,uVAA2C;IAAlE,iBAAqE;IACrE,8CACF;IACF,AADE,iBAAQ,EACJ;IAIJ,AADF,iCAA0B,eACO;IAC7B,0BAAqD;IACrD,wCACF;IAAA,iBAAK;IAGH,AADF,gCAAwB,kBACsB;IAAA,4BAAW;IAAA,iBAAQ;IAC/D,oCAKC;IAFC,sVAA0C;IAG1C,0GAEC;IACH,iBAAS;IACT,iCAA6C;IAAA,kGAAiF;IAChI,AADgI,iBAAM,EAChI;IAGJ,AADF,gCAAwB,kBAC0B;IAAA,kEAAiD;IAAA,iBAAQ;IACzG,sCAOC;IAJC,gWAA8C;IAI/C,iBAAW;IACZ,iCAAiD;IAAA,8HAA6G;IAElK,AADE,AADgK,iBAAM,EAChK,EACF;IAIJ,AADF,iCAA0B,eACO;IAC7B,0BAAkD;IAClD,mCACF;IAAA,iBAAK;IAEL,sGAA2C;IAiBvC,AADF,AADF,iCAA6B,iBACG,iBAC2C;IAAhD,2VAA6C;IAApE,iBAAuE;IACvE,uCACF;IAAA,iBAAQ;IACR,iCAAoD;IAAA,iFAAgE;IAG1H,AADE,AADE,AADsH,iBAAM,EACtH,EACF,EACF;IAEJ,AADF,iCAA0B,mBACgG;IAA5F,yLAAS,wBAAiB,KAAC;IAInD,AAHF,2FAAe,qEAGN;IAIX,iBAAS;IACT,oCAA4G;IAA9E,yNAAkC,KAAK,KAAC;IAAsC,uBAAM;IAGxH,AADE,AADE,AADoH,iBAAS,EACvH,EACF,EACF;;;IAjKkC,cAA4C;IAA5C,4DAA4C;IAU1E,eAAoF;;IAGhE,cAA6C;IAAC,AAA9C,6DAA6C,8CAA6C;IAc9G,eAA2C;IAA3C,oEAA2C;IAa3C,eAAwC;IAAxC,iEAAwC;IAYxC,eAA8C;IAA9C,uEAA8C;IAG9C,cAEC;IAFD,0CAEC;IAOsB,eAAmD;IAAnD,4EAAmD;IAMnD,eAAiD;IAAjD,0EAAiD;IAMjD,eAA2C;IAA3C,oEAA2C;IAiBhE,eAA0C;IAA1C,mEAA0C;IAG1C,cAEC;IAFD,uCAEC;IAUD,eAA8C;IAA9C,uEAA8C;IAgBlD,eAaC;IAbD,sEAaC;IAI0B,eAA6C;IAA7C,sEAA6C;IAQlB,eAAoB;IAApB,yCAAoB;IAC1E,cAMC;IAND,0CAMC;;;IAyBC,oCACF;;;IACE,+BACF;;;IAIE,+CAA8B;IAAA,8BAAQ;IAAA,YAAsC;IAAA,iBAAS;IAAC,qEACxF;;;IADwC,eAAsC;IAAtC,sEAAsC;;;IAE5E,2DAA0C;IAAA,8BAAQ;IAAA,YAAiC;IAAA,iBAAS;IAAA,kBAC5F;IAAA,iCAAqC;IAAC,YAA6E;IAAA,iBAAO;;;IADxE,eAAiC;IAAjC,mEAAiC;IAC7C,eAA6E;IAA7E,8GAA6E;;;IAOnH,yBAA8D;IAC9D,6BACF;;;IAGI,mCACF;;;IACE,8BACF;;;IALA,wBAAmD;IAGjD,AAFF,yGAAqB,mFAEZ;;;IAFT,cAIC;IAJD,8CAIC;;;;IAxCX,gCAOC;IALC,sLAAS,0BAAmB,KAAC;IAM7B,gCAA+D;IAAnC,yJAAS,wBAAwB,KAAC;IAC5D,gCAAiC;IAC/B,yBAAmE;IACrE,iBAAM;IAEJ,AADF,gCAAoC,cACsB;IAGpD,AAFF,0FAAqB,oEAEZ;IAGX,iBAAK;IACL,8BAAwD;IAGpD,AAFF,0FAAqB,sEAEO;IAKhC,AADE,iBAAI,EACA;IAEJ,AADF,iCAAoC,mBACsI;IAA7I,0LAAS,2BAAoB,KAAC;IAIrD,AAHF,4FAAe,sEAGN;IAQX,iBAAS;IACT,oCAA+H;IAAjG,0LAAS,0BAAmB,KAAC;IAAoE,uBAAM;IAG3I,AADE,AADE,AADuI,iBAAS,EAC1I,EACF,EACF;;;IAhCE,eAIC;IAJD,8CAIC;IAGD,eAKC;IALD,2EAKC;IAIuD,eAAoB;IAApB,yCAAoB;;IAC5E,cAUC;IAVD,0CAUC;IAEyD,eAAoB;IAApB,yCAAoB;;ADld1F;;;;;;;;;;;;;;;;;;GAkBG;AAQI,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,aAAa;IAyF1C;IACA;IAzFF,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;IAEvC,uEAAuE;IACvE,OAAO,GAAG,KAAK,CAAC;IAEhB,2DAA2D;IAC3D,KAAK,GAAkB,IAAI,CAAC;IAE5B,0EAA0E;IAC1E,OAAO,GAAG,KAAK,CAAC;IAEhB,iEAAiE;IACjE,aAAa,GAAG,KAAK,CAAC;IAEtB,wDAAwD;IACxD,gBAAgB,GAA4B,IAAI,CAAC;IAEjD,oDAAoD;IACpD,cAAc,GAAwB,EAAE,CAAC;IAEzC,kDAAkD;IAClD,eAAe,GAA6B,IAAI,CAAC;IAEjD,+CAA+C;IAC/C,UAAU,GAAG,EAAE,CAAC;IAEhB,oDAAoD;IACpD,WAAW,GAAG,KAAK,CAAC;IAEpB,8DAA8D;IAC9D,eAAe,GAAG,IAAI,CAAC,CAAC,YAAY;IAEpC,4DAA4D;IAC5D,sBAAsB,GAAG,KAAK,CAAC;IAE/B,mDAAmD;IACnD,SAAS,GAAG,KAAK,CAAC;IAElB,8DAA8D;IAC9D,mBAAmB,GAAG,KAAK,CAAC;IAE5B,6DAA6D;IAC7D,uBAAuB,GAAG,KAAK,CAAC;IAEhC,8DAA8D;IAC9D,qBAAqB,GAAG,KAAK,CAAC;IAE9B,yEAAyE;IACzE,aAAa,GAA6B,IAAI,CAAC;IAE/C,wDAAwD;IACxD,aAAa,GAAG,KAAK,CAAC;IAEtB,qDAAqD;IACrD,iBAAiB,GAAG;QAClB,uCAAuC;QACvC,QAAQ,EAAE,EAAE;QACZ,4DAA4D;QAC5D,mBAAmB,EAAE,IAAI;QACzB,iDAAiD;QACjD,iBAAiB,EAAE,KAAK;QACxB,yCAAyC;QACzC,cAAc,EAAE,MAA0C;QAC1D,oDAAoD;QACpD,WAAW,EAAE,IAAI;QACjB,0CAA0C;QAC1C,WAAW,EAAE,EAAE;QACf,2BAA2B;QAC3B,cAAc,EAAE,EAAY,EAAE,sCAAsC;QACpE,UAAU,EAAE,SAAkC;QAC9C,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,MAAM,EAAE,oBAAoB;KAChD,CAAC;IAEF,yDAAyD;IACzD,oBAAoB,GAAG;QACrB,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;QACrD,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE;QAC1C,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE;KAC/C,CAAC;IAEF,+BAA+B;IAC/B,iBAAiB,GAAG;QAClB,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,SAAS,EAAE;QACxD,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,SAAS,EAAE;KACpD,CAAC;IAEF,YACU,aAA4B,EAC5B,GAAsB;QAE9B,KAAK,EAAE,CAAC;QAHA,kBAAa,GAAb,aAAa,CAAe;QAC5B,QAAG,GAAH,GAAG,CAAmB;IAGhC,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAkB;QAC7C,OAAO,aAAa,CAAC;IACvB,CAAC;IAES,aAAa;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAES,KAAK,CAAC,QAAQ;QACtB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAEQ,WAAW;QAClB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACK,gBAAgB;QACtB,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;aAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC;YACH,4CAA4C;YAC5C,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;YAEnC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE;gBAC9C,KAAK,EAAE,WAAW,EAAE,KAAK;gBACzB,IAAI,EAAE,WAAW,EAAE,IAAI;gBACvB,IAAI,EAAE,WAAW,EAAE,IAAI;gBACvB,EAAE,EAAE,WAAW,EAAE,EAAE;aACpB,CAAC,CAAC;YAEH,qCAAqC;YACrC,MAAM,WAAW,GAAG,WAAW,CAAC;YAEhC,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;gBACtE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,KAAK,GAAG,uCAAuC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;gBAE9D,+CAA+C;gBAC/C,IAAI,WAAW,EAAE,CAAC;oBAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACvE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;gBACnJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,4BAA4B,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,2BAA2B;QAC3B,MAAM,WAAW,GAAG,IAAI,QAAQ,EAAE,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,WAAW,GAAG,iBAAiB,WAAW,EAAE,IAAI,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS,MAAM,IAAI,IAAI,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC;QAC9I,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC;QAClG,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;OAgBhB,CAAC;YAEF,MAAM,SAAS,GAAG;gBAChB,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,QAAQ;oBACzC,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;oBAC/D,OAAO,EAAE;wBACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;wBAC3D,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc;wBACrD,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;wBAC/C,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW;wBAC/C,sBAAsB;wBACtB,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;wBAC/E,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU;wBAC7C,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;wBACnD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB;qBAC5D;iBACF;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAElE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,EAAE,eAAe,CAAC;YAE3C,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YAED,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,gCAAgC,UAAU,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAEnI,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,KAAK,CAAC,OAAO,IAAI,qCAAqC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7I,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,kBAAkB,CAAC,OAA0B;QACzD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;OAIhB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAElF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,6BAA6B,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAExG,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC;gBAC5C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACvB,CAAC;YAED,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC,CAAC;YACnG,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,sBAAsB;QAClC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,QAAQ,GAAG;;;;OAIhB,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAE3D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,kCAAkC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAE7G,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yCAAyC,CAAC;YACxG,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;YACjE,qBAAqB,CAAC,QAAQ,CAAC,wBAAwB,CAAC,UAAU,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnG,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,aAAa,CAAC,OAAY;QACxB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAC/B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAC,OAAY;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,KAAK,GAAG;;;;OAIb,CAAC;YAEF,MAAM,SAAS,GAAG;gBAChB,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,QAAQ,EAAE,IAAI,EAAE,2CAA2C;aAC5D,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAE/D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,EAAE,cAAc,IAAI,EAAE,CAAC;YAEhD,mEAAmE;YACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACvF,MAAM,MAAM,GACV,4DAA4D;gBAC5D,oBAAoB,QAAQ,IAAI;gBAChC,eAAe,OAAO,CAAC,WAAW,IAAI;gBACtC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI;gBAC/D,2BAA2B,OAAO,CAAC,cAAc,IAAI;gBACrD,mBAAmB,OAAO,CAAC,cAAc,IAAI,WAAW,IAAI;gBAC5D,uBAAuB,OAAO,CAAC,OAAO,EAAE,cAAc,IAAI,MAAM,IAAI;gBACpE,oBAAoB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;gBACnE,wBAAwB,OAAO,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;gBAC7E,8DAA8D,CAAC;YAEjE,IAAI,CAAC,UAAU,GAAG,MAAM,GAAG,CAAC,UAAU,IAAI,sCAAsC,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU;gBACb,oCAAoC,KAAK,CAAC,OAAO,IAAI,wBAAwB,SAAS;oBACtF,sBAAsB;oBACtB,YAAY,OAAO,CAAC,QAAQ,IAAI;oBAChC,eAAe,OAAO,CAAC,WAAW,IAAI;oBACtC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC;QACpE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;OAmBb,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAExD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,qDAAqD;YACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAEzE,uEAAuE;YACvE,MAAM,UAAU,GAAG,MAAM,EAAE,gBAAgB,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;YAElD,IAAI,CAAC,gBAAgB,GAAG,UAAU,IAAI,IAAI,CAAC;YAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,OAAO,IAAI,KAAK,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAEzB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,IAAI,0CAA0C,CAAC;QAC3E,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;OAgBb,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAExD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,qDAAqD;YACrD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;YAEvD,uEAAuE;YACvE,MAAM,YAAY,GAAG,MAAM,EAAE,wBAAwB,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC;YAEtD,IAAI,CAAC,cAAc,GAAG,YAAY,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YAEzB,6CAA6C;YAC7C,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;gBACzE,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,SAAiB;QAClC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAExD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC;QACjC,CAAC;aAAM,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,OAAO,GAAG,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,sBAAsB;QAC1B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEvC,sCAAsC;YACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAE1D,uBAAuB;YACvB,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACxD,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,QAAgB;QAC1B,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAC;QAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,cAAsB;QAChD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+DAA+D;QAC/D,OAAO,cAAc;aAClB,KAAK,CAAC,OAAO,CAAC;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,2BAA2B;QACzB,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAC/D,CAAC;IAED;;;OAGG;IAEH,WAAW;QACT,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACpC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACnC,CAAC;aAAM,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACxC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACvC,CAAC;aAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,sBAAsB,CAAC,OAA0B,EAAE,KAAa;QAC9D,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,0BAA0B;QACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACtC,CAAC;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YAEpB,MAAM,YAAY,GAAG,QAAQ,CAAC,QAA+B,CAAC;YAC9D,MAAM,KAAK,GAAG;;;;OAIb,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAExD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,EAAE,qBAAqB,IAAI,wBAAwB,CAAC;YAE5E,KAAK,CAAC,yBAAyB,SAAS,oGAAoG,CAAC,CAAC;QAChJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YACzD,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,IAAI,0BAA0B,EAAE,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;6GAzsBU,mBAAmB;6DAAnB,mBAAmB;YAAnB,0GAAA,iBAAa,0BAAM;;YC9D5B,AADF,AAFF,8BAAmC,aAE2C,gBAMzE;YAHC,gGAAS,wBAAoB,IAAC;YAI9B,uBAAgF;YAChF,yBACF;YAAA,iBAAS;YACT,wFAAgC;YAWlC,iBAAM;YAGN,uFAAgC;YAkFhC,qFAAyC;YAOzC,qFAA6C;YA6K7C,uFAA8B;YA6K9B,wFAA6B;YAiD/B,iBAAM;;YAxfA,eAAoB;YAApB,sCAAoB;YAGW,cAAyB;YAAzB,sCAAyB;YAG1D,eAUC;YAVD,2DAUC;YAIH,cA+EC;YA/ED,2DA+EC;YAGD,cAIC;YAJD,oEAIC;YAGD,cA0KC;YA1KD,wEA0KC;YAGD,cA0KC;YA1KD,qDA0KC;YAGD,cAgDC;YAhDD,qDAgDC;;;AD5bU,mBAAmB;IAD/B,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC;GAC9B,mBAAmB,CA0sB/B;;iFA1sBY,mBAAmB;cAP/B,SAAS;6BACI,KAAK,YACP,gBAAgB;;kBAsnBzB,YAAY;mBAAC,yBAAyB;;kFAjnB5B,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"user-app-config.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-app-config/user-app-config.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D;;GAEG;AACH,UAAU,aAAa;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAKa,sBAAsB;IA4B/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IA7BJ,UAAU,UAAS;IAClB,gBAAgB,wBAA+B;IAC/C,WAAW,qBAA4B;IAGjD,OAAO,EAAE,aAAa,EAAE,CAAM;IAG9B,UAAU,EAAE,aAAa,EAAE,CAAM;IAGjC,aAAa,EAAE,aAAa,EAAE,CAAM;IAEpC,SAAS,UAAS;IAClB,QAAQ,UAAS;IACjB,YAAY,SAAM;IAGlB,uBAAuB,UAAS;IAChC,sBAAsB,UAAS;IAG/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,YAAY,SAAM;IAClB,eAAe,SAAM;gBAGX,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAGhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUvE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAOlC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMjC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IA2B9B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOjC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAepC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBnC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;yCA5WjB,sBAAsB;2CAAtB,sBAAsB;CA+WlC"}
1
+ {"version":3,"file":"user-app-config.component.d.ts","sourceRoot":"","sources":["../../../src/lib/user-app-config/user-app-config.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAiB,MAAM,qCAAqC,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;;AAE1D;;GAEG;AACH,UAAU,aAAa;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAMa,sBAAsB;IA4B/B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,GAAG;IA7BJ,UAAU,UAAS;IAClB,gBAAgB,wBAA+B;IAC/C,WAAW,qBAA4B;IAGjD,OAAO,EAAE,aAAa,EAAE,CAAM;IAG9B,UAAU,EAAE,aAAa,EAAE,CAAM;IAGjC,aAAa,EAAE,aAAa,EAAE,CAAM;IAEpC,SAAS,UAAS;IAClB,QAAQ,UAAS;IACjB,YAAY,SAAM;IAGlB,uBAAuB,UAAS;IAChC,sBAAsB,UAAS;IAG/B,WAAW,EAAE,aAAa,GAAG,IAAI,CAAQ;IACzC,YAAY,SAAM;IAClB,eAAe,SAAM;gBAGX,UAAU,EAAE,kBAAkB,EAC9B,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,iBAAiB;IAGhC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUvE;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAOlC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKlD;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMjC;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IA2B9B;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAOjC;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAepC;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAmBnC;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B;;OAEG;YACW,qBAAqB;IAgBnC;;OAEG;YACW,qBAAqB;IAmBnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;yCA5WjB,sBAAsB;2CAAtB,sBAAsB;CA+WlC"}