@memberjunction/ng-core-entity-forms 5.22.0 → 5.23.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 (153) hide show
  1. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +4 -5
  2. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  3. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +55 -59
  4. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js +0 -1
  6. package/dist/lib/custom/AIAgents/agent-advanced-settings-dialog.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +4 -5
  8. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  9. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +54 -71
  10. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
  12. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1053 -1096
  13. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  14. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +2 -3
  15. package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +39 -82
  17. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  18. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +4 -5
  19. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
  20. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +28 -31
  21. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  22. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +4 -5
  23. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  24. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +15 -14
  25. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  26. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +4 -7
  27. package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
  28. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +77 -124
  29. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  30. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +2 -2
  31. package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
  32. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +10 -11
  33. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  34. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +4 -5
  35. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
  36. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +18 -18
  37. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  38. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +4 -5
  39. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  40. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +59 -80
  41. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  42. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +4 -5
  43. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  44. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +23 -24
  45. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  46. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
  47. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +862 -906
  48. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  49. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +4 -5
  50. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  51. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +448 -499
  52. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  53. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +2 -2
  54. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
  55. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +6 -11
  56. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  57. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +4 -5
  58. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  59. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +16 -15
  60. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  61. package/dist/lib/custom/Actions/action-execution-log-form.component.js +160 -166
  62. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  63. package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
  64. package/dist/lib/custom/Actions/action-form.component.js +93 -94
  65. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  66. package/dist/lib/custom/Entities/entity-form.component.js +2 -2
  67. package/dist/lib/custom/Lists/list-form.component.js +61 -63
  68. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  69. package/dist/lib/custom/Queries/query-category-dialog.component.js +33 -59
  70. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  71. package/dist/lib/custom/Queries/query-form.component.js +354 -360
  72. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  73. package/dist/lib/custom/Queries/query-run-dialog.component.js +62 -71
  74. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  75. package/dist/lib/custom/Templates/template-param-dialog.component.js +128 -124
  76. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  77. package/dist/lib/custom/Templates/template-params-grid.component.d.ts +45 -22
  78. package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Templates/template-params-grid.component.js +380 -384
  80. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  81. package/dist/lib/custom/Templates/templates-form.component.js +34 -36
  82. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  83. package/dist/lib/custom/Tests/test-form.component.js +8 -9
  84. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  85. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +4 -4
  86. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  87. package/dist/lib/custom/Tests/test-run-form.component.js +7 -7
  88. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  89. package/dist/lib/custom/Tests/test-suite-form.component.js +6 -7
  90. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  91. package/dist/lib/custom/Tests/test-suite-run-form.component.js +6 -7
  92. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  93. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +381 -409
  94. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  95. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
  96. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +1 -1
  97. package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
  98. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  99. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +74 -63
  100. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  101. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +10 -10
  102. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  103. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  104. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +352 -332
  105. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  106. package/dist/lib/custom/custom-forms.module.d.ts +22 -27
  107. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  108. package/dist/lib/custom/custom-forms.module.js +51 -81
  109. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  110. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +4 -5
  111. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  112. package/dist/lib/custom/shared/entity-selector-dialog.component.js +59 -66
  113. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  114. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.d.ts.map +1 -1
  115. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +176 -156
  116. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  117. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts +10 -0
  118. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.d.ts.map +1 -0
  119. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js +65 -0
  120. package/dist/lib/generated/Entities/MJAIAgentClientTool/mjaiagentclienttool.form.component.js.map +1 -0
  121. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts +10 -0
  122. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.d.ts.map +1 -0
  123. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js +89 -0
  124. package/dist/lib/generated/Entities/MJAIClientToolDefinition/mjaiclienttooldefinition.form.component.js.map +1 -0
  125. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.d.ts.map +1 -1
  126. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +80 -44
  127. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  128. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js +11 -8
  129. package/dist/lib/generated/Entities/MJContentItemTag/mjcontentitemtag.form.component.js.map +1 -1
  130. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.d.ts.map +1 -1
  131. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +39 -24
  132. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +35 -17
  135. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +15 -13
  137. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.d.ts.map +1 -1
  139. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js +7 -9
  140. package/dist/lib/generated/Entities/MJDuplicateRunDetailMatch/mjduplicaterundetailmatch.form.component.js.map +1 -1
  141. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.d.ts.map +1 -1
  142. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +21 -9
  143. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.d.ts.map +1 -1
  145. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +41 -5
  146. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
  147. package/dist/lib/generated/generated-forms.module.d.ts +280 -279
  148. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  149. package/dist/lib/generated/generated-forms.module.js +102 -142
  150. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  151. package/dist/lib/shared/components/template-editor.component.js +14 -15
  152. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  153. package/package.json +34 -41
@@ -3,49 +3,46 @@ import { Metadata, RunView } from '@memberjunction/core';
3
3
  import { MJNotificationService } from '@memberjunction/ng-notifications';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
- import * as i2 from "@progress/kendo-angular-layout";
7
- import * as i3 from "@progress/kendo-angular-dialog";
8
- import * as i4 from "@progress/kendo-angular-inputs";
9
- import * as i5 from "@progress/kendo-angular-buttons";
10
- function TemplateParamDialogComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
6
+ import * as i2 from "@memberjunction/ng-ui-components";
7
+ function TemplateParamDialogComponent_Conditional_0_Conditional_14_Template(rf, ctx) { if (rf & 1) {
11
8
  i0.ɵɵelementStart(0, "div", 7);
12
9
  i0.ɵɵelement(1, "i", 14);
13
10
  i0.ɵɵelementStart(2, "span");
14
11
  i0.ɵɵtext(3, "Loading template parameters...");
15
12
  i0.ɵɵelementEnd()();
16
13
  } }
17
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
14
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Conditional_3_Template(rf, ctx) { if (rf & 1) {
18
15
  i0.ɵɵelementStart(0, "span", 29);
19
16
  i0.ɵɵtext(1);
20
17
  i0.ɵɵelementEnd();
21
18
  } if (rf & 2) {
22
19
  const ctx_r1 = i0.ɵɵnextContext(4);
23
20
  i0.ɵɵadvance();
24
- i0.ɵɵtextInterpolate1(" ", ctx_r1.parameters.length, " ");
21
+ i0.ɵɵtextInterpolate(ctx_r1.parameters.length);
25
22
  } }
26
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_1_Template(rf, ctx) { if (rf & 1) {
23
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Template(rf, ctx) { if (rf & 1) {
27
24
  i0.ɵɵelementStart(0, "span", 28);
28
25
  i0.ɵɵelement(1, "i", 5);
29
26
  i0.ɵɵtext(2, " Template Parameters ");
30
- i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_1_Conditional_3_Template, 2, 1, "span", 29);
27
+ i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Conditional_3_Template, 2, 1, "span", 29);
31
28
  i0.ɵɵelementEnd();
32
29
  } if (rf & 2) {
33
30
  const ctx_r1 = i0.ɵɵnextContext(3);
34
31
  i0.ɵɵadvance(3);
35
32
  i0.ɵɵconditional(ctx_r1.parameters.length > 0 ? 3 : -1);
36
33
  } }
37
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
34
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
38
35
  i0.ɵɵelement(0, "i", 37);
39
36
  } }
40
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
37
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_4_Template(rf, ctx) { if (rf & 1) {
41
38
  i0.ɵɵelement(0, "i", 38);
42
39
  } }
43
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
40
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
44
41
  i0.ɵɵelementStart(0, "span", 39);
45
42
  i0.ɵɵtext(1, "*");
46
43
  i0.ɵɵelementEnd();
47
44
  } }
48
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
45
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
49
46
  i0.ɵɵelementStart(0, "div", 46);
50
47
  i0.ɵɵtext(1);
51
48
  i0.ɵɵelementEnd();
@@ -54,7 +51,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
54
51
  i0.ɵɵadvance();
55
52
  i0.ɵɵtextInterpolate1(" ", param_r6.description, " ");
56
53
  } }
57
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
54
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
58
55
  i0.ɵɵelementStart(0, "div", 47);
59
56
  i0.ɵɵtext(1);
60
57
  i0.ɵɵelementEnd();
@@ -63,12 +60,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
63
60
  i0.ɵɵadvance();
64
61
  i0.ɵɵtextInterpolate1(" Type: ", param_r6.type, " ");
65
62
  } }
66
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
63
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
67
64
  i0.ɵɵelementStart(0, "div", 45);
68
65
  i0.ɵɵtext(1);
69
66
  i0.ɵɵelementEnd();
70
- i0.ɵɵconditionalCreate(2, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Conditional_2_Template, 2, 1, "div", 46);
71
- i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Conditional_3_Template, 2, 1, "div", 47);
67
+ i0.ɵɵconditionalCreate(2, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_2_Template, 2, 1, "div", 46);
68
+ i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Conditional_3_Template, 2, 1, "div", 47);
72
69
  } if (rf & 2) {
73
70
  const param_r6 = i0.ɵɵnextContext().$implicit;
74
71
  i0.ɵɵadvance();
@@ -78,11 +75,11 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
78
75
  i0.ɵɵadvance();
79
76
  i0.ɵɵconditional(param_r6.type && param_r6.type !== "Scalar" ? 3 : -1);
80
77
  } }
81
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
78
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
82
79
  const _r7 = i0.ɵɵgetCurrentView();
83
- i0.ɵɵelementStart(0, "kendo-textbox", 48);
84
- i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_7_Template_kendo_textbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const param_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r6.key, $event) || (param_r6.key = $event); return i0.ɵɵresetView($event); });
85
- i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_7_Template_kendo_textbox_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
80
+ i0.ɵɵelementStart(0, "input", 48);
81
+ i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r7); const param_r6 = i0.ɵɵnextContext().$implicit; i0.ɵɵtwoWayBindingSet(param_r6.key, $event) || (param_r6.key = $event); return i0.ɵɵresetView($event); });
82
+ i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
86
83
  i0.ɵɵelementEnd();
87
84
  } if (rf & 2) {
88
85
  const param_r6 = i0.ɵɵnextContext().$implicit;
@@ -90,30 +87,30 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
90
87
  i0.ɵɵtwoWayProperty("ngModel", param_r6.key);
91
88
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
92
89
  } }
93
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
90
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
94
91
  const _r8 = i0.ɵɵgetCurrentView();
95
92
  i0.ɵɵelementStart(0, "button", 49);
96
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ɵ$index_65_r9 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.removeParameter(ɵ$index_65_r9)); });
93
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ɵ$index_68_r9 = i0.ɵɵnextContext().$index; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.removeParameter(ɵ$index_68_r9)); });
97
94
  i0.ɵɵelement(1, "i", 50);
98
95
  i0.ɵɵelementEnd();
99
96
  } if (rf & 2) {
100
97
  const ctx_r1 = i0.ɵɵnextContext(5);
101
98
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
102
99
  } }
103
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Template(rf, ctx) { if (rf & 1) {
100
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template(rf, ctx) { if (rf & 1) {
104
101
  const _r5 = i0.ɵɵgetCurrentView();
105
102
  i0.ɵɵelementStart(0, "div", 31)(1, "div", 35)(2, "div", 36);
106
- i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_3_Template, 1, 0, "i", 37)(4, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_4_Template, 1, 0, "i", 38);
107
- i0.ɵɵconditionalCreate(5, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_5_Template, 2, 0, "span", 39);
103
+ i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_3_Template, 1, 0, "i", 37)(4, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_4_Template, 1, 0, "i", 38);
104
+ i0.ɵɵconditionalCreate(5, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_5_Template, 2, 0, "span", 39);
108
105
  i0.ɵɵelementEnd();
109
- i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_6_Template, 4, 3)(7, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_7_Template, 1, 2, "kendo-textbox", 40);
106
+ i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_6_Template, 4, 3)(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_7_Template, 1, 2, "input", 40);
110
107
  i0.ɵɵelementEnd();
111
- i0.ɵɵelementStart(8, "div", 41)(9, "kendo-textarea", 42);
112
- i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Template_kendo_textarea_ngModelChange_9_listener($event) { const param_r6 = i0.ɵɵrestoreView(_r5).$implicit; i0.ɵɵtwoWayBindingSet(param_r6.value, $event) || (param_r6.value = $event); return i0.ɵɵresetView($event); });
113
- i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Template_kendo_textarea_ngModelChange_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
108
+ i0.ɵɵelementStart(8, "div", 41)(9, "textarea", 42);
109
+ i0.ɵɵtwoWayListener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template_textarea_ngModelChange_9_listener($event) { const param_r6 = i0.ɵɵrestoreView(_r5).$implicit; i0.ɵɵtwoWayBindingSet(param_r6.value, $event) || (param_r6.value = $event); return i0.ɵɵresetView($event); });
110
+ i0.ɵɵlistener("ngModelChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template_textarea_ngModelChange_9_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange()); });
114
111
  i0.ɵɵelementEnd()();
115
112
  i0.ɵɵelementStart(10, "div", 43);
116
- i0.ɵɵconditionalCreate(11, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Conditional_11_Template, 2, 1, "button", 44);
113
+ i0.ɵɵconditionalCreate(11, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Conditional_11_Template, 2, 1, "button", 44);
117
114
  i0.ɵɵelementEnd()();
118
115
  } if (rf & 2) {
119
116
  const param_r6 = ctx.$implicit;
@@ -130,7 +127,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
130
127
  i0.ɵɵadvance(2);
131
128
  i0.ɵɵconditional(!param_r6.isFromTemplate && ctx_r1.parameters.length > 1 ? 11 : -1);
132
129
  } }
133
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
130
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
134
131
  const _r4 = i0.ɵɵgetCurrentView();
135
132
  i0.ɵɵelementStart(0, "div", 20)(1, "div", 30)(2, "div");
136
133
  i0.ɵɵtext(3, "Parameter Name");
@@ -141,9 +138,9 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
141
138
  i0.ɵɵelementStart(6, "div");
142
139
  i0.ɵɵtext(7, "Actions");
143
140
  i0.ɵɵelementEnd()();
144
- i0.ɵɵrepeaterCreate(8, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_For_9_Template, 12, 7, "div", 31, i0.ɵɵrepeaterTrackByIndex);
141
+ i0.ɵɵrepeaterCreate(8, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_For_9_Template, 12, 7, "div", 31, i0.ɵɵrepeaterTrackByIndex);
145
142
  i0.ɵɵelementStart(10, "div", 32)(11, "button", 33);
146
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
143
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
147
144
  i0.ɵɵelement(12, "i", 34);
148
145
  i0.ɵɵtext(13, " Add Parameter ");
149
146
  i0.ɵɵelementEnd()()();
@@ -154,7 +151,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6
154
151
  i0.ɵɵadvance(3);
155
152
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
156
153
  } }
157
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
154
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template(rf, ctx) { if (rf & 1) {
158
155
  const _r10 = i0.ɵɵgetCurrentView();
159
156
  i0.ɵɵelementStart(0, "div", 21);
160
157
  i0.ɵɵelement(1, "i", 19);
@@ -162,7 +159,7 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7
162
159
  i0.ɵɵtext(3, "No parameters defined yet");
163
160
  i0.ɵɵelementEnd();
164
161
  i0.ɵɵelementStart(4, "button", 51);
165
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
162
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.addParameter()); });
166
163
  i0.ɵɵelement(5, "i", 34);
167
164
  i0.ɵɵtext(6, " Add First Parameter ");
168
165
  i0.ɵɵelementEnd()();
@@ -171,51 +168,53 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7
171
168
  i0.ɵɵadvance(4);
172
169
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
173
170
  } }
174
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_9_Template(rf, ctx) { if (rf & 1) {
171
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_9_Template(rf, ctx) { if (rf & 1) {
175
172
  i0.ɵɵelementStart(0, "span", 28);
176
173
  i0.ɵɵelement(1, "i", 52);
177
174
  i0.ɵɵtext(2, " Context Data (JSON) ");
178
175
  i0.ɵɵelementEnd();
179
176
  } }
180
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
177
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_0_Template(rf, ctx) { if (rf & 1) {
181
178
  i0.ɵɵelementStart(0, "span", 54);
182
- i0.ɵɵtext(1, "Success");
179
+ i0.ɵɵelement(1, "i", 56);
180
+ i0.ɵɵtext(2, " Success");
183
181
  i0.ɵɵelementEnd();
184
182
  } }
185
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
183
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_1_Template(rf, ctx) { if (rf & 1) {
186
184
  i0.ɵɵelementStart(0, "span", 55);
187
- i0.ɵɵtext(1, "Error");
185
+ i0.ɵɵelement(1, "i", 50);
186
+ i0.ɵɵtext(2, " Failed");
188
187
  i0.ɵɵelementEnd();
189
188
  } }
190
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
191
- i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Conditional_0_Template, 2, 0, "span", 54)(1, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Conditional_1_Template, 2, 0, "span", 55);
189
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_0_Template, 3, 0, "span", 54)(1, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Conditional_1_Template, 3, 0, "span", 55);
192
191
  } if (rf & 2) {
193
192
  const ctx_r1 = i0.ɵɵnextContext(4);
194
193
  i0.ɵɵconditional(ctx_r1.testResult.success ? 0 : 1);
195
194
  } }
196
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Template(rf, ctx) { if (rf & 1) {
195
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Template(rf, ctx) { if (rf & 1) {
197
196
  i0.ɵɵelementStart(0, "span", 28);
198
197
  i0.ɵɵelement(1, "i", 53);
199
198
  i0.ɵɵtext(2, " Test Results ");
200
- i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Conditional_3_Template, 2, 1);
199
+ i0.ɵɵconditionalCreate(3, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Conditional_3_Template, 2, 1);
201
200
  i0.ɵɵelementEnd();
202
201
  } if (rf & 2) {
203
202
  const ctx_r1 = i0.ɵɵnextContext(3);
204
203
  i0.ɵɵadvance(3);
205
204
  i0.ɵɵconditional(ctx_r1.testResult ? 3 : -1);
206
205
  } }
207
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_17_Template(rf, ctx) { if (rf & 1) {
206
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_17_Template(rf, ctx) { if (rf & 1) {
208
207
  i0.ɵɵelementStart(0, "div", 25);
209
208
  i0.ɵɵelement(1, "i", 14);
210
209
  i0.ɵɵelementStart(2, "span");
211
210
  i0.ɵɵtext(3, "Running template...");
212
211
  i0.ɵɵelementEnd()();
213
212
  } }
214
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 57)(1, "div", 58);
213
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_7_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵelementStart(0, "div", 58)(1, "div", 59);
216
215
  i0.ɵɵtext(2, "EXECUTION TIME");
217
216
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(3, "div", 59);
217
+ i0.ɵɵelementStart(3, "div", 60);
219
218
  i0.ɵɵtext(4);
220
219
  i0.ɵɵelementEnd()();
221
220
  } if (rf & 2) {
@@ -223,12 +222,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
223
222
  i0.ɵɵadvance(4);
224
223
  i0.ɵɵtextInterpolate1("", ctx_r1.testResult.executionTimeMs, "ms");
225
224
  } }
226
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 62)(1, "h6", 63);
228
- i0.ɵɵelement(2, "i", 64);
225
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_14_Template(rf, ctx) { if (rf & 1) {
226
+ i0.ɵɵelementStart(0, "div", 63)(1, "h6", 64);
227
+ i0.ɵɵelement(2, "i", 65);
229
228
  i0.ɵɵtext(3, " Template Output ");
230
229
  i0.ɵɵelementEnd();
231
- i0.ɵɵelementStart(4, "div", 65);
230
+ i0.ɵɵelementStart(4, "div", 66);
232
231
  i0.ɵɵtext(5);
233
232
  i0.ɵɵelementEnd()();
234
233
  } if (rf & 2) {
@@ -236,12 +235,12 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
236
235
  i0.ɵɵadvance(5);
237
236
  i0.ɵɵtextInterpolate1(" ", ctx_r1.testResult.output, " ");
238
237
  } }
239
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_15_Template(rf, ctx) { if (rf & 1) {
240
- i0.ɵɵelementStart(0, "div", 62)(1, "h6", 63);
241
- i0.ɵɵelement(2, "i", 66);
238
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_15_Template(rf, ctx) { if (rf & 1) {
239
+ i0.ɵɵelementStart(0, "div", 63)(1, "h6", 64);
240
+ i0.ɵɵelement(2, "i", 67);
242
241
  i0.ɵɵtext(3, " Error Details ");
243
242
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(4, "div", 67);
243
+ i0.ɵɵelementStart(4, "div", 68);
245
244
  i0.ɵɵtext(5);
246
245
  i0.ɵɵelementEnd()();
247
246
  } if (rf & 2) {
@@ -249,24 +248,24 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
249
248
  i0.ɵɵadvance(5);
250
249
  i0.ɵɵtextInterpolate(ctx_r1.testResult.error);
251
250
  } }
252
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Template(rf, ctx) { if (rf & 1) {
251
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template(rf, ctx) { if (rf & 1) {
253
252
  const _r11 = i0.ɵɵgetCurrentView();
254
- i0.ɵɵelementStart(0, "div", 26)(1, "div", 56)(2, "div", 57)(3, "div", 58);
253
+ i0.ɵɵelementStart(0, "div", 26)(1, "div", 57)(2, "div", 58)(3, "div", 59);
255
254
  i0.ɵɵtext(4, "STATUS");
256
255
  i0.ɵɵelementEnd();
257
- i0.ɵɵelementStart(5, "div", 59);
256
+ i0.ɵɵelementStart(5, "div", 60);
258
257
  i0.ɵɵtext(6);
259
258
  i0.ɵɵelementEnd()();
260
- i0.ɵɵconditionalCreate(7, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_7_Template, 5, 1, "div", 57);
261
- i0.ɵɵelementStart(8, "div", 57)(9, "div", 58);
259
+ i0.ɵɵconditionalCreate(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_7_Template, 5, 1, "div", 58);
260
+ i0.ɵɵelementStart(8, "div", 58)(9, "div", 59);
262
261
  i0.ɵɵtext(10, "ACTIONS");
263
262
  i0.ɵɵelementEnd();
264
- i0.ɵɵelementStart(11, "button", 60);
265
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.saveResults()); });
266
- i0.ɵɵelement(12, "i", 61);
263
+ i0.ɵɵelementStart(11, "button", 61);
264
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.saveResults()); });
265
+ i0.ɵɵelement(12, "i", 62);
267
266
  i0.ɵɵelementEnd()()();
268
267
  i0.ɵɵelementStart(13, "div", 26);
269
- i0.ɵɵconditionalCreate(14, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_14_Template, 6, 1, "div", 62)(15, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Conditional_15_Template, 6, 1, "div", 62);
268
+ i0.ɵɵconditionalCreate(14, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_14_Template, 6, 1, "div", 63)(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Conditional_15_Template, 6, 1, "div", 63);
270
269
  i0.ɵɵelementEnd()();
271
270
  } if (rf & 2) {
272
271
  const ctx_r1 = i0.ɵɵnextContext(3);
@@ -279,120 +278,125 @@ function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_1
279
278
  i0.ɵɵadvance(7);
280
279
  i0.ɵɵconditional(ctx_r1.testResult.success && ctx_r1.testResult.output ? 14 : !ctx_r1.testResult.success && ctx_r1.testResult.error ? 15 : -1);
281
280
  } }
282
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_19_Template(rf, ctx) { if (rf & 1) {
283
- i0.ɵɵelementStart(0, "div", 27)(1, "div", 68);
284
- i0.ɵɵelement(2, "i", 69);
281
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_19_Template(rf, ctx) { if (rf & 1) {
282
+ i0.ɵɵelementStart(0, "div", 27)(1, "div", 69);
283
+ i0.ɵɵelement(2, "i", 70);
285
284
  i0.ɵɵelementStart(3, "p");
286
285
  i0.ɵɵtext(4, "No test results yet. Run the template to see results here.");
287
286
  i0.ɵɵelementEnd()()();
288
287
  } }
289
- function TemplateParamDialogComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
288
+ function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
290
289
  const _r3 = i0.ɵɵgetCurrentView();
291
- i0.ɵɵelementStart(0, "kendo-expansionpanel", 15);
292
- i0.ɵɵtwoWayListener("expandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Template_kendo_expansionpanel_expandedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.parametersExpanded, $event) || (ctx_r1.parametersExpanded = $event); return i0.ɵɵresetView($event); });
293
- i0.ɵɵtemplate(1, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_1_Template, 4, 1, "ng-template", 16);
290
+ i0.ɵɵelementStart(0, "mj-accordion-panel", 15);
291
+ i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.parametersExpanded, $event) || (ctx_r1.parametersExpanded = $event); return i0.ɵɵresetView($event); });
292
+ i0.ɵɵtemplate(1, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_1_Template, 4, 1, "ng-template", 16);
294
293
  i0.ɵɵelementStart(2, "div", 17)(3, "div", 18);
295
294
  i0.ɵɵelement(4, "i", 19);
296
295
  i0.ɵɵtext(5, " Configure parameter values for template testing. Values can be JSON objects, strings, or numbers. ");
297
296
  i0.ɵɵelementEnd();
298
- i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_6_Template, 14, 1, "div", 20)(7, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_7_Template, 7, 1, "div", 21);
297
+ i0.ɵɵconditionalCreate(6, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_6_Template, 14, 1, "div", 20)(7, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_7_Template, 7, 1, "div", 21);
299
298
  i0.ɵɵelementEnd()();
300
- i0.ɵɵelementStart(8, "kendo-expansionpanel", 15);
301
- i0.ɵɵtwoWayListener("expandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Template_kendo_expansionpanel_expandedChange_8_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.jsonPreviewExpanded, $event) || (ctx_r1.jsonPreviewExpanded = $event); return i0.ɵɵresetView($event); });
302
- i0.ɵɵtemplate(9, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_9_Template, 3, 0, "ng-template", 16);
299
+ i0.ɵɵelementStart(8, "mj-accordion-panel", 15);
300
+ i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_8_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.jsonPreviewExpanded, $event) || (ctx_r1.jsonPreviewExpanded = $event); return i0.ɵɵresetView($event); });
301
+ i0.ɵɵtemplate(9, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_9_Template, 3, 0, "ng-template", 16);
303
302
  i0.ɵɵelementStart(10, "div", 17)(11, "div", 22)(12, "pre");
304
303
  i0.ɵɵtext(13);
305
304
  i0.ɵɵelementEnd()()()();
306
- i0.ɵɵelementStart(14, "kendo-expansionpanel", 23);
307
- i0.ɵɵtwoWayListener("expandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_13_Template_kendo_expansionpanel_expandedChange_14_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.resultsExpanded, $event) || (ctx_r1.resultsExpanded = $event); return i0.ɵɵresetView($event); });
308
- i0.ɵɵtemplate(15, TemplateParamDialogComponent_Conditional_0_Conditional_13_ng_template_15_Template, 4, 1, "ng-template", 16);
305
+ i0.ɵɵelementStart(14, "mj-accordion-panel", 23);
306
+ i0.ɵɵtwoWayListener("ExpandedChange", function TemplateParamDialogComponent_Conditional_0_Conditional_15_Template_mj_accordion_panel_ExpandedChange_14_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.resultsExpanded, $event) || (ctx_r1.resultsExpanded = $event); return i0.ɵɵresetView($event); });
307
+ i0.ɵɵtemplate(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_ng_template_15_Template, 4, 1, "ng-template", 16);
309
308
  i0.ɵɵelementStart(16, "div", 24);
310
- i0.ɵɵconditionalCreate(17, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_17_Template, 4, 0, "div", 25)(18, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_18_Template, 16, 7, "div", 26)(19, TemplateParamDialogComponent_Conditional_0_Conditional_13_Conditional_19_Template, 5, 0, "div", 27);
309
+ i0.ɵɵconditionalCreate(17, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_17_Template, 4, 0, "div", 25)(18, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_18_Template, 16, 7, "div", 26)(19, TemplateParamDialogComponent_Conditional_0_Conditional_15_Conditional_19_Template, 5, 0, "div", 27);
311
310
  i0.ɵɵelementEnd()();
312
311
  } if (rf & 2) {
313
312
  const ctx_r1 = i0.ɵɵnextContext(2);
314
- i0.ɵɵtwoWayProperty("expanded", ctx_r1.parametersExpanded);
313
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.parametersExpanded);
315
314
  i0.ɵɵadvance(6);
316
315
  i0.ɵɵconditional(ctx_r1.parameters.length > 0 ? 6 : 7);
317
316
  i0.ɵɵadvance(2);
318
- i0.ɵɵtwoWayProperty("expanded", ctx_r1.jsonPreviewExpanded);
317
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.jsonPreviewExpanded);
319
318
  i0.ɵɵadvance(5);
320
319
  i0.ɵɵtextInterpolate(ctx_r1.parametersAsJson);
321
320
  i0.ɵɵadvance();
322
- i0.ɵɵtwoWayProperty("expanded", ctx_r1.resultsExpanded);
321
+ i0.ɵɵtwoWayProperty("Expanded", ctx_r1.resultsExpanded);
323
322
  i0.ɵɵadvance(3);
324
323
  i0.ɵɵconditional(ctx_r1.isRunning ? 17 : ctx_r1.testResult ? 18 : 19);
325
324
  } }
326
- function TemplateParamDialogComponent_Conditional_0_Conditional_17_Template(rf, ctx) { if (rf & 1) {
325
+ function TemplateParamDialogComponent_Conditional_0_Conditional_19_Template(rf, ctx) { if (rf & 1) {
327
326
  const _r12 = i0.ɵɵgetCurrentView();
328
- i0.ɵɵelementStart(0, "button", 70);
329
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_17_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updateTemplateParams()); });
330
- i0.ɵɵelement(1, "i", 71);
327
+ i0.ɵɵelementStart(0, "button", 71);
328
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_19_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.updateTemplateParams()); });
329
+ i0.ɵɵelement(1, "i", 72);
331
330
  i0.ɵɵtext(2, " Update Template Params ");
332
331
  i0.ɵɵelementEnd();
333
332
  } if (rf & 2) {
334
333
  const ctx_r1 = i0.ɵɵnextContext(2);
335
334
  i0.ɵɵproperty("disabled", ctx_r1.isRunning);
336
335
  } }
337
- function TemplateParamDialogComponent_Conditional_0_Conditional_21_Template(rf, ctx) { if (rf & 1) {
336
+ function TemplateParamDialogComponent_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
338
337
  const _r13 = i0.ɵɵgetCurrentView();
339
- i0.ɵɵelementStart(0, "button", 72);
340
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_21_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveResults()); });
341
- i0.ɵɵelement(1, "i", 61);
338
+ i0.ɵɵelementStart(0, "button", 11);
339
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Conditional_23_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveResults()); });
340
+ i0.ɵɵelement(1, "i", 62);
342
341
  i0.ɵɵtext(2, " Save Results ");
343
342
  i0.ɵɵelementEnd();
344
343
  } }
345
- function TemplateParamDialogComponent_Conditional_0_Conditional_23_Template(rf, ctx) { if (rf & 1) {
344
+ function TemplateParamDialogComponent_Conditional_0_Conditional_25_Template(rf, ctx) { if (rf & 1) {
346
345
  i0.ɵɵelement(0, "i", 14);
347
346
  i0.ɵɵtext(1, " Running... ");
348
347
  } }
349
- function TemplateParamDialogComponent_Conditional_0_Conditional_24_Template(rf, ctx) { if (rf & 1) {
348
+ function TemplateParamDialogComponent_Conditional_0_Conditional_26_Template(rf, ctx) { if (rf & 1) {
350
349
  i0.ɵɵelement(0, "i", 73);
351
350
  i0.ɵɵtext(1, " Run Template ");
352
351
  } }
353
352
  function TemplateParamDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
354
353
  const _r1 = i0.ɵɵgetCurrentView();
355
- i0.ɵɵelementStart(0, "kendo-dialog", 1);
356
- i0.ɵɵlistener("close", function TemplateParamDialogComponent_Conditional_0_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
357
- i0.ɵɵelementStart(1, "div", 2)(2, "div", 3)(3, "div", 4);
358
- i0.ɵɵelement(4, "i", 5);
359
- i0.ɵɵelementStart(5, "h5");
360
- i0.ɵɵtext(6, "Template Testing");
354
+ i0.ɵɵelementStart(0, "mj-dialog", 1);
355
+ i0.ɵɵlistener("Close", function TemplateParamDialogComponent_Conditional_0_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
356
+ i0.ɵɵelementStart(1, "mj-dialog-titlebar");
357
+ i0.ɵɵtext(2);
358
+ i0.ɵɵelementEnd();
359
+ i0.ɵɵelementStart(3, "div", 2)(4, "div", 3)(5, "div", 4);
360
+ i0.ɵɵelement(6, "i", 5);
361
+ i0.ɵɵelementStart(7, "h5");
362
+ i0.ɵɵtext(8, "Template Testing");
361
363
  i0.ɵɵelementEnd()();
362
- i0.ɵɵelementStart(7, "p");
363
- i0.ɵɵtext(8, " Configure parameter values for testing. Parameters with ");
364
- i0.ɵɵelementStart(9, "span", 6);
365
- i0.ɵɵtext(10, "*");
364
+ i0.ɵɵelementStart(9, "p");
365
+ i0.ɵɵtext(10, " Configure parameter values for testing. Parameters with ");
366
+ i0.ɵɵelementStart(11, "span", 6);
367
+ i0.ɵɵtext(12, "*");
366
368
  i0.ɵɵelementEnd();
367
- i0.ɵɵtext(11, " are required. ");
369
+ i0.ɵɵtext(13, " are required. ");
368
370
  i0.ɵɵelementEnd()();
369
- i0.ɵɵconditionalCreate(12, TemplateParamDialogComponent_Conditional_0_Conditional_12_Template, 4, 0, "div", 7)(13, TemplateParamDialogComponent_Conditional_0_Conditional_13_Template, 20, 6);
371
+ i0.ɵɵconditionalCreate(14, TemplateParamDialogComponent_Conditional_0_Conditional_14_Template, 4, 0, "div", 7)(15, TemplateParamDialogComponent_Conditional_0_Conditional_15_Template, 20, 6);
370
372
  i0.ɵɵelementEnd();
371
- i0.ɵɵelementStart(14, "kendo-dialog-actions")(15, "div", 8)(16, "div");
372
- i0.ɵɵconditionalCreate(17, TemplateParamDialogComponent_Conditional_0_Conditional_17_Template, 3, 1, "button", 9);
373
+ i0.ɵɵelementStart(16, "mj-dialog-actions")(17, "div", 8)(18, "div");
374
+ i0.ɵɵconditionalCreate(19, TemplateParamDialogComponent_Conditional_0_Conditional_19_Template, 3, 1, "button", 9);
373
375
  i0.ɵɵelementEnd();
374
- i0.ɵɵelementStart(18, "div", 10)(19, "button", 11);
375
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_19_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
376
- i0.ɵɵtext(20, " Close ");
376
+ i0.ɵɵelementStart(20, "div", 10)(21, "button", 11);
377
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_21_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.close()); });
378
+ i0.ɵɵtext(22, " Close ");
377
379
  i0.ɵɵelementEnd();
378
- i0.ɵɵconditionalCreate(21, TemplateParamDialogComponent_Conditional_0_Conditional_21_Template, 3, 0, "button", 12);
379
- i0.ɵɵelementStart(22, "button", 13);
380
- i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_22_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.runTemplate()); });
381
- i0.ɵɵconditionalCreate(23, TemplateParamDialogComponent_Conditional_0_Conditional_23_Template, 2, 0)(24, TemplateParamDialogComponent_Conditional_0_Conditional_24_Template, 2, 0);
380
+ i0.ɵɵconditionalCreate(23, TemplateParamDialogComponent_Conditional_0_Conditional_23_Template, 3, 0, "button", 12);
381
+ i0.ɵɵelementStart(24, "button", 13);
382
+ i0.ɵɵlistener("click", function TemplateParamDialogComponent_Conditional_0_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.runTemplate()); });
383
+ i0.ɵɵconditionalCreate(25, TemplateParamDialogComponent_Conditional_0_Conditional_25_Template, 2, 0)(26, TemplateParamDialogComponent_Conditional_0_Conditional_26_Template, 2, 0);
382
384
  i0.ɵɵelementEnd()()()()();
383
385
  } if (rf & 2) {
384
386
  const ctx_r1 = i0.ɵɵnextContext();
385
- i0.ɵɵproperty("minWidth", 600)("width", 800)("height", 700)("title", "Test Template: " + ((ctx_r1.template == null ? null : ctx_r1.template.Name) || "Unknown"));
387
+ i0.ɵɵproperty("Visible", true)("Width", 800);
388
+ i0.ɵɵadvance(2);
389
+ i0.ɵɵtextInterpolate1("Test Template: ", (ctx_r1.template == null ? null : ctx_r1.template.Name) || "Unknown");
386
390
  i0.ɵɵadvance(12);
387
- i0.ɵɵconditional(ctx_r1.isLoading ? 12 : 13);
391
+ i0.ɵɵconditional(ctx_r1.isLoading ? 14 : 15);
388
392
  i0.ɵɵadvance(5);
389
- i0.ɵɵconditional(ctx_r1.hasUnsavedParameters ? 17 : -1);
393
+ i0.ɵɵconditional(ctx_r1.hasUnsavedParameters ? 19 : -1);
390
394
  i0.ɵɵadvance(4);
391
- i0.ɵɵconditional(ctx_r1.testResult ? 21 : -1);
395
+ i0.ɵɵconditional(ctx_r1.testResult ? 23 : -1);
392
396
  i0.ɵɵadvance();
393
397
  i0.ɵɵproperty("disabled", ctx_r1.isRunning || ctx_r1.isLoading);
394
398
  i0.ɵɵadvance();
395
- i0.ɵɵconditional(ctx_r1.isRunning ? 23 : 24);
399
+ i0.ɵɵconditional(ctx_r1.isRunning ? 25 : 26);
396
400
  } }
397
401
  export class TemplateParamDialogComponent {
398
402
  constructor() {
@@ -644,15 +648,15 @@ export class TemplateParamDialogComponent {
644
648
  return JSON.stringify(contextData, null, 2);
645
649
  }
646
650
  static { this.ɵfac = function TemplateParamDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || TemplateParamDialogComponent)(); }; }
647
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateParamDialogComponent, selectors: [["mj-template-param-dialog"]], inputs: { template: "template", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, standalone: false, decls: 1, vars: 1, consts: [[3, "minWidth", "width", "height", "title"], [3, "close", "minWidth", "width", "height", "title"], [1, "dialog-content", 2, "display", "flex", "flex-direction", "column", "height", "100%", "font-family", "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"], [1, "dlg-header"], [1, "dlg-header-row"], [1, "fa-solid", "fa-sliders"], [1, "required-marker"], [1, "dlg-loading"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "width", "100%"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 3, "disabled"], [2, "display", "flex", "gap", "8px"], ["kendoButton", "", "fillMode", "outline", 3, "click"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [2, "margin-bottom", "16px", "flex-shrink", "0", 3, "expandedChange", "expanded"], ["kendoExpansionPanelTitleDirective", ""], [2, "padding", "12px 0"], [1, "dlg-info-text"], [1, "fa-solid", "fa-info-circle"], [1, "params-table"], [1, "no-params-state"], [1, "json-preview-box"], [2, "margin-bottom", "16px", "flex", "1", "display", "flex", "flex-direction", "column", 3, "expandedChange", "expanded"], [2, "padding", "12px 0", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "dlg-loading", 2, "flex", "1"], [2, "flex", "1", "display", "flex", "flex-direction", "column"], [1, "no-results-state"], [1, "dlg-panel-title"], [1, "count-badge"], [1, "params-table-header"], [1, "params-table-row"], [1, "add-param-row"], ["kendoButton", "", "fillMode", "outline", "themeColor", "success", "size", "small", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], [1, "param-name", 2, "display", "flex", "flex-direction", "column"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], ["title", "From template definition", 1, "fa-solid", "fa-database", "param-source-icon-template"], ["title", "Custom parameter", 1, "fa-solid", "fa-edit", "param-source-icon-custom"], [1, "param-required-marker"], ["placeholder", "Parameter name...", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModel", "disabled"], [1, "param-value"], ["placeholder", "Enter value (JSON strings, numbers, objects)...", 2, "font-family", "'Courier New', monospace", "font-size", "0.9em", "width", "100%", 3, "ngModelChange", "ngModel", "rows", "disabled"], [1, "param-actions"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove parameter", 3, "disabled"], [1, "param-key-text"], [1, "param-description-text"], [1, "param-type-text"], ["placeholder", "Parameter name...", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModelChange", "ngModel", "disabled"], ["kendoButton", "", "fillMode", "flat", "themeColor", "error", "size", "small", "title", "Remove parameter", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["kendoButton", "", "themeColor", "primary", "size", "small", 3, "click", "disabled"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-chart-line"], [1, "result-badge-success"], [1, "result-badge-error"], [1, "result-stats"], [1, "result-stat"], [1, "result-stat-label"], [1, "result-stat-value"], ["kendoButton", "", "fillMode", "flat", "size", "small", "title", "Save results to file", 2, "min-width", "auto", "padding", "4px 8px", 3, "click"], [1, "fa-solid", "fa-download"], [2, "margin-bottom", "12px", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "output-header"], [1, "fa-solid", "fa-check-circle", "success-icon"], [1, "output-box"], [1, "fa-solid", "fa-exclamation-triangle", "error-icon"], [1, "error-output-box"], [2, "text-align", "center"], [1, "fa-solid", "fa-play-circle"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 3, "click"], [1, "fa-solid", "fa-play"]], template: function TemplateParamDialogComponent_Template(rf, ctx) { if (rf & 1) {
648
- i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Template, 25, 9, "kendo-dialog", 0);
651
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateParamDialogComponent, selectors: [["mj-template-param-dialog"]], inputs: { template: "template", isVisible: "isVisible" }, outputs: { isVisibleChange: "isVisibleChange", onClose: "onClose" }, standalone: false, decls: 1, vars: 1, consts: [[3, "Visible", "Width"], [3, "Close", "Visible", "Width"], [1, "dialog-content", 2, "display", "flex", "flex-direction", "column", "height", "100%", "font-family", "'Segoe UI', Tahoma, Geneva, Verdana, sans-serif"], [1, "dlg-header"], [1, "dlg-header-row"], [1, "fa-solid", "fa-sliders"], [1, "required-marker"], [1, "dlg-loading"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "width", "100%"], ["mjButton", "", "variant", "outline", 3, "disabled"], [2, "display", "flex", "gap", "8px"], ["mjButton", "", "variant", "outline", 3, "click"], ["mjButton", "", "variant", "outline"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [2, "margin-bottom", "16px", "flex-shrink", "0", 3, "ExpandedChange", "Expanded"], ["mjAccordionTitle", ""], [2, "padding", "12px 0"], [1, "dlg-info-text"], [1, "fa-solid", "fa-info-circle"], [1, "params-table"], [1, "no-params-state"], [1, "json-preview-box"], [2, "margin-bottom", "16px", "flex", "1", "display", "flex", "flex-direction", "column", 3, "ExpandedChange", "Expanded"], [2, "padding", "12px 0", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "dlg-loading", 2, "flex", "1"], [2, "flex", "1", "display", "flex", "flex-direction", "column"], [1, "no-results-state"], [1, "dlg-panel-title"], [1, "count-badge"], [1, "params-table-header"], [1, "params-table-row"], [1, "add-param-row"], ["mjButton", "", "variant", "success", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], [1, "param-name", 2, "display", "flex", "flex-direction", "column"], [2, "display", "flex", "align-items", "center", "gap", "4px", "margin-bottom", "4px"], ["title", "From template definition", 1, "fa-solid", "fa-database", "param-source-icon-template"], ["title", "Custom parameter", 1, "fa-solid", "fa-edit", "param-source-icon-custom"], [1, "param-required-marker"], ["type", "text", "placeholder", "Parameter name...", 1, "mj-input", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModel", "disabled"], [1, "param-value"], ["placeholder", "Enter value (JSON strings, numbers, objects)...", 1, "mj-textarea", 2, "font-family", "'Courier New', monospace", "font-size", "0.9em", "width", "100%", 3, "ngModelChange", "ngModel", "rows", "disabled"], [1, "param-actions"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove parameter", 3, "disabled"], [1, "param-key-text"], [1, "param-description-text"], [1, "param-type-text"], ["type", "text", "placeholder", "Parameter name...", 1, "mj-input", 2, "font-family", "'Courier New', monospace", "width", "100%", 3, "ngModelChange", "ngModel", "disabled"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove parameter", 3, "click", "disabled"], [1, "fa-solid", "fa-times"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-chart-line"], [1, "result-badge", "success"], [1, "result-badge", "error"], [1, "fa-solid", "fa-check"], [1, "result-stats"], [1, "result-stat"], [1, "result-stat-label"], [1, "result-stat-value"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Save results to file", 3, "click"], [1, "fa-solid", "fa-download"], [2, "margin-bottom", "12px", "flex", "1", "display", "flex", "flex-direction", "column"], [1, "output-header"], [1, "fa-solid", "fa-check-circle", "success-icon"], [1, "output-box"], [1, "fa-solid", "fa-exclamation-triangle", "error-icon"], [1, "error-output-box"], [2, "text-align", "center"], [1, "fa-solid", "fa-play-circle"], ["mjButton", "", "variant", "outline", 3, "click", "disabled"], [1, "fa-solid", "fa-save"], [1, "fa-solid", "fa-play"]], template: function TemplateParamDialogComponent_Template(rf, ctx) { if (rf & 1) {
652
+ i0.ɵɵconditionalCreate(0, TemplateParamDialogComponent_Conditional_0_Template, 27, 8, "mj-dialog", 0);
649
653
  } if (rf & 2) {
650
654
  i0.ɵɵconditional(ctx._isVisible ? 0 : -1);
651
- } }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.ExpansionPanelComponent, i2.ExpansionPanelTitleDirective, i3.DialogComponent, i3.DialogActionsComponent, i4.TextBoxComponent, i4.TextAreaComponent, i5.ButtonComponent], styles: [".dialog-content[_ngcontent-%COMP%] {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] kendo-textbox[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] kendo-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.json-preview[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.3;\n}\n\n.test-results[_ngcontent-%COMP%] {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.4;\n}\n\n\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row[_ngcontent-%COMP%] {\n align-items: flex-start;\n}\n\n.parameters-section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.param-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.json-preview-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.result-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down[_ngcontent-%COMP%], \n.fa-chevron-right[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%]:hover kendo-button[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.dlg-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header[_ngcontent-%COMP%] .required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.dlg-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.dlg-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n\n\n.dlg-info-text[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.params-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text[_ngcontent-%COMP%] {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n\n\n.add-param-row[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.no-params-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n}\n\n\n\n.json-preview-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n white-space: pre-wrap;\n}\n\n\n\n.result-badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n\n\n.result-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.result-stat-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.output-header[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.output-header[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.output-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n\n\n.no-results-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}"] }); }
655
+ } }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJAccordionPanelComponent, i2.MJAccordionTitleDirective, i2.MJDialogComponent, i2.MJDialogTitlebarComponent, i2.MJDialogActionsComponent], styles: [".dialog-content[_ngcontent-%COMP%] {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.param-name[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] {\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] .mj-input[_ngcontent-%COMP%], \n.param-value[_ngcontent-%COMP%] .mj-textarea[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.json-preview[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.3;\n}\n\n.test-results[_ngcontent-%COMP%] {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n line-height: 1.4;\n}\n\n\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-track, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.result-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover, \n.json-preview[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row[_ngcontent-%COMP%] {\n align-items: flex-start;\n}\n\n.parameters-section[_ngcontent-%COMP%] {\n flex-shrink: 0;\n}\n\n.param-name[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.json-preview-header[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]:first-child:hover, \n.result-header[_ngcontent-%COMP%]:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down[_ngcontent-%COMP%], \n.fa-chevron-right[_ngcontent-%COMP%] {\n transition: transform 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%] [mjButton][_ngcontent-%COMP%] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results[_ngcontent-%COMP%] .result-header[_ngcontent-%COMP%]:hover [mjButton][_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n\n\n.dlg-header[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header[_ngcontent-%COMP%] .required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.dlg-loading[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.dlg-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title[_ngcontent-%COMP%] .count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n\n\n.dlg-info-text[_ngcontent-%COMP%] {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n\n\n.params-table[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text[_ngcontent-%COMP%] {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text[_ngcontent-%COMP%] {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text[_ngcontent-%COMP%] {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n\n\n.add-param-row[_ngcontent-%COMP%] {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n\n\n.no-params-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0 0 12px 0;\n}\n\n\n\n.json-preview-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box[_ngcontent-%COMP%] pre[_ngcontent-%COMP%] {\n margin: 0;\n white-space: pre-wrap;\n}\n\n\n\n.result-badge-success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n\n\n.result-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat[_ngcontent-%COMP%] {\n text-align: center;\n}\n\n.result-stat-label[_ngcontent-%COMP%] {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n\n\n.output-header[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header[_ngcontent-%COMP%] .success-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.output-header[_ngcontent-%COMP%] .error-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.output-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n\n\n.no-results-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}"] }); }
652
656
  }
653
657
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateParamDialogComponent, [{
654
658
  type: Component,
655
- args: [{ standalone: false, selector: 'mj-template-param-dialog', template: "@if (_isVisible) {\n <kendo-dialog\n [minWidth]=\"600\"\n [width]=\"800\"\n [height]=\"700\"\n (close)=\"close()\"\n [title]=\"'Test Template: ' + (template?.Name || 'Unknown')\">\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <kendo-expansionpanel\n [(expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">\n {{ parameters.length }}\n </span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <kendo-textbox [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\">\n </kendo-textbox>\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <kendo-textarea [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\">\n </kendo-textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button kendoButton fillMode=\"flat\"\n themeColor=\"error\"\n size=\"small\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button kendoButton fillMode=\"outline\"\n themeColor=\"success\"\n size=\"small\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button kendoButton themeColor=\"primary\" size=\"small\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n <!-- JSON Preview Section -->\n <kendo-expansionpanel\n [(expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </kendo-expansionpanel>\n <!-- Test Results Section -->\n <kendo-expansionpanel\n [(expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template kendoExpansionPanelTitleDirective>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge-success\">Success</span>\n } @else {\n <span class=\"result-badge-error\">Error</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button kendoButton fillMode=\"flat\" size=\"small\"\n (click)=\"saveResults()\"\n title=\"Save results to file\"\n style=\"min-width: auto; padding: 4px 8px;\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </kendo-expansionpanel>\n }\n </div>\n <!-- Dialog Actions -->\n <kendo-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button kendoButton fillMode=\"outline\"\n themeColor=\"info\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button kendoButton fillMode=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button kendoButton fillMode=\"outline\" themeColor=\"info\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button kendoButton themeColor=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n", styles: [".dialog-content {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.param-name,\n.param-value {\n min-width: 0;\n}\n\n.param-name kendo-textbox,\n.param-value kendo-textarea {\n width: 100%;\n}\n\n.json-preview pre {\n line-height: 1.3;\n}\n\n.test-results {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content pre {\n line-height: 1.4;\n}\n\n/* Scrollbar styling */\n.parameters-list::-webkit-scrollbar,\n.result-content::-webkit-scrollbar,\n.json-preview > div::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list::-webkit-scrollbar-track,\n.result-content::-webkit-scrollbar-track,\n.json-preview > div::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb,\n.result-content::-webkit-scrollbar-thumb,\n.json-preview > div::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb:hover,\n.result-content::-webkit-scrollbar-thumb:hover,\n.json-preview > div::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row {\n align-items: flex-start;\n}\n\n.parameters-section {\n flex-shrink: 0;\n}\n\n.param-name > div {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section > div:first-child:hover,\n.json-preview-header > div:first-child:hover,\n.result-header:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down,\n.fa-chevron-right {\n transition: transform 0.2s ease;\n}\n\n.test-results .result-header kendo-button {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results .result-header:hover kendo-button {\n opacity: 1;\n}\n\n/* Dialog header section */\n.dlg-header {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row i {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row h5 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header p {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header .required-marker {\n color: var(--mj-status-error);\n}\n\n/* Loading state */\n.dlg-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading i {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading span {\n color: var(--mj-text-muted);\n}\n\n/* Panel title */\n.dlg-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title i {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n/* Info text */\n.dlg-info-text {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Parameters table */\n.params-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n/* Add parameter row */\n.add-param-row {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* No params state */\n.no-params-state {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state i {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state p {\n margin: 0 0 12px 0;\n}\n\n/* JSON preview */\n.json-preview-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box pre {\n margin: 0;\n white-space: pre-wrap;\n}\n\n/* Result status badges */\n.result-badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n/* Result stats box */\n.result-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat {\n text-align: center;\n}\n\n.result-stat-label {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Output section */\n.output-header {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header .success-icon {\n color: var(--mj-status-success);\n}\n\n.output-header .error-icon {\n color: var(--mj-status-error);\n}\n\n.output-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n/* No results state */\n.no-results-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state i {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state p {\n margin: 0;\n}\n"] }]
659
+ args: [{ standalone: false, selector: 'mj-template-param-dialog', template: "@if (_isVisible) {\n <mj-dialog\n [Visible]=\"true\"\n [Width]=\"800\"\n (Close)=\"close()\">\n <mj-dialog-titlebar>Test Template: {{ template?.Name || 'Unknown' }}</mj-dialog-titlebar>\n <div class=\"dialog-content\" style=\"display: flex; flex-direction: column; height: 100%; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\">\n <!-- Header Section -->\n <div class=\"dlg-header\">\n <div class=\"dlg-header-row\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h5>Template Testing</h5>\n </div>\n <p>\n Configure parameter values for testing. Parameters with <span class=\"required-marker\">*</span> are required.\n </p>\n </div>\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"dlg-loading\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Loading template parameters...</span>\n </div>\n } @else {\n <!-- Template Parameters Section -->\n <mj-accordion-panel\n [(Expanded)]=\"parametersExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Template Parameters\n @if (parameters.length > 0) {\n <span class=\"count-badge\">{{ parameters.length }}</span>\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"dlg-info-text\">\n <i class=\"fa-solid fa-info-circle\"></i>\n Configure parameter values for template testing. Values can be JSON objects, strings, or numbers.\n </div>\n <!-- Parameters Table -->\n @if (parameters.length > 0) {\n <div class=\"params-table\">\n <!-- Header -->\n <div class=\"params-table-header\">\n <div>Parameter Name</div>\n <div>Value</div>\n <div>Actions</div>\n </div>\n <!-- Parameter Rows -->\n @for (param of parameters; track $index; let i = $index) {\n <div class=\"params-table-row\">\n <!-- Parameter Name -->\n <div class=\"param-name\" style=\"display: flex; flex-direction: column;\">\n <div style=\"display: flex; align-items: center; gap: 4px; margin-bottom: 4px;\">\n @if (param.isFromTemplate) {\n <i class=\"fa-solid fa-database param-source-icon-template\" title=\"From template definition\"></i>\n } @else {\n <i class=\"fa-solid fa-edit param-source-icon-custom\" title=\"Custom parameter\"></i>\n }\n @if (param.isRequired) {\n <span class=\"param-required-marker\">*</span>\n }\n </div>\n @if (param.isFromTemplate) {\n <div class=\"param-key-text\">\n {{ param.key }}\n </div>\n @if (param.description) {\n <div class=\"param-description-text\">\n {{ param.description }}\n </div>\n }\n @if (param.type && param.type !== 'Scalar') {\n <div class=\"param-type-text\">\n Type: {{ param.type }}\n </div>\n }\n } @else {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"param.key\"\n (ngModelChange)=\"onParameterChange()\"\n placeholder=\"Parameter name...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; width: 100%;\" />\n }\n </div>\n <!-- Parameter Value -->\n <div class=\"param-value\">\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"param.value\"\n (ngModelChange)=\"onParameterChange()\"\n [rows]=\"2\"\n placeholder=\"Enter value (JSON strings, numbers, objects)...\"\n [disabled]=\"isRunning\"\n style=\"font-family: 'Courier New', monospace; font-size: 0.9em; width: 100%;\"></textarea>\n </div>\n <!-- Actions -->\n <div class=\"param-actions\">\n @if (!param.isFromTemplate && parameters.length > 1) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"removeParameter(i)\"\n [disabled]=\"isRunning\"\n title=\"Remove parameter\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n </div>\n }\n <!-- Add Parameter Row -->\n <div class=\"add-param-row\">\n <button mjButton variant=\"success\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add Parameter\n </button>\n </div>\n </div>\n } @else {\n <div class=\"no-params-state\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <p>No parameters defined yet</p>\n <button mjButton variant=\"primary\" size=\"sm\"\n (click)=\"addParameter()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-plus\"></i> Add First Parameter\n </button>\n </div>\n }\n </div>\n </mj-accordion-panel>\n <!-- JSON Preview Section -->\n <mj-accordion-panel\n [(Expanded)]=\"jsonPreviewExpanded\"\n style=\"margin-bottom: 16px; flex-shrink: 0;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Context Data (JSON)\n </span>\n </ng-template>\n <div style=\"padding: 12px 0;\">\n <div class=\"json-preview-box\">\n <pre>{{ parametersAsJson }}</pre>\n </div>\n </div>\n </mj-accordion-panel>\n <!-- Test Results Section -->\n <mj-accordion-panel\n [(Expanded)]=\"resultsExpanded\"\n style=\"margin-bottom: 16px; flex: 1; display: flex; flex-direction: column;\">\n <ng-template mjAccordionTitle>\n <span class=\"dlg-panel-title\">\n <i class=\"fa-solid fa-chart-line\"></i>\n Test Results\n @if (testResult) {\n @if (testResult.success) {\n <span class=\"result-badge success\"><i class=\"fa-solid fa-check\"></i> Success</span>\n } @else {\n <span class=\"result-badge error\"><i class=\"fa-solid fa-times\"></i> Failed</span>\n }\n }\n </span>\n </ng-template>\n <div style=\"padding: 12px 0; flex: 1; display: flex; flex-direction: column;\">\n @if (isRunning) {\n <div class=\"dlg-loading\" style=\"flex: 1;\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <span>Running template...</span>\n </div>\n } @else if (testResult) {\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n <!-- Result Header with Stats -->\n <div class=\"result-stats\" [class.success]=\"testResult.success\" [class.error]=\"!testResult.success\">\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">STATUS</div>\n <div class=\"result-stat-value\">\n {{ testResult.success ? 'Success' : 'Failed' }}\n </div>\n </div>\n @if (testResult.executionTimeMs) {\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">EXECUTION TIME</div>\n <div class=\"result-stat-value\">{{ testResult.executionTimeMs }}ms</div>\n </div>\n }\n <div class=\"result-stat\">\n <div class=\"result-stat-label\">ACTIONS</div>\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"saveResults()\"\n title=\"Save results to file\">\n <i class=\"fa-solid fa-download\"></i>\n </button>\n </div>\n </div>\n <!-- Result Content -->\n <div style=\"flex: 1; display: flex; flex-direction: column;\">\n @if (testResult.success && testResult.output) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-check-circle success-icon\"></i>\n Template Output\n </h6>\n <div class=\"output-box\">\n {{ testResult.output }}\n </div>\n </div>\n } @else if (!testResult.success && testResult.error) {\n <div style=\"margin-bottom: 12px; flex: 1; display: flex; flex-direction: column;\">\n <h6 class=\"output-header\">\n <i class=\"fa-solid fa-exclamation-triangle error-icon\"></i>\n Error Details\n </h6>\n <div class=\"error-output-box\">{{ testResult.error }}</div>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"no-results-state\">\n <div style=\"text-align: center;\">\n <i class=\"fa-solid fa-play-circle\"></i>\n <p>No test results yet. Run the template to see results here.</p>\n </div>\n </div>\n }\n </div>\n </mj-accordion-panel>\n }\n </div>\n <!-- Dialog Actions -->\n <mj-dialog-actions>\n <div style=\"display: flex; justify-content: space-between; align-items: center; width: 100%;\">\n <div>\n @if (hasUnsavedParameters) {\n <button mjButton variant=\"outline\"\n (click)=\"updateTemplateParams()\"\n [disabled]=\"isRunning\">\n <i class=\"fa-solid fa-save\"></i> Update Template Params\n </button>\n }\n </div>\n <div style=\"display: flex; gap: 8px;\">\n <button mjButton variant=\"outline\" (click)=\"close()\">\n Close\n </button>\n @if (testResult) {\n <button mjButton variant=\"outline\" (click)=\"saveResults()\">\n <i class=\"fa-solid fa-download\"></i> Save Results\n </button>\n }\n <button mjButton variant=\"primary\"\n [disabled]=\"isRunning || isLoading\"\n (click)=\"runTemplate()\">\n @if (isRunning) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i> Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i> Run Template\n }\n </button>\n </div>\n </div>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: [".dialog-content {\n min-height: 500px;\n max-height: 650px;\n}\n\n.parameter-row:hover {\n background-color: var(--mj-bg-surface-card) !important;\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.param-name,\n.param-value {\n min-width: 0;\n}\n\n.param-name .mj-input,\n.param-value .mj-textarea {\n width: 100%;\n}\n\n.json-preview pre {\n line-height: 1.3;\n}\n\n.test-results {\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n}\n\n.result-content pre {\n line-height: 1.4;\n}\n\n/* Scrollbar styling */\n.parameters-list::-webkit-scrollbar,\n.result-content::-webkit-scrollbar,\n.json-preview > div::-webkit-scrollbar {\n width: 6px;\n}\n\n.parameters-list::-webkit-scrollbar-track,\n.result-content::-webkit-scrollbar-track,\n.json-preview > div::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb,\n.result-content::-webkit-scrollbar-thumb,\n.json-preview > div::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.parameters-list::-webkit-scrollbar-thumb:hover,\n.result-content::-webkit-scrollbar-thumb:hover,\n.json-preview > div::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-muted);\n}\n\n.parameter-row {\n align-items: flex-start;\n}\n\n.parameters-section {\n flex-shrink: 0;\n}\n\n.param-name > div {\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.header-section > div:first-child:hover,\n.json-preview-header > div:first-child:hover,\n.result-header:hover {\n background-color: var(--mj-bg-surface-card) !important;\n transition: background-color 0.2s ease;\n}\n\n.fa-chevron-down,\n.fa-chevron-right {\n transition: transform 0.2s ease;\n}\n\n.test-results .result-header [mjButton] {\n opacity: 0.8;\n transition: opacity 0.2s ease;\n}\n\n.test-results .result-header:hover [mjButton] {\n opacity: 1;\n}\n\n/* Dialog header section */\n.dlg-header {\n margin-bottom: 20px;\n padding-bottom: 16px;\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.dlg-header-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n}\n\n.dlg-header-row i {\n color: var(--mj-text-muted);\n font-size: 1.2em;\n}\n\n.dlg-header-row h5 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n}\n\n.dlg-header p {\n margin: 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n}\n\n.dlg-header .required-marker {\n color: var(--mj-status-error);\n}\n\n/* Loading state */\n.dlg-loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n}\n\n.dlg-loading i {\n font-size: 24px;\n color: var(--mj-text-muted);\n margin-right: 12px;\n}\n\n.dlg-loading span {\n color: var(--mj-text-muted);\n}\n\n/* Panel title */\n.dlg-panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.dlg-panel-title i {\n color: var(--mj-text-muted);\n}\n\n.dlg-panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n/* Info text */\n.dlg-info-text {\n margin-bottom: 12px;\n color: var(--mj-text-muted);\n font-size: 0.85em;\n}\n\n/* Parameters table */\n.params-table {\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface-card);\n}\n\n.params-table-header {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken);\n font-weight: 600;\n font-size: 0.85em;\n color: var(--mj-text-secondary);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.params-table-row {\n display: grid;\n grid-template-columns: 200px 1fr 60px;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n align-items: start;\n background: var(--mj-bg-surface);\n}\n\n.param-source-icon-template {\n color: var(--mj-status-success);\n font-size: 0.75em;\n}\n\n.param-source-icon-custom {\n color: var(--mj-status-warning);\n font-size: 0.75em;\n}\n\n.param-required-marker {\n color: var(--mj-status-error);\n font-weight: bold;\n}\n\n.param-key-text {\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n font-weight: 500;\n color: var(--mj-text-primary);\n padding: 4px 0;\n word-break: break-word;\n}\n\n.param-description-text {\n font-size: 0.75em;\n color: var(--mj-text-muted);\n margin-top: 2px;\n font-style: italic;\n word-break: break-word;\n}\n\n.param-type-text {\n font-size: 0.7em;\n color: var(--mj-brand-primary);\n margin-top: 2px;\n}\n\n.param-actions {\n display: flex;\n align-items: start;\n justify-content: center;\n padding-top: 4px;\n}\n\n/* Add parameter row */\n.add-param-row {\n padding: 12px 16px;\n text-align: center;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n}\n\n/* No params state */\n.no-params-state {\n text-align: center;\n padding: 20px;\n color: var(--mj-text-muted);\n}\n\n.no-params-state i {\n font-size: 2em;\n margin-bottom: 12px;\n opacity: 0.5;\n}\n\n.no-params-state p {\n margin: 0 0 12px 0;\n}\n\n/* JSON preview */\n.json-preview-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n color: var(--mj-text-primary);\n max-height: 200px;\n overflow-y: auto;\n}\n\n.json-preview-box pre {\n margin: 0;\n white-space: pre-wrap;\n}\n\n/* Result status badges */\n.result-badge-success {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n.result-badge-error {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, transparent);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n font-weight: 600;\n}\n\n/* Result stats box */\n.result-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 12px;\n margin-bottom: 16px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n}\n\n.result-stats.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.result-stats.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.result-stat {\n text-align: center;\n}\n\n.result-stat-label {\n font-size: 0.75em;\n margin-bottom: 2px;\n color: var(--mj-text-muted);\n}\n\n.result-stat-value {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n/* Output section */\n.output-header {\n margin: 0 0 8px 0;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.output-header .success-icon {\n color: var(--mj-status-success);\n}\n\n.output-header .error-icon {\n color: var(--mj-status-error);\n}\n\n.output-box {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 12px;\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n color: var(--mj-text-primary);\n}\n\n.error-output-box {\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, var(--mj-bg-surface));\n border-radius: 4px;\n padding: 12px;\n color: var(--mj-status-error);\n font-family: 'Courier New', monospace;\n font-size: 0.9em;\n white-space: pre-wrap;\n overflow: auto;\n height: 150px;\n}\n\n/* No results state */\n.no-results-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--mj-text-muted);\n flex: 1;\n}\n\n.no-results-state i {\n font-size: 3em;\n margin-bottom: 12px;\n opacity: 0.3;\n}\n\n.no-results-state p {\n margin: 0;\n}\n"] }]
656
660
  }], null, { template: [{
657
661
  type: Input
658
662
  }], isVisible: [{