@memberjunction/ng-dashboards 5.22.0 → 5.24.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.
- package/README.md +51 -0
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +364 -362
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +2 -2
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +947 -64
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +7645 -430
- package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +285 -6
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2454 -277
- package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +191 -197
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +9 -8
- package/dist/AI/components/models/model-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-management.component.js +305 -299
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/system/system-configuration.component.js +319 -313
- package/dist/AI/components/system/system-configuration.component.js.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts +20 -2
- package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
- package/dist/AI/components/vectors/vector-management-resource.component.js +419 -232
- package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +10 -12
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +61 -68
- package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
- package/dist/APIKeys/api-usage-panel.component.js +10 -11
- package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
- package/dist/Actions/components/actions-list-view.component.js +82 -96
- package/dist/Actions/components/actions-list-view.component.js.map +1 -1
- package/dist/Actions/components/actions-overview.component.js +130 -134
- package/dist/Actions/components/actions-overview.component.js.map +1 -1
- package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
- package/dist/Actions/components/categories-list-view.component.js +40 -46
- package/dist/Actions/components/categories-list-view.component.js.map +1 -1
- package/dist/Actions/components/code-management.component.js +2 -2
- package/dist/Actions/components/code-management.component.js.map +1 -1
- package/dist/Actions/components/entity-integration.component.js +2 -2
- package/dist/Actions/components/entity-integration.component.js.map +1 -1
- package/dist/Actions/components/execution-monitoring.component.js +127 -132
- package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
- package/dist/Actions/components/executions-list-view.component.js +2 -2
- package/dist/Actions/components/executions-list-view.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-card.component.js +11 -17
- package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
- package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
- package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
- package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
- package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
- package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Actions/components/scheduled-actions.component.js +2 -2
- package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
- package/dist/Actions/components/security-permissions.component.js +2 -2
- package/dist/Actions/components/security-permissions.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
- package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
- package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
- package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
- package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
- package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
- package/dist/DataExplorer/data-explorer-dashboard.component.js +17 -17
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +4 -4
- package/dist/Home/home-dashboard.component.js.map +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +1 -0
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +5 -4
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +247 -259
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +1 -0
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +1 -0
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +1 -0
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/components/widgets/integration-card.component.js +7 -9
- package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +6 -10
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +12 -20
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +411 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +4266 -0
- package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +140 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +780 -0
- package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +8 -2
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +246 -195
- package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +75 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +601 -0
- package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -0
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +93 -12
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +1 -1
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +637 -107
- package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +1 -1
- package/dist/KnowledgeHub/index.d.ts +3 -0
- package/dist/KnowledgeHub/index.d.ts.map +1 -1
- package/dist/KnowledgeHub/index.js +3 -0
- package/dist/KnowledgeHub/index.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +9 -7
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +10 -9
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
- package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
- package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +2 -2
- package/dist/MCP/mcp-dashboard.component.js.map +1 -1
- package/dist/MCP/mcp.module.d.ts +6 -9
- package/dist/MCP/mcp.module.d.ts.map +1 -1
- package/dist/MCP/mcp.module.js +20 -22
- package/dist/MCP/mcp.module.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
- package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +9 -10
- package/dist/Testing/testing-dashboard.component.js.map +1 -1
- package/dist/__tests__/analytics-resource.test.d.ts +2 -0
- package/dist/__tests__/analytics-resource.test.d.ts.map +1 -0
- package/dist/__tests__/analytics-resource.test.js +181 -0
- package/dist/__tests__/analytics-resource.test.js.map +1 -0
- package/dist/__tests__/scheduling.test.d.ts +2 -0
- package/dist/__tests__/scheduling.test.d.ts.map +1 -0
- package/dist/__tests__/scheduling.test.js +205 -0
- package/dist/__tests__/scheduling.test.js.map +1 -0
- package/dist/actions-dashboards.module.d.ts +8 -13
- package/dist/actions-dashboards.module.d.ts.map +1 -1
- package/dist/actions-dashboards.module.js +6 -27
- package/dist/actions-dashboards.module.js.map +1 -1
- package/dist/ai-dashboards.module.d.ts +20 -20
- package/dist/ai-dashboards.module.d.ts.map +1 -1
- package/dist/ai-dashboards.module.js +43 -44
- package/dist/ai-dashboards.module.js.map +1 -1
- package/dist/communication-dashboards.module.d.ts +4 -8
- package/dist/communication-dashboards.module.d.ts.map +1 -1
- package/dist/communication-dashboards.module.js +0 -19
- package/dist/communication-dashboards.module.js.map +1 -1
- package/dist/component-studio-dashboards.module.d.ts +7 -11
- package/dist/component-studio-dashboards.module.d.ts.map +1 -1
- package/dist/component-studio-dashboards.module.js +22 -34
- package/dist/component-studio-dashboards.module.js.map +1 -1
- package/dist/core-dashboards.module.d.ts +12 -18
- package/dist/core-dashboards.module.d.ts.map +1 -1
- package/dist/core-dashboards.module.js +15 -31
- package/dist/core-dashboards.module.js.map +1 -1
- package/dist/credentials-dashboards.module.d.ts +5 -8
- package/dist/credentials-dashboards.module.d.ts.map +1 -1
- package/dist/credentials-dashboards.module.js +3 -19
- package/dist/credentials-dashboards.module.js.map +1 -1
- package/dist/data-explorer-dashboards.module.d.ts +7 -13
- package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
- package/dist/data-explorer-dashboards.module.js +0 -27
- package/dist/data-explorer-dashboards.module.js.map +1 -1
- package/dist/lists-dashboards.module.d.ts +5 -8
- package/dist/lists-dashboards.module.d.ts.map +1 -1
- package/dist/lists-dashboards.module.js +3 -19
- package/dist/lists-dashboards.module.js.map +1 -1
- package/dist/public-api.d.ts +2 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +2 -0
- package/dist/public-api.js.map +1 -1
- package/dist/scheduling-dashboards.module.d.ts +6 -10
- package/dist/scheduling-dashboards.module.d.ts.map +1 -1
- package/dist/scheduling-dashboards.module.js +3 -23
- package/dist/scheduling-dashboards.module.js.map +1 -1
- package/dist/shared/entity-field-display.d.ts +44 -0
- package/dist/shared/entity-field-display.d.ts.map +1 -0
- package/dist/shared/entity-field-display.js +118 -0
- package/dist/shared/entity-field-display.js.map +1 -0
- package/dist/testing-dashboards.module.d.ts +7 -13
- package/dist/testing-dashboards.module.d.ts.map +1 -1
- package/dist/testing-dashboards.module.js +0 -27
- package/dist/testing-dashboards.module.js.map +1 -1
- package/package.json +48 -55
|
@@ -17,32 +17,30 @@ import { UserInfoEngine } from '@memberjunction/core-entities';
|
|
|
17
17
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
18
18
|
import * as i0 from "@angular/core";
|
|
19
19
|
import * as i1 from "@angular/forms";
|
|
20
|
-
import * as i2 from "@
|
|
21
|
-
import * as i3 from "@
|
|
22
|
-
import * as i4 from "@progress/kendo-angular-inputs";
|
|
23
|
-
import * as i5 from "@memberjunction/ng-code-editor";
|
|
20
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
21
|
+
import * as i3 from "@memberjunction/ng-code-editor";
|
|
24
22
|
const _forTrack0 = ($index, $item) => $item.name;
|
|
25
23
|
function MCPTestToolDialogComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
26
24
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
27
|
-
i0.ɵɵelementStart(0, "div",
|
|
25
|
+
i0.ɵɵelementStart(0, "div", 3);
|
|
28
26
|
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_0_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
29
27
|
i0.ɵɵelementEnd();
|
|
30
28
|
} }
|
|
31
29
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
32
30
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
33
|
-
i0.ɵɵelementStart(0, "div",
|
|
31
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
34
32
|
i0.ɵɵlistener("mousedown", function MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template_div_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onResizeStart($event)); });
|
|
35
|
-
i0.ɵɵelement(1, "div",
|
|
33
|
+
i0.ɵɵelement(1, "div", 21);
|
|
36
34
|
i0.ɵɵelementEnd();
|
|
37
35
|
} if (rf & 2) {
|
|
38
36
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
39
37
|
i0.ɵɵclassProp("active", ctx_r1.IsResizing);
|
|
40
38
|
} }
|
|
41
39
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template(rf, ctx) { if (rf & 1) {
|
|
42
|
-
i0.ɵɵelementStart(0, "div",
|
|
40
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
|
|
43
41
|
i0.ɵɵtext(2);
|
|
44
42
|
i0.ɵɵelementEnd();
|
|
45
|
-
i0.ɵɵelementStart(3, "span",
|
|
43
|
+
i0.ɵɵelementStart(3, "span", 37);
|
|
46
44
|
i0.ɵɵtext(4);
|
|
47
45
|
i0.ɵɵelementEnd()();
|
|
48
46
|
} if (rf & 2) {
|
|
@@ -54,8 +52,8 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_T
|
|
|
54
52
|
i0.ɵɵadvance();
|
|
55
53
|
i0.ɵɵtextInterpolate1(" ", dataItem_r6.Status, " ");
|
|
56
54
|
} }
|
|
57
|
-
function
|
|
58
|
-
i0.ɵɵelementStart(0, "span",
|
|
55
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
59
57
|
i0.ɵɵtext(1);
|
|
60
58
|
i0.ɵɵelementEnd();
|
|
61
59
|
} if (rf & 2) {
|
|
@@ -63,11 +61,11 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_
|
|
|
63
61
|
i0.ɵɵadvance();
|
|
64
62
|
i0.ɵɵtextInterpolate(dataItem_r7.Description);
|
|
65
63
|
} }
|
|
66
|
-
function
|
|
67
|
-
i0.ɵɵelementStart(0, "div",
|
|
64
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "span", 36);
|
|
68
66
|
i0.ɵɵtext(2);
|
|
69
67
|
i0.ɵɵelementEnd();
|
|
70
|
-
i0.ɵɵconditionalCreate(3,
|
|
68
|
+
i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Conditional_3_Template, 2, 1, "span", 38);
|
|
71
69
|
i0.ɵɵelementEnd();
|
|
72
70
|
} if (rf & 2) {
|
|
73
71
|
const dataItem_r7 = ctx.$implicit;
|
|
@@ -76,14 +74,14 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_17_
|
|
|
76
74
|
i0.ɵɵadvance();
|
|
77
75
|
i0.ɵɵconditional(dataItem_r7.Description ? 3 : -1);
|
|
78
76
|
} }
|
|
79
|
-
function
|
|
77
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
80
78
|
i0.ɵɵelementStart(0, "span", 30);
|
|
81
79
|
i0.ɵɵtext(1, "Select a server first");
|
|
82
80
|
i0.ɵɵelementEnd();
|
|
83
81
|
} }
|
|
84
|
-
function
|
|
82
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
85
83
|
i0.ɵɵelementStart(0, "span", 31);
|
|
86
|
-
i0.ɵɵelement(1, "i",
|
|
84
|
+
i0.ɵɵelement(1, "i", 39);
|
|
87
85
|
i0.ɵɵtext(2);
|
|
88
86
|
i0.ɵɵelementEnd();
|
|
89
87
|
} if (rf & 2) {
|
|
@@ -91,111 +89,105 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_19_
|
|
|
91
89
|
i0.ɵɵadvance(2);
|
|
92
90
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.NoConnectionsWarning, " ");
|
|
93
91
|
} }
|
|
94
|
-
function
|
|
92
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
95
93
|
i0.ɵɵelementStart(0, "span", 32);
|
|
96
|
-
i0.ɵɵelement(1, "i",
|
|
94
|
+
i0.ɵɵelement(1, "i", 40);
|
|
97
95
|
i0.ɵɵtext(2, " Auto-selected (only connection available) ");
|
|
98
96
|
i0.ɵɵelementEnd();
|
|
99
97
|
} }
|
|
100
|
-
function
|
|
101
|
-
i0.ɵɵ
|
|
102
|
-
} if (rf & 2) {
|
|
103
|
-
const dataItem_r8 = ctx.$implicit;
|
|
104
|
-
i0.ɵɵtextInterpolate1(" ", (dataItem_r8 == null ? null : dataItem_r8.ToolTitle) || (dataItem_r8 == null ? null : dataItem_r8.ToolName) || "Select a tool...", " ");
|
|
105
|
-
} }
|
|
106
|
-
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_29_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
-
i0.ɵɵelementStart(0, "span", 39);
|
|
98
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementStart(0, "span", 38);
|
|
108
100
|
i0.ɵɵtext(1);
|
|
109
101
|
i0.ɵɵelementEnd();
|
|
110
102
|
} if (rf & 2) {
|
|
111
|
-
const
|
|
103
|
+
const dataItem_r8 = i0.ɵɵnextContext().$implicit;
|
|
112
104
|
i0.ɵɵadvance();
|
|
113
|
-
i0.ɵɵtextInterpolate(
|
|
105
|
+
i0.ɵɵtextInterpolate(dataItem_r8.ToolDescription);
|
|
114
106
|
} }
|
|
115
|
-
function
|
|
116
|
-
i0.ɵɵelementStart(0, "div",
|
|
107
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
+
i0.ɵɵelementStart(0, "div", 41)(1, "span", 36);
|
|
117
109
|
i0.ɵɵtext(2);
|
|
118
110
|
i0.ɵɵelementEnd();
|
|
119
|
-
i0.ɵɵconditionalCreate(3,
|
|
111
|
+
i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Conditional_3_Template, 2, 1, "span", 38);
|
|
120
112
|
i0.ɵɵelementEnd();
|
|
121
113
|
} if (rf & 2) {
|
|
122
|
-
const
|
|
114
|
+
const dataItem_r8 = ctx.$implicit;
|
|
123
115
|
i0.ɵɵadvance(2);
|
|
124
|
-
i0.ɵɵtextInterpolate(
|
|
116
|
+
i0.ɵɵtextInterpolate(dataItem_r8.ToolTitle || dataItem_r8.ToolName);
|
|
125
117
|
i0.ɵɵadvance();
|
|
126
|
-
i0.ɵɵconditional(
|
|
118
|
+
i0.ɵɵconditional(dataItem_r8.ToolDescription ? 3 : -1);
|
|
127
119
|
} }
|
|
128
|
-
function
|
|
120
|
+
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
129
121
|
i0.ɵɵelementStart(0, "span", 30);
|
|
130
122
|
i0.ɵɵtext(1, "Select a server first");
|
|
131
123
|
i0.ɵɵelementEnd();
|
|
132
124
|
} }
|
|
133
125
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
134
126
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
135
|
-
i0.ɵɵelementStart(0, "div",
|
|
136
|
-
i0.ɵɵelement(4, "i",
|
|
127
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 22)(2, "div", 23)(3, "label", 24);
|
|
128
|
+
i0.ɵɵelement(4, "i", 25);
|
|
137
129
|
i0.ɵɵtext(5, " Server ");
|
|
138
|
-
i0.ɵɵelementStart(6, "span",
|
|
130
|
+
i0.ɵɵelementStart(6, "span", 26);
|
|
139
131
|
i0.ɵɵtext(7, "*");
|
|
140
132
|
i0.ɵɵelementEnd()();
|
|
141
|
-
i0.ɵɵelementStart(8, "
|
|
142
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
143
|
-
i0.ɵɵlistener("
|
|
144
|
-
i0.ɵɵtemplate(9, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template, 5, 4, "ng-template",
|
|
133
|
+
i0.ɵɵelementStart(8, "mj-dropdown", 27);
|
|
134
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ServerID, $event) || (ctx_r1.ServerID = $event); return i0.ɵɵresetView($event); });
|
|
135
|
+
i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_8_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onServerFilterChange($event)); });
|
|
136
|
+
i0.ɵɵtemplate(9, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_9_Template, 5, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
145
137
|
i0.ɵɵelementEnd()();
|
|
146
|
-
i0.ɵɵelementStart(
|
|
147
|
-
i0.ɵɵelement(
|
|
148
|
-
i0.ɵɵtext(
|
|
149
|
-
i0.ɵɵelementStart(
|
|
150
|
-
i0.ɵɵtext(
|
|
138
|
+
i0.ɵɵelementStart(11, "div", 23)(12, "label", 24);
|
|
139
|
+
i0.ɵɵelement(13, "i", 28);
|
|
140
|
+
i0.ɵɵtext(14, " Connection ");
|
|
141
|
+
i0.ɵɵelementStart(15, "span", 26);
|
|
142
|
+
i0.ɵɵtext(16, "*");
|
|
151
143
|
i0.ɵɵelementEnd()();
|
|
152
|
-
i0.ɵɵelementStart(
|
|
153
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
154
|
-
i0.ɵɵlistener("
|
|
155
|
-
i0.ɵɵtemplate(
|
|
144
|
+
i0.ɵɵelementStart(17, "mj-dropdown", 29);
|
|
145
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_17_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ConnectionID, $event) || (ctx_r1.ConnectionID = $event); return i0.ɵɵresetView($event); });
|
|
146
|
+
i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_17_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_17_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onConnectionFilterChange($event)); });
|
|
147
|
+
i0.ɵɵtemplate(18, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_18_Template, 4, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
156
148
|
i0.ɵɵelementEnd();
|
|
157
|
-
i0.ɵɵconditionalCreate(
|
|
158
|
-
i0.ɵɵconditionalCreate(
|
|
159
|
-
i0.ɵɵconditionalCreate(
|
|
149
|
+
i0.ɵɵconditionalCreate(20, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_20_Template, 2, 0, "span", 30);
|
|
150
|
+
i0.ɵɵconditionalCreate(21, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_21_Template, 3, 1, "span", 31);
|
|
151
|
+
i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_22_Template, 3, 0, "span", 32);
|
|
160
152
|
i0.ɵɵelementEnd();
|
|
161
|
-
i0.ɵɵelementStart(
|
|
162
|
-
i0.ɵɵelement(
|
|
163
|
-
i0.ɵɵtext(
|
|
164
|
-
i0.ɵɵelementStart(
|
|
165
|
-
i0.ɵɵtext(
|
|
153
|
+
i0.ɵɵelementStart(23, "div", 23)(24, "label", 24);
|
|
154
|
+
i0.ɵɵelement(25, "i", 33);
|
|
155
|
+
i0.ɵɵtext(26, " Tool ");
|
|
156
|
+
i0.ɵɵelementStart(27, "span", 26);
|
|
157
|
+
i0.ɵɵtext(28, "*");
|
|
166
158
|
i0.ɵɵelementEnd()();
|
|
167
|
-
i0.ɵɵelementStart(
|
|
168
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
169
|
-
i0.ɵɵlistener("
|
|
170
|
-
i0.ɵɵtemplate(
|
|
159
|
+
i0.ɵɵelementStart(29, "mj-dropdown", 34);
|
|
160
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.ToolID, $event) || (ctx_r1.ToolID = $event); return i0.ɵɵresetView($event); });
|
|
161
|
+
i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_ValueChange_29_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolChange()); })("FilterChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template_mj_dropdown_FilterChange_29_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onToolFilterChange($event)); });
|
|
162
|
+
i0.ɵɵtemplate(30, MCPTestToolDialogComponent_Conditional_1_Conditional_27_ng_template_30_Template, 4, 2, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
171
163
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵconditionalCreate(
|
|
164
|
+
i0.ɵɵconditionalCreate(32, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Conditional_32_Template, 2, 0, "span", 30);
|
|
173
165
|
i0.ɵɵelementEnd()()();
|
|
174
166
|
} if (rf & 2) {
|
|
175
167
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
176
168
|
i0.ɵɵadvance(8);
|
|
177
|
-
i0.ɵɵproperty("
|
|
169
|
+
i0.ɵɵproperty("Data", ctx_r1.DisplayServers)("ValuePrimitive", true);
|
|
178
170
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ServerID);
|
|
179
|
-
i0.ɵɵproperty("
|
|
180
|
-
i0.ɵɵadvance(
|
|
181
|
-
i0.ɵɵproperty("
|
|
171
|
+
i0.ɵɵproperty("Filterable", true);
|
|
172
|
+
i0.ɵɵadvance(9);
|
|
173
|
+
i0.ɵɵproperty("Data", ctx_r1.DisplayConnections)("ValuePrimitive", true);
|
|
182
174
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ConnectionID);
|
|
183
|
-
i0.ɵɵproperty("
|
|
184
|
-
i0.ɵɵadvance(
|
|
185
|
-
i0.ɵɵconditional(!ctx_r1.ServerID ?
|
|
175
|
+
i0.ɵɵproperty("Disabled", !ctx_r1.ServerID || ctx_r1.NoConnectionsWarning !== null)("Filterable", true);
|
|
176
|
+
i0.ɵɵadvance(3);
|
|
177
|
+
i0.ɵɵconditional(!ctx_r1.ServerID ? 20 : -1);
|
|
186
178
|
i0.ɵɵadvance();
|
|
187
|
-
i0.ɵɵconditional(ctx_r1.NoConnectionsWarning ?
|
|
179
|
+
i0.ɵɵconditional(ctx_r1.NoConnectionsWarning ? 21 : -1);
|
|
188
180
|
i0.ɵɵadvance();
|
|
189
|
-
i0.ɵɵconditional(ctx_r1.FilteredConnections.length === 1 && ctx_r1.ConnectionID ?
|
|
181
|
+
i0.ɵɵconditional(ctx_r1.FilteredConnections.length === 1 && ctx_r1.ConnectionID ? 22 : -1);
|
|
190
182
|
i0.ɵɵadvance(7);
|
|
191
|
-
i0.ɵɵproperty("
|
|
183
|
+
i0.ɵɵproperty("Data", ctx_r1.DisplayTools)("ValuePrimitive", true);
|
|
192
184
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ToolID);
|
|
193
|
-
i0.ɵɵproperty("
|
|
185
|
+
i0.ɵɵproperty("Disabled", !ctx_r1.ServerID)("Filterable", true);
|
|
194
186
|
i0.ɵɵadvance(3);
|
|
195
|
-
i0.ɵɵconditional(!ctx_r1.ServerID ?
|
|
187
|
+
i0.ɵɵconditional(!ctx_r1.ServerID ? 32 : -1);
|
|
196
188
|
} }
|
|
197
189
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
-
i0.ɵɵelementStart(0, "p",
|
|
190
|
+
i0.ɵɵelementStart(0, "p", 45);
|
|
199
191
|
i0.ɵɵtext(1);
|
|
200
192
|
i0.ɵɵelementEnd();
|
|
201
193
|
} if (rf & 2) {
|
|
@@ -204,135 +196,135 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_T
|
|
|
204
196
|
i0.ɵɵtextInterpolate(ctx_r1.SelectedTool == null ? null : ctx_r1.SelectedTool.ToolDescription);
|
|
205
197
|
} }
|
|
206
198
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
-
i0.ɵɵelementStart(0, "div",
|
|
208
|
-
i0.ɵɵelement(1, "i",
|
|
199
|
+
i0.ɵɵelementStart(0, "div", 48);
|
|
200
|
+
i0.ɵɵelement(1, "i", 50);
|
|
209
201
|
i0.ɵɵelementStart(2, "p");
|
|
210
202
|
i0.ɵɵtext(3, "This tool requires no parameters.");
|
|
211
203
|
i0.ɵɵelementEnd()();
|
|
212
204
|
} }
|
|
213
205
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
214
|
-
i0.ɵɵelementStart(0, "span",
|
|
206
|
+
i0.ɵɵelementStart(0, "span", 26);
|
|
215
207
|
i0.ɵɵtext(1, "*");
|
|
216
208
|
i0.ɵɵelementEnd();
|
|
217
209
|
} }
|
|
218
210
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
219
|
-
i0.ɵɵelementStart(0, "p",
|
|
211
|
+
i0.ɵɵelementStart(0, "p", 55);
|
|
220
212
|
i0.ɵɵtext(1);
|
|
221
213
|
i0.ɵɵelementEnd();
|
|
222
214
|
} if (rf & 2) {
|
|
223
|
-
const
|
|
215
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
224
216
|
i0.ɵɵadvance();
|
|
225
|
-
i0.ɵɵtextInterpolate(
|
|
217
|
+
i0.ɵɵtextInterpolate(config_r9.description);
|
|
226
218
|
} }
|
|
227
219
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
228
|
-
const
|
|
229
|
-
i0.ɵɵelementStart(0, "
|
|
230
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
231
|
-
i0.ɵɵlistener("
|
|
220
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
221
|
+
i0.ɵɵelementStart(0, "mj-dropdown", 59);
|
|
222
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_mj_dropdown_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
|
|
223
|
+
i0.ɵɵlistener("ValueChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template_mj_dropdown_ValueChange_0_listener($event) { i0.ɵɵrestoreView(_r10); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event)); });
|
|
232
224
|
i0.ɵɵelementEnd();
|
|
233
225
|
} if (rf & 2) {
|
|
234
|
-
const
|
|
226
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
235
227
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
236
|
-
i0.ɵɵproperty("
|
|
237
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[
|
|
228
|
+
i0.ɵɵproperty("Data", config_r9.enumValues)("ValuePrimitive", true);
|
|
229
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
|
|
238
230
|
} }
|
|
239
231
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
240
|
-
const
|
|
241
|
-
i0.ɵɵelementStart(0, "div",
|
|
242
|
-
i0.ɵɵlistener("change", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(
|
|
232
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
233
|
+
i0.ɵɵelementStart(0, "div", 57)(1, "input", 60);
|
|
234
|
+
i0.ɵɵlistener("change", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r11); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.checked)); });
|
|
243
235
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(2, "label",
|
|
236
|
+
i0.ɵɵelementStart(2, "label", 61);
|
|
245
237
|
i0.ɵɵtext(3, "Enabled");
|
|
246
238
|
i0.ɵɵelementEnd()();
|
|
247
239
|
} if (rf & 2) {
|
|
248
|
-
const
|
|
240
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
249
241
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
250
242
|
i0.ɵɵadvance();
|
|
251
|
-
i0.ɵɵproperty("id", "param-" +
|
|
243
|
+
i0.ɵɵproperty("id", "param-" + config_r9.name)("checked", ctx_r1.ParameterValues[config_r9.name]);
|
|
252
244
|
i0.ɵɵadvance();
|
|
253
|
-
i0.ɵɵproperty("for", "param-" +
|
|
245
|
+
i0.ɵɵproperty("for", "param-" + config_r9.name);
|
|
254
246
|
} }
|
|
255
247
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
256
|
-
const
|
|
257
|
-
i0.ɵɵelementStart(0, "
|
|
258
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
259
|
-
i0.ɵɵlistener("
|
|
248
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
249
|
+
i0.ɵɵelementStart(0, "mj-numeric-input", 62);
|
|
250
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_mj_numeric_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
|
|
251
|
+
i0.ɵɵlistener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template_mj_numeric_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r12); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event)); });
|
|
260
252
|
i0.ɵɵelementEnd();
|
|
261
253
|
} if (rf & 2) {
|
|
262
|
-
const
|
|
254
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
263
255
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
264
|
-
i0.ɵɵproperty("
|
|
265
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[
|
|
256
|
+
i0.ɵɵproperty("Step", config_r9.type === "integer" ? 1 : 0.1);
|
|
257
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
|
|
266
258
|
} }
|
|
267
259
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
268
|
-
const
|
|
269
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
270
|
-
i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(
|
|
260
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
261
|
+
i0.ɵɵelementStart(0, "textarea", 63);
|
|
262
|
+
i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r13); const config_r9 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onTextareaChange(config_r9.name, $event.target.value, config_r9)); });
|
|
271
263
|
i0.ɵɵelementEnd();
|
|
272
264
|
i0.ɵɵelementStart(1, "span", 30);
|
|
273
265
|
i0.ɵɵtext(2, "Enter valid JSON");
|
|
274
266
|
i0.ɵɵelementEnd();
|
|
275
267
|
} if (rf & 2) {
|
|
276
|
-
const
|
|
268
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
277
269
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
278
|
-
i0.ɵɵproperty("placeholder", i0.ɵɵinterpolate1("Enter JSON ",
|
|
270
|
+
i0.ɵɵproperty("placeholder", i0.ɵɵinterpolate1("Enter JSON ", config_r9.type, "..."))("value", ctx_r1.getTextareaValue(config_r9.name));
|
|
279
271
|
} }
|
|
280
272
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
281
|
-
const
|
|
282
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
283
|
-
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(
|
|
284
|
-
i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(
|
|
273
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
274
|
+
i0.ɵɵelementStart(0, "textarea", 66);
|
|
275
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r14); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
|
|
276
|
+
i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template_textarea_input_0_listener($event) { i0.ɵɵrestoreView(_r14); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.value)); });
|
|
285
277
|
i0.ɵɵelementEnd();
|
|
286
278
|
} if (rf & 2) {
|
|
287
|
-
const
|
|
279
|
+
const config_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
288
280
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
289
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[
|
|
290
|
-
i0.ɵɵproperty("placeholder",
|
|
281
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
|
|
282
|
+
i0.ɵɵproperty("placeholder", config_r9.description || "Enter value...");
|
|
291
283
|
} }
|
|
292
284
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
293
|
-
const
|
|
294
|
-
i0.ɵɵelementStart(0, "
|
|
295
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
296
|
-
i0.ɵɵlistener("
|
|
285
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
286
|
+
i0.ɵɵelementStart(0, "input", 67);
|
|
287
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.ParameterValues[config_r9.name], $event) || (ctx_r1.ParameterValues[config_r9.name] = $event); return i0.ɵɵresetView($event); });
|
|
288
|
+
i0.ɵɵlistener("input", function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r15); const config_r9 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onParameterChange(config_r9.name, $event.target.value)); });
|
|
297
289
|
i0.ɵɵelementEnd();
|
|
298
290
|
} if (rf & 2) {
|
|
299
|
-
const
|
|
291
|
+
const config_r9 = i0.ɵɵnextContext(2).$implicit;
|
|
300
292
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
301
|
-
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[
|
|
302
|
-
i0.ɵɵproperty("placeholder",
|
|
293
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ParameterValues[config_r9.name]);
|
|
294
|
+
i0.ɵɵproperty("placeholder", config_r9.description || "Enter value...");
|
|
303
295
|
} }
|
|
304
296
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
305
|
-
i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template, 1, 2, "textarea",
|
|
297
|
+
i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_0_Template, 1, 2, "textarea", 64)(1, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Conditional_1_Template, 1, 2, "input", 65);
|
|
306
298
|
} if (rf & 2) {
|
|
307
|
-
const
|
|
299
|
+
const config_r9 = i0.ɵɵnextContext().$implicit;
|
|
308
300
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
309
|
-
i0.ɵɵconditional(ctx_r1.isTextarea(
|
|
301
|
+
i0.ɵɵconditional(ctx_r1.isTextarea(config_r9) ? 0 : 1);
|
|
310
302
|
} }
|
|
311
303
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
312
|
-
i0.ɵɵelementStart(0, "div",
|
|
304
|
+
i0.ɵɵelementStart(0, "div", 53)(1, "label", 54);
|
|
313
305
|
i0.ɵɵtext(2);
|
|
314
|
-
i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template, 2, 0, "span",
|
|
306
|
+
i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_3_Template, 2, 0, "span", 26);
|
|
315
307
|
i0.ɵɵelementEnd();
|
|
316
|
-
i0.ɵɵconditionalCreate(4, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template, 2, 1, "p",
|
|
317
|
-
i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template, 1, 3, "
|
|
308
|
+
i0.ɵɵconditionalCreate(4, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_4_Template, 2, 1, "p", 55);
|
|
309
|
+
i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_5_Template, 1, 3, "mj-dropdown", 56)(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_6_Template, 4, 3, "div", 57)(7, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_7_Template, 1, 2, "mj-numeric-input", 58)(8, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_8_Template, 3, 3)(9, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Conditional_9_Template, 2, 1);
|
|
318
310
|
i0.ɵɵelementEnd();
|
|
319
311
|
} if (rf & 2) {
|
|
320
|
-
const
|
|
321
|
-
i0.ɵɵclassProp("required",
|
|
312
|
+
const config_r9 = ctx.$implicit;
|
|
313
|
+
i0.ɵɵclassProp("required", config_r9.required);
|
|
322
314
|
i0.ɵɵadvance(2);
|
|
323
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
315
|
+
i0.ɵɵtextInterpolate1(" ", config_r9.name, " ");
|
|
324
316
|
i0.ɵɵadvance();
|
|
325
|
-
i0.ɵɵconditional(
|
|
317
|
+
i0.ɵɵconditional(config_r9.required ? 3 : -1);
|
|
326
318
|
i0.ɵɵadvance();
|
|
327
|
-
i0.ɵɵconditional(
|
|
319
|
+
i0.ɵɵconditional(config_r9.description ? 4 : -1);
|
|
328
320
|
i0.ɵɵadvance();
|
|
329
|
-
i0.ɵɵconditional(
|
|
321
|
+
i0.ɵɵconditional(config_r9.enumValues.length > 0 ? 5 : config_r9.type === "boolean" ? 6 : config_r9.type === "number" || config_r9.type === "integer" ? 7 : config_r9.type === "array" || config_r9.type === "object" ? 8 : 9);
|
|
330
322
|
} }
|
|
331
323
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
-
i0.ɵɵelementStart(0, "div",
|
|
324
|
+
i0.ɵɵelementStart(0, "div", 49)(1, "h4", 51);
|
|
333
325
|
i0.ɵɵtext(2, "Parameters");
|
|
334
326
|
i0.ɵɵelementEnd();
|
|
335
|
-
i0.ɵɵrepeaterCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template, 10, 6, "div",
|
|
327
|
+
i0.ɵɵrepeaterCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_For_4_Template, 10, 6, "div", 52, _forTrack0);
|
|
336
328
|
i0.ɵɵelementEnd();
|
|
337
329
|
} if (rf & 2) {
|
|
338
330
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -340,21 +332,21 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_
|
|
|
340
332
|
i0.ɵɵrepeater(ctx_r1.ParameterConfigs);
|
|
341
333
|
} }
|
|
342
334
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
343
|
-
i0.ɵɵelementStart(0, "div",
|
|
335
|
+
i0.ɵɵelementStart(0, "div", 17)(1, "div", 42)(2, "div", 43)(3, "h3", 44);
|
|
344
336
|
i0.ɵɵelement(4, "i", 33);
|
|
345
337
|
i0.ɵɵtext(5);
|
|
346
338
|
i0.ɵɵelementEnd();
|
|
347
|
-
i0.ɵɵconditionalCreate(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template, 2, 1, "p",
|
|
339
|
+
i0.ɵɵconditionalCreate(6, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_6_Template, 2, 1, "p", 45);
|
|
348
340
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(7, "div",
|
|
350
|
-
i0.ɵɵelement(9, "i",
|
|
341
|
+
i0.ɵɵelementStart(7, "div", 46)(8, "span", 47);
|
|
342
|
+
i0.ɵɵelement(9, "i", 25);
|
|
351
343
|
i0.ɵɵtext(10);
|
|
352
344
|
i0.ɵɵelementEnd();
|
|
353
|
-
i0.ɵɵelementStart(11, "span",
|
|
345
|
+
i0.ɵɵelementStart(11, "span", 47);
|
|
354
346
|
i0.ɵɵelement(12, "i", 28);
|
|
355
347
|
i0.ɵɵtext(13);
|
|
356
348
|
i0.ɵɵelementEnd()()();
|
|
357
|
-
i0.ɵɵconditionalCreate(14, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template, 4, 0, "div",
|
|
349
|
+
i0.ɵɵconditionalCreate(14, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_14_Template, 4, 0, "div", 48)(15, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Conditional_15_Template, 5, 0, "div", 49);
|
|
358
350
|
i0.ɵɵelementEnd();
|
|
359
351
|
} if (rf & 2) {
|
|
360
352
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -370,19 +362,19 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template(rf, ct
|
|
|
370
362
|
i0.ɵɵconditional(ctx_r1.ParameterConfigs.length === 0 ? 14 : 15);
|
|
371
363
|
} }
|
|
372
364
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
-
i0.ɵɵelement(0, "i",
|
|
374
|
-
i0.ɵɵelementStart(1, "span",
|
|
365
|
+
i0.ɵɵelement(0, "i", 50);
|
|
366
|
+
i0.ɵɵelementStart(1, "span", 77);
|
|
375
367
|
i0.ɵɵtext(2, "Execution Successful");
|
|
376
368
|
i0.ɵɵelementEnd();
|
|
377
369
|
} }
|
|
378
370
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
379
|
-
i0.ɵɵelement(0, "i",
|
|
380
|
-
i0.ɵɵelementStart(1, "span",
|
|
371
|
+
i0.ɵɵelement(0, "i", 78);
|
|
372
|
+
i0.ɵɵelementStart(1, "span", 77);
|
|
381
373
|
i0.ɵɵtext(2, "Execution Failed");
|
|
382
374
|
i0.ɵɵelementEnd();
|
|
383
375
|
} }
|
|
384
376
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
385
|
-
i0.ɵɵelementStart(0, "span",
|
|
377
|
+
i0.ɵɵelementStart(0, "span", 70);
|
|
386
378
|
i0.ɵɵtext(1);
|
|
387
379
|
i0.ɵɵelementEnd();
|
|
388
380
|
} if (rf & 2) {
|
|
@@ -391,11 +383,11 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_T
|
|
|
391
383
|
i0.ɵɵtextInterpolate1("", ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.DurationMs, "ms");
|
|
392
384
|
} }
|
|
393
385
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
394
|
-
i0.ɵɵelementStart(0, "div",
|
|
395
|
-
i0.ɵɵelement(2, "i",
|
|
386
|
+
i0.ɵɵelementStart(0, "div", 75)(1, "h4");
|
|
387
|
+
i0.ɵɵelement(2, "i", 39);
|
|
396
388
|
i0.ɵɵtext(3, " Error");
|
|
397
389
|
i0.ɵɵelementEnd();
|
|
398
|
-
i0.ɵɵelementStart(4, "pre",
|
|
390
|
+
i0.ɵɵelementStart(4, "pre", 79);
|
|
399
391
|
i0.ɵɵtext(5);
|
|
400
392
|
i0.ɵɵelementEnd()();
|
|
401
393
|
} if (rf & 2) {
|
|
@@ -404,17 +396,17 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_
|
|
|
404
396
|
i0.ɵɵtextInterpolate(ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.ErrorMessage);
|
|
405
397
|
} }
|
|
406
398
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
407
|
-
const
|
|
408
|
-
i0.ɵɵelementStart(0, "div",
|
|
409
|
-
i0.ɵɵelement(3, "i",
|
|
399
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
400
|
+
i0.ɵɵelementStart(0, "div", 76)(1, "div", 80)(2, "h4");
|
|
401
|
+
i0.ɵɵelement(3, "i", 81);
|
|
410
402
|
i0.ɵɵtext(4, " Result");
|
|
411
403
|
i0.ɵɵelementEnd();
|
|
412
|
-
i0.ɵɵelementStart(5, "button",
|
|
413
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template_button_click_5_listener() { i0.ɵɵrestoreView(
|
|
414
|
-
i0.ɵɵelement(6, "i",
|
|
404
|
+
i0.ɵɵelementStart(5, "button", 82);
|
|
405
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.copyResult()); });
|
|
406
|
+
i0.ɵɵelement(6, "i", 83);
|
|
415
407
|
i0.ɵɵelementEnd()();
|
|
416
|
-
i0.ɵɵelementStart(7, "div",
|
|
417
|
-
i0.ɵɵelement(8, "mj-code-editor",
|
|
408
|
+
i0.ɵɵelementStart(7, "div", 84);
|
|
409
|
+
i0.ɵɵelement(8, "mj-code-editor", 85);
|
|
418
410
|
i0.ɵɵelementEnd()();
|
|
419
411
|
} if (rf & 2) {
|
|
420
412
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -422,30 +414,30 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_
|
|
|
422
414
|
i0.ɵɵproperty("ngModel", ctx_r1.FormattedResult)("language", "json")("readonly", true);
|
|
423
415
|
} }
|
|
424
416
|
function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template(rf, ctx) { if (rf & 1) {
|
|
425
|
-
i0.ɵɵelementStart(0, "div",
|
|
417
|
+
i0.ɵɵelementStart(0, "div", 18)(1, "div", 68)(2, "div", 69);
|
|
426
418
|
i0.ɵɵconditionalCreate(3, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_3_Template, 3, 0)(4, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_4_Template, 3, 0);
|
|
427
|
-
i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template, 2, 1, "span",
|
|
419
|
+
i0.ɵɵconditionalCreate(5, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_5_Template, 2, 1, "span", 70);
|
|
428
420
|
i0.ɵɵelementEnd();
|
|
429
|
-
i0.ɵɵelementStart(6, "div",
|
|
421
|
+
i0.ɵɵelementStart(6, "div", 71)(7, "div", 72)(8, "span", 73);
|
|
430
422
|
i0.ɵɵtext(9, "Tool:");
|
|
431
423
|
i0.ɵɵelementEnd();
|
|
432
|
-
i0.ɵɵelementStart(10, "span",
|
|
424
|
+
i0.ɵɵelementStart(10, "span", 74);
|
|
433
425
|
i0.ɵɵtext(11);
|
|
434
426
|
i0.ɵɵelementEnd()();
|
|
435
|
-
i0.ɵɵelementStart(12, "div",
|
|
427
|
+
i0.ɵɵelementStart(12, "div", 72)(13, "span", 73);
|
|
436
428
|
i0.ɵɵtext(14, "Server:");
|
|
437
429
|
i0.ɵɵelementEnd();
|
|
438
|
-
i0.ɵɵelementStart(15, "span",
|
|
430
|
+
i0.ɵɵelementStart(15, "span", 74);
|
|
439
431
|
i0.ɵɵtext(16);
|
|
440
432
|
i0.ɵɵelementEnd()();
|
|
441
|
-
i0.ɵɵelementStart(17, "div",
|
|
433
|
+
i0.ɵɵelementStart(17, "div", 72)(18, "span", 73);
|
|
442
434
|
i0.ɵɵtext(19, "Connection:");
|
|
443
435
|
i0.ɵɵelementEnd();
|
|
444
|
-
i0.ɵɵelementStart(20, "span",
|
|
436
|
+
i0.ɵɵelementStart(20, "span", 74);
|
|
445
437
|
i0.ɵɵtext(21);
|
|
446
438
|
i0.ɵɵelementEnd()()();
|
|
447
|
-
i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template, 6, 1, "div",
|
|
448
|
-
i0.ɵɵconditionalCreate(23, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template, 9, 3, "div",
|
|
439
|
+
i0.ɵɵconditionalCreate(22, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_22_Template, 6, 1, "div", 75);
|
|
440
|
+
i0.ɵɵconditionalCreate(23, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Conditional_23_Template, 9, 3, "div", 76);
|
|
449
441
|
i0.ɵɵelementEnd()();
|
|
450
442
|
} if (rf & 2) {
|
|
451
443
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -467,14 +459,14 @@ function MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template(rf, ct
|
|
|
467
459
|
i0.ɵɵconditional((ctx_r1.ExecutionResult == null ? null : ctx_r1.ExecutionResult.Result) ? 23 : -1);
|
|
468
460
|
} }
|
|
469
461
|
function MCPTestToolDialogComponent_Conditional_1_Case_31_Template(rf, ctx) { if (rf & 1) {
|
|
470
|
-
const
|
|
471
|
-
i0.ɵɵelementStart(0, "button",
|
|
472
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
473
|
-
i0.ɵɵelement(1, "i",
|
|
462
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
463
|
+
i0.ɵɵelementStart(0, "button", 86);
|
|
464
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.proceedToConfig()); });
|
|
465
|
+
i0.ɵɵelement(1, "i", 87);
|
|
474
466
|
i0.ɵɵtext(2, " Next ");
|
|
475
467
|
i0.ɵɵelementEnd();
|
|
476
|
-
i0.ɵɵelementStart(3, "button",
|
|
477
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
468
|
+
i0.ɵɵelementStart(3, "button", 88);
|
|
469
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_31_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r17); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
478
470
|
i0.ɵɵtext(4, "Cancel");
|
|
479
471
|
i0.ɵɵelementEnd();
|
|
480
472
|
} if (rf & 2) {
|
|
@@ -482,22 +474,22 @@ function MCPTestToolDialogComponent_Conditional_1_Case_31_Template(rf, ctx) { if
|
|
|
482
474
|
i0.ɵɵproperty("disabled", !ctx_r1.CanProceedToConfig);
|
|
483
475
|
} }
|
|
484
476
|
function MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
485
|
-
i0.ɵɵelement(0, "i",
|
|
477
|
+
i0.ɵɵelement(0, "i", 90);
|
|
486
478
|
i0.ɵɵtext(1, " Executing... ");
|
|
487
479
|
} }
|
|
488
480
|
function MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
489
|
-
i0.ɵɵelement(0, "i",
|
|
481
|
+
i0.ɵɵelement(0, "i", 91);
|
|
490
482
|
i0.ɵɵtext(1, " Execute Tool ");
|
|
491
483
|
} }
|
|
492
484
|
function MCPTestToolDialogComponent_Conditional_1_Case_32_Template(rf, ctx) { if (rf & 1) {
|
|
493
|
-
const
|
|
494
|
-
i0.ɵɵelementStart(0, "button",
|
|
495
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
485
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
486
|
+
i0.ɵɵelementStart(0, "button", 86);
|
|
487
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.executeTool()); });
|
|
496
488
|
i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_1_Template, 2, 0)(2, MCPTestToolDialogComponent_Conditional_1_Case_32_Conditional_2_Template, 2, 0);
|
|
497
489
|
i0.ɵɵelementEnd();
|
|
498
|
-
i0.ɵɵelementStart(3, "button",
|
|
499
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
500
|
-
i0.ɵɵelement(4, "i",
|
|
490
|
+
i0.ɵɵelementStart(3, "button", 88);
|
|
491
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_32_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r18); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
|
|
492
|
+
i0.ɵɵelement(4, "i", 89);
|
|
501
493
|
i0.ɵɵtext(5, " Back ");
|
|
502
494
|
i0.ɵɵelementEnd();
|
|
503
495
|
} if (rf & 2) {
|
|
@@ -507,60 +499,60 @@ function MCPTestToolDialogComponent_Conditional_1_Case_32_Template(rf, ctx) { if
|
|
|
507
499
|
i0.ɵɵconditional(ctx_r1.IsExecuting ? 1 : 2);
|
|
508
500
|
} }
|
|
509
501
|
function MCPTestToolDialogComponent_Conditional_1_Case_33_Template(rf, ctx) { if (rf & 1) {
|
|
510
|
-
const
|
|
511
|
-
i0.ɵɵelementStart(0, "button",
|
|
512
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(
|
|
513
|
-
i0.ɵɵelement(1, "i",
|
|
502
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
503
|
+
i0.ɵɵelementStart(0, "button", 92);
|
|
504
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.runAgain()); });
|
|
505
|
+
i0.ɵɵelement(1, "i", 93);
|
|
514
506
|
i0.ɵɵtext(2, " Run Again ");
|
|
515
507
|
i0.ɵɵelementEnd();
|
|
516
|
-
i0.ɵɵelementStart(3, "button",
|
|
517
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(
|
|
518
|
-
i0.ɵɵelement(4, "i",
|
|
508
|
+
i0.ɵɵelementStart(3, "button", 88);
|
|
509
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.goBack()); });
|
|
510
|
+
i0.ɵɵelement(4, "i", 89);
|
|
519
511
|
i0.ɵɵtext(5, " Edit Parameters ");
|
|
520
512
|
i0.ɵɵelementEnd();
|
|
521
|
-
i0.ɵɵelementStart(6, "button",
|
|
522
|
-
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_6_listener() { i0.ɵɵrestoreView(
|
|
513
|
+
i0.ɵɵelementStart(6, "button", 88);
|
|
514
|
+
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Case_33_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
523
515
|
i0.ɵɵtext(7, "Close");
|
|
524
516
|
i0.ɵɵelementEnd();
|
|
525
517
|
} }
|
|
526
518
|
function MCPTestToolDialogComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
527
519
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
528
|
-
i0.ɵɵelementStart(0, "div",
|
|
529
|
-
i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template, 2, 2, "div",
|
|
530
|
-
i0.ɵɵelementStart(2, "div",
|
|
531
|
-
i0.ɵɵelement(4, "i",
|
|
520
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
521
|
+
i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Conditional_1_Template, 2, 2, "div", 5);
|
|
522
|
+
i0.ɵɵelementStart(2, "div", 6)(3, "h2", 7);
|
|
523
|
+
i0.ɵɵelement(4, "i", 8);
|
|
532
524
|
i0.ɵɵtext(5, " Test MCP Tool ");
|
|
533
525
|
i0.ɵɵelementEnd();
|
|
534
|
-
i0.ɵɵelementStart(6, "button",
|
|
526
|
+
i0.ɵɵelementStart(6, "button", 9);
|
|
535
527
|
i0.ɵɵlistener("click", function MCPTestToolDialogComponent_Conditional_1_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDialog()); });
|
|
536
|
-
i0.ɵɵelement(7, "i",
|
|
528
|
+
i0.ɵɵelement(7, "i", 10);
|
|
537
529
|
i0.ɵɵelementEnd()();
|
|
538
|
-
i0.ɵɵelementStart(8, "div",
|
|
530
|
+
i0.ɵɵelementStart(8, "div", 11)(9, "div", 12)(10, "span", 13);
|
|
539
531
|
i0.ɵɵtext(11, "1");
|
|
540
532
|
i0.ɵɵelementEnd();
|
|
541
|
-
i0.ɵɵelementStart(12, "span",
|
|
533
|
+
i0.ɵɵelementStart(12, "span", 14);
|
|
542
534
|
i0.ɵɵtext(13, "Select Tool");
|
|
543
535
|
i0.ɵɵelementEnd()();
|
|
544
|
-
i0.ɵɵelement(14, "div",
|
|
545
|
-
i0.ɵɵelementStart(15, "div",
|
|
536
|
+
i0.ɵɵelement(14, "div", 15);
|
|
537
|
+
i0.ɵɵelementStart(15, "div", 12)(16, "span", 13);
|
|
546
538
|
i0.ɵɵtext(17, "2");
|
|
547
539
|
i0.ɵɵelementEnd();
|
|
548
|
-
i0.ɵɵelementStart(18, "span",
|
|
540
|
+
i0.ɵɵelementStart(18, "span", 14);
|
|
549
541
|
i0.ɵɵtext(19, "Configure");
|
|
550
542
|
i0.ɵɵelementEnd()();
|
|
551
|
-
i0.ɵɵelement(20, "div",
|
|
552
|
-
i0.ɵɵelementStart(21, "div",
|
|
543
|
+
i0.ɵɵelement(20, "div", 15);
|
|
544
|
+
i0.ɵɵelementStart(21, "div", 12)(22, "span", 13);
|
|
553
545
|
i0.ɵɵtext(23, "3");
|
|
554
546
|
i0.ɵɵelementEnd();
|
|
555
|
-
i0.ɵɵelementStart(24, "span",
|
|
547
|
+
i0.ɵɵelementStart(24, "span", 14);
|
|
556
548
|
i0.ɵɵtext(25, "Results");
|
|
557
549
|
i0.ɵɵelementEnd()()();
|
|
558
|
-
i0.ɵɵelementStart(26, "div",
|
|
559
|
-
i0.ɵɵconditionalCreate(27, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template,
|
|
560
|
-
i0.ɵɵconditionalCreate(28, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template, 16, 5, "div",
|
|
561
|
-
i0.ɵɵconditionalCreate(29, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template, 24, 11, "div",
|
|
550
|
+
i0.ɵɵelementStart(26, "div", 16);
|
|
551
|
+
i0.ɵɵconditionalCreate(27, MCPTestToolDialogComponent_Conditional_1_Conditional_27_Template, 33, 18, "div", 17);
|
|
552
|
+
i0.ɵɵconditionalCreate(28, MCPTestToolDialogComponent_Conditional_1_Conditional_28_Template, 16, 5, "div", 17);
|
|
553
|
+
i0.ɵɵconditionalCreate(29, MCPTestToolDialogComponent_Conditional_1_Conditional_29_Template, 24, 11, "div", 18);
|
|
562
554
|
i0.ɵɵelementEnd();
|
|
563
|
-
i0.ɵɵelementStart(30, "div",
|
|
555
|
+
i0.ɵɵelementStart(30, "div", 19);
|
|
564
556
|
i0.ɵɵconditionalCreate(31, MCPTestToolDialogComponent_Conditional_1_Case_31_Template, 5, 1)(32, MCPTestToolDialogComponent_Conditional_1_Case_32_Template, 6, 2)(33, MCPTestToolDialogComponent_Conditional_1_Case_33_Template, 8, 0);
|
|
565
557
|
i0.ɵɵelementEnd()();
|
|
566
558
|
} if (rf & 2) {
|
|
@@ -1239,14 +1231,14 @@ export class MCPTestToolDialogComponent {
|
|
|
1239
1231
|
static ɵfac = function MCPTestToolDialogComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MCPTestToolDialogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
1240
1232
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MCPTestToolDialogComponent, selectors: [["mj-mcp-test-tool-dialog"]], hostBindings: function MCPTestToolDialogComponent_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1241
1233
|
i0.ɵɵlistener("mousemove", function MCPTestToolDialogComponent_mousemove_HostBindingHandler($event) { return ctx.onMouseMove($event); }, i0.ɵɵresolveDocument)("mouseup", function MCPTestToolDialogComponent_mouseup_HostBindingHandler() { return ctx.onMouseUp(); }, i0.ɵɵresolveDocument)("resize", function MCPTestToolDialogComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, i0.ɵɵresolveWindow);
|
|
1242
|
-
} }, inputs: { Visible: "Visible", Servers: "Servers", Connections: "Connections", Tools: "Tools", SelectedServerID: "SelectedServerID", SelectedConnectionID: "SelectedConnectionID", SelectedToolID: "SelectedToolID" }, outputs: { Close: "Close" }, standalone: false, decls: 2, vars: 2, consts: [[1, "panel-backdrop"], [1, "slide-out-panel", 3, "width", "mobile", "resizing"], [1, "panel-backdrop", 3, "click"], [1, "slide-out-panel"], ["title", "Drag to resize", 1, "resize-handle", 3, "active"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-flask"], ["title", "Close", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "step-indicator"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "panel-content"], [1, "step-content"], [1, "step-content", "results-step"], [1, "panel-actions"], ["title", "Drag to resize", 1, "resize-handle", 3, "mousedown"], [1, "resize-grip"], [1, "selection-form"], [1, "form-group"], [1, "form-label"], [1, "fa-solid", "fa-server"], [1, "required"], ["
|
|
1243
|
-
i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_0_Template, 1, 0, "div",
|
|
1244
|
-
i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Template, 34, 26, "div",
|
|
1234
|
+
} }, inputs: { Visible: "Visible", Servers: "Servers", Connections: "Connections", Tools: "Tools", SelectedServerID: "SelectedServerID", SelectedConnectionID: "SelectedConnectionID", SelectedToolID: "SelectedToolID" }, outputs: { Close: "Close" }, standalone: false, decls: 2, vars: 2, consts: [["mjDropdownItem", ""], [1, "panel-backdrop"], [1, "slide-out-panel", 3, "width", "mobile", "resizing"], [1, "panel-backdrop", 3, "click"], [1, "slide-out-panel"], ["title", "Drag to resize", 1, "resize-handle", 3, "active"], [1, "panel-header"], [1, "panel-title"], [1, "fa-solid", "fa-flask"], ["title", "Close", 1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "step-indicator"], [1, "step"], [1, "step-number"], [1, "step-label"], [1, "step-connector"], [1, "panel-content"], [1, "step-content"], [1, "step-content", "results-step"], [1, "panel-actions"], ["title", "Drag to resize", 1, "resize-handle", 3, "mousedown"], [1, "resize-grip"], [1, "selection-form"], [1, "form-group"], [1, "form-label"], [1, "fa-solid", "fa-server"], [1, "required"], ["TextField", "Name", "ValueField", "ID", "Placeholder", "Select a server...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Filterable"], [1, "fa-solid", "fa-link"], ["TextField", "Name", "ValueField", "ID", "Placeholder", "Select a connection...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Disabled", "Filterable"], [1, "field-hint"], [1, "field-error"], [1, "field-hint", "auto-selected"], [1, "fa-solid", "fa-wrench"], ["TextField", "ToolTitle", "ValueField", "ID", "Placeholder", "Select a tool...", 3, "ngModelChange", "ValueChange", "FilterChange", "Data", "ValuePrimitive", "ngModel", "Disabled", "Filterable"], [1, "dropdown-item"], [1, "item-name"], [1, "item-status"], [1, "item-description"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "fa-solid", "fa-check"], [1, "dropdown-item", "tool-item"], [1, "tool-header"], [1, "tool-info"], [1, "tool-name"], [1, "tool-description"], [1, "tool-context"], [1, "context-item"], [1, "no-params"], [1, "parameters-form"], [1, "fa-solid", "fa-check-circle"], [1, "params-title"], [1, "param-group", 3, "required"], [1, "param-group"], [1, "param-label"], [1, "param-description"], [3, "Data", "ValuePrimitive", "ngModel"], [1, "checkbox-wrapper"], [3, "Step", "ngModel"], [3, "ngModelChange", "ValueChange", "Data", "ValuePrimitive", "ngModel"], ["type", "checkbox", 3, "change", "id", "checked"], [3, "for"], [3, "ngModelChange", "Step", "ngModel"], ["rows", "4", 1, "json-input", "mj-textarea", 3, "input", "value", "placeholder"], ["rows", "3", 1, "text-input", "mj-textarea", 3, "ngModel", "placeholder"], [1, "mj-input", 3, "ngModel", "placeholder"], ["rows", "3", 1, "text-input", "mj-textarea", 3, "ngModelChange", "input", "ngModel", "placeholder"], [1, "mj-input", 3, "ngModelChange", "input", "ngModel", "placeholder"], [1, "results-container"], [1, "result-header"], [1, "duration"], [1, "execution-info"], [1, "info-row"], [1, "info-label"], [1, "info-value"], [1, "error-panel"], [1, "result-panel", "fill-space"], [1, "result-status"], [1, "fa-solid", "fa-times-circle"], [1, "error-message"], [1, "result-panel-header"], [1, "fa-solid", "fa-code"], ["mjButton", "", "variant", "flat", "title", "Copy to clipboard", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "code-editor-container"], [3, "ngModel", "language", "readonly"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-arrow-right"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "fa-solid", "fa-redo"]], template: function MCPTestToolDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1235
|
+
i0.ɵɵconditionalCreate(0, MCPTestToolDialogComponent_Conditional_0_Template, 1, 0, "div", 1);
|
|
1236
|
+
i0.ɵɵconditionalCreate(1, MCPTestToolDialogComponent_Conditional_1_Template, 34, 26, "div", 2);
|
|
1245
1237
|
} if (rf & 2) {
|
|
1246
1238
|
i0.ɵɵconditional(ctx.Visible ? 0 : -1);
|
|
1247
1239
|
i0.ɵɵadvance();
|
|
1248
1240
|
i0.ɵɵconditional(ctx.Visible ? 1 : -1);
|
|
1249
|
-
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.ButtonComponent, i3.ItemTemplateDirective, i3.DropDownListComponent, i3.ValueTemplateDirective, i4.TextBoxComponent, i4.NumericTextBoxComponent, i5.CodeEditorComponent], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n\n\n.slide-out-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing[_ngcontent-%COMP%] {\n user-select: none;\n transition: none;\n}\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover, \n.resize-handle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-grip[_ngcontent-%COMP%], \n.resize-handle.active[_ngcontent-%COMP%] .resize-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%], \n.step.completed[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 100%;\n}\n\n.step-content.results-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n.selection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.field-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item[_ngcontent-%COMP%] {\n max-width: 100%;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.tool-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.tool-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.no-params[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input[_ngcontent-%COMP%], \n.text-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input[_ngcontent-%COMP%]:focus, \n.text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n\n\n.results-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 16px;\n}\n\n.duration[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] .code-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row[_ngcontent-%COMP%]:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .slide-out-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .step-connector[_ngcontent-%COMP%] {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .tool-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context[_ngcontent-%COMP%] {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .panel-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .step-number[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n}"], data: { animation: [
|
|
1241
|
+
} }, dependencies: [i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJDropdownComponent, i2.MJNumericInputComponent, i3.CodeEditorComponent], styles: ["\n\n\n\n\n\n\n.panel-backdrop[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n\n\n\n\n.slide-out-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing[_ngcontent-%COMP%] {\n user-select: none;\n transition: none;\n}\n\n\n\n\n\n.resize-handle[_ngcontent-%COMP%] {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover, \n.resize-handle.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip[_ngcontent-%COMP%] {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle[_ngcontent-%COMP%]:hover .resize-grip[_ngcontent-%COMP%], \n.resize-handle.active[_ngcontent-%COMP%] .resize-grip[_ngcontent-%COMP%] {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n\n\n\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n\n\n\n\n.step-indicator[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%], \n.step.completed[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.step-number[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed[_ngcontent-%COMP%] .step-number[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector[_ngcontent-%COMP%] {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n}\n\n\n\n\n\n.panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content[_ngcontent-%COMP%] {\n min-height: 100%;\n}\n\n.step-content.results-step[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n\n\n.selection-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.field-error[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.dropdown-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item[_ngcontent-%COMP%] {\n max-width: 100%;\n}\n\n.item-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.tool-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.tool-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.no-params[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required[_ngcontent-%COMP%] {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input[_ngcontent-%COMP%], \n.text-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input[_ngcontent-%COMP%]:focus, \n.text-input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n\n\n.results-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 16px;\n}\n\n.duration[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container[_ngcontent-%COMP%] {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space[_ngcontent-%COMP%] .code-editor-container[_ngcontent-%COMP%] {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n}\n\n.execution-info[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row[_ngcontent-%COMP%]:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.info-value[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n\n\n\n\n.panel-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n min-width: 100px;\n}\n\n.panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 6px;\n}\n\n\n\n\n\n@media (max-width: 768px) {\n .slide-out-panel[_ngcontent-%COMP%] {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle[_ngcontent-%COMP%] {\n display: none;\n }\n\n .step-indicator[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .step-connector[_ngcontent-%COMP%] {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .panel-content[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .tool-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context[_ngcontent-%COMP%] {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n\n .panel-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header[_ngcontent-%COMP%] {\n padding: 12px 16px;\n }\n\n .panel-title[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n\n .step-number[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name[_ngcontent-%COMP%] {\n font-size: 16px;\n }\n}"], data: { animation: [
|
|
1250
1242
|
trigger('slideIn', [
|
|
1251
1243
|
transition(':enter', [
|
|
1252
1244
|
style({ transform: 'translateX(100%)', opacity: 0 }),
|
|
@@ -1270,7 +1262,7 @@ export class MCPTestToolDialogComponent {
|
|
|
1270
1262
|
animate('200ms ease-in', style({ transform: 'translateX(100%)', opacity: 0 }))
|
|
1271
1263
|
])
|
|
1272
1264
|
])
|
|
1273
|
-
], template: "<!-- Backdrop -->\n@if (Visible) {\n <div class=\"panel-backdrop\" (click)=\"closeDialog()\"></div>\n}\n\n<!-- Slide-out Panel -->\n@if (Visible) {\n <div class=\"slide-out-panel\"\n @slideIn\n [style.width.px]=\"IsMobileMode ? null : PanelWidth\"\n [class.mobile]=\"IsMobileMode\"\n [class.resizing]=\"IsResizing\">\n <!-- Resize Handle (left edge) -->\n @if (!IsMobileMode) {\n <div class=\"resize-handle\"\n (mousedown)=\"onResizeStart($event)\"\n [class.active]=\"IsResizing\"\n title=\"Drag to resize\">\n <div class=\"resize-grip\"></div>\n </div>\n }\n <!-- Panel Header -->\n <div class=\"panel-header\">\n <h2 class=\"panel-title\">\n <i class=\"fa-solid fa-flask\"></i>\n Test MCP Tool\n </h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CurrentStep === 'select'\" [class.completed]=\"CurrentStep !== 'select'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Select Tool</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep !== 'select'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'configure'\" [class.completed]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Configure</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep === 'results'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Results</span>\n </div>\n </div>\n <!-- Panel Content -->\n <div class=\"panel-content\">\n <!-- Step 1: Select Server, Connection, Tool -->\n @if (CurrentStep === 'select') {\n <div class=\"step-content\">\n <div class=\"selection-form\">\n <!-- Server Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-server\"></i>\n Server\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayServers\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ServerID\"\n (valueChange)=\"onServerChange()\"\n [filterable]=\"true\"\n (filterChange)=\"onServerFilterChange($event)\"\n placeholder=\"Select a server...\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n <span class=\"item-status\" [class]=\"'status-' + dataItem.Status.toLowerCase()\">\n {{ dataItem.Status }}\n </span>\n </div>\n </ng-template>\n </kendo-dropdownlist>\n </div>\n <!-- Connection Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-link\"></i>\n Connection\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayConnections\"\n [textField]=\"'Name'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ConnectionID\"\n (valueChange)=\"onConnectionChange()\"\n [disabled]=\"!ServerID || NoConnectionsWarning !== null\"\n [filterable]=\"true\"\n (filterChange)=\"onConnectionFilterChange($event)\"\n placeholder=\"Select a connection...\">\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n @if (dataItem.Description) {\n <span class=\"item-description\">{{ dataItem.Description }}</span>\n }\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n @if (NoConnectionsWarning) {\n <span class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ NoConnectionsWarning }}\n </span>\n }\n @if (FilteredConnections.length === 1 && ConnectionID) {\n <span class=\"field-hint auto-selected\">\n <i class=\"fa-solid fa-check\"></i>\n Auto-selected (only connection available)\n </span>\n }\n </div>\n <!-- Tool Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-wrench\"></i>\n Tool\n <span class=\"required\">*</span>\n </label>\n <kendo-dropdownlist\n [data]=\"DisplayTools\"\n [textField]=\"'ToolTitle'\"\n [valueField]=\"'ID'\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ToolID\"\n (valueChange)=\"onToolChange()\"\n [disabled]=\"!ServerID\"\n [filterable]=\"true\"\n (filterChange)=\"onToolFilterChange($event)\"\n placeholder=\"Select a tool...\">\n <ng-template kendoDropDownListValueTemplate let-dataItem>\n {{ dataItem?.ToolTitle || dataItem?.ToolName || 'Select a tool...' }}\n </ng-template>\n <ng-template kendoDropDownListItemTemplate let-dataItem>\n <div class=\"dropdown-item tool-item\">\n <span class=\"item-name\">{{ dataItem.ToolTitle || dataItem.ToolName }}</span>\n @if (dataItem.ToolDescription) {\n <span class=\"item-description\">{{ dataItem.ToolDescription }}</span>\n }\n </div>\n </ng-template>\n </kendo-dropdownlist>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n </div>\n </div>\n </div>\n }\n <!-- Step 2: Configure Parameters -->\n @if (CurrentStep === 'configure') {\n <div class=\"step-content\">\n <div class=\"tool-header\">\n <div class=\"tool-info\">\n <h3 class=\"tool-name\">\n <i class=\"fa-solid fa-wrench\"></i>\n {{ SelectedTool?.ToolTitle || SelectedTool?.ToolName }}\n </h3>\n @if (SelectedTool?.ToolDescription) {\n <p class=\"tool-description\">{{ SelectedTool?.ToolDescription }}</p>\n }\n </div>\n <div class=\"tool-context\">\n <span class=\"context-item\">\n <i class=\"fa-solid fa-server\"></i>\n {{ SelectedServerName }}\n </span>\n <span class=\"context-item\">\n <i class=\"fa-solid fa-link\"></i>\n {{ SelectedConnectionName }}\n </span>\n </div>\n </div>\n @if (ParameterConfigs.length === 0) {\n <div class=\"no-params\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <p>This tool requires no parameters.</p>\n </div>\n } @else {\n <div class=\"parameters-form\">\n <h4 class=\"params-title\">Parameters</h4>\n @for (config of ParameterConfigs; track config.name) {\n <div class=\"param-group\" [class.required]=\"config.required\">\n <label class=\"param-label\">\n {{ config.name }}\n @if (config.required) {\n <span class=\"required\">*</span>\n }\n </label>\n @if (config.description) {\n <p class=\"param-description\">{{ config.description }}</p>\n }\n <!-- Enum/Select -->\n @if (config.enumValues.length > 0) {\n <kendo-dropdownlist\n [data]=\"config.enumValues\"\n [valuePrimitive]=\"true\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\">\n </kendo-dropdownlist>\n }\n <!-- Boolean -->\n @else if (config.type === 'boolean') {\n <div class=\"checkbox-wrapper\">\n <input type=\"checkbox\"\n [id]=\"'param-' + config.name\"\n [checked]=\"ParameterValues[config.name]\"\n (change)=\"onParameterChange(config.name, $any($event.target).checked)\">\n <label [for]=\"'param-' + config.name\">Enabled</label>\n </div>\n }\n <!-- Number/Integer -->\n @else if (config.type === 'number' || config.type === 'integer') {\n <kendo-numerictextbox\n [format]=\"config.type === 'integer' ? 'n0' : 'n'\"\n [step]=\"config.type === 'integer' ? 1 : 0.1\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\">\n </kendo-numerictextbox>\n }\n <!-- Array/Object (Textarea with JSON) -->\n @else if (config.type === 'array' || config.type === 'object') {\n <textarea class=\"json-input\"\n rows=\"4\"\n [value]=\"getTextareaValue(config.name)\"\n (input)=\"onTextareaChange(config.name, $any($event.target).value, config)\"\n placeholder=\"Enter JSON {{ config.type }}...\"></textarea>\n <span class=\"field-hint\">Enter valid JSON</span>\n }\n <!-- String (default) -->\n @else {\n @if (isTextarea(config)) {\n <textarea class=\"text-input\"\n rows=\"3\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\"></textarea>\n } @else {\n <kendo-textbox\n [(ngModel)]=\"ParameterValues[config.name]\"\n (valueChange)=\"onParameterChange(config.name, $event)\"\n [placeholder]=\"config.description || 'Enter value...'\">\n </kendo-textbox>\n }\n }\n </div>\n }\n </div>\n }\n</div>\n}\n<!-- Step 3: Results -->\n@if (CurrentStep === 'results') {\n <div class=\"step-content results-step\">\n <div class=\"results-container\">\n <!-- Success/Error Header -->\n <div class=\"result-header\" [class.success]=\"ExecutionResult?.Success\" [class.error]=\"!ExecutionResult?.Success\">\n @if (ExecutionResult?.Success) {\n <i class=\"fa-solid fa-check-circle\"></i>\n <span class=\"result-status\">Execution Successful</span>\n } @else {\n <i class=\"fa-solid fa-times-circle\"></i>\n <span class=\"result-status\">Execution Failed</span>\n }\n @if (ExecutionResult?.DurationMs) {\n <span class=\"duration\">{{ ExecutionResult?.DurationMs }}ms</span>\n }\n </div>\n <!-- Executed Tool Info (moved to top) -->\n <div class=\"execution-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Tool:</span>\n <span class=\"info-value\">{{ SelectedToolName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Server:</span>\n <span class=\"info-value\">{{ SelectedServerName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Connection:</span>\n <span class=\"info-value\">{{ SelectedConnectionName }}</span>\n </div>\n </div>\n <!-- Error Message -->\n @if (ExecutionResult?.ErrorMessage) {\n <div class=\"error-panel\">\n <h4><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h4>\n <pre class=\"error-message\">{{ ExecutionResult?.ErrorMessage }}</pre>\n </div>\n }\n <!-- Result Data (fills remaining space) -->\n @if (ExecutionResult?.Result) {\n <div class=\"result-panel fill-space\">\n <div class=\"result-panel-header\">\n <h4><i class=\"fa-solid fa-code\"></i> Result</h4>\n <button kendoButton fillMode=\"flat\" (click)=\"copyResult()\" title=\"Copy to clipboard\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [ngModel]=\"FormattedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </div>\n}\n</div>\n<!-- Panel Actions -->\n<div class=\"panel-actions\">\n @switch (CurrentStep) {\n @case ('select') {\n <button kendoButton themeColor=\"primary\" (click)=\"proceedToConfig()\" [disabled]=\"!CanProceedToConfig\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n Next\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"closeDialog()\">Cancel</button>\n }\n @case ('configure') {\n <button kendoButton themeColor=\"primary\" (click)=\"executeTool()\" [disabled]=\"!IsValid || IsExecuting\">\n @if (IsExecuting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Executing...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Execute Tool\n }\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n @case ('results') {\n <button kendoButton themeColor=\"primary\" (click)=\"runAgain()\">\n <i class=\"fa-solid fa-redo\"></i>\n Run Again\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Edit Parameters\n </button>\n <button kendoButton fillMode=\"flat\" (click)=\"closeDialog()\">Close</button>\n }\n }\n</div>\n</div>\n}\n", styles: ["/* MCP Test Tool Slide-Out Panel Styles */\n\n/* ========================================\n Backdrop\n ======================================== */\n.panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========================================\n Slide-Out Panel\n ======================================== */\n.slide-out-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing {\n user-select: none;\n transition: none;\n}\n\n/* ========================================\n Resize Handle\n ======================================== */\n.resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle:hover,\n.resize-handle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle:hover .resize-grip,\n.resize-handle.active .resize-grip {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n/* ========================================\n Panel Header\n ======================================== */\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn i {\n font-size: 18px;\n}\n\n/* ========================================\n Step Indicator\n ======================================== */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active,\n.step.completed {\n opacity: 1;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed {\n background: var(--mj-status-success);\n}\n\n/* ========================================\n Panel Content\n ======================================== */\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content {\n min-height: 100%;\n}\n\n.step-content.results-step {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* ========================================\n Selection Form (Step 1)\n ======================================== */\n.selection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected i {\n font-size: 11px;\n}\n\n.field-error {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error i {\n font-size: 13px;\n}\n\n/* Dropdown Item Styling */\n.dropdown-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item {\n max-width: 100%;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Tool Header (Step 2)\n ======================================== */\n.tool-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name i {\n color: var(--mj-brand-primary);\n}\n\n.tool-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item i {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Parameters Form (Step 2)\n ======================================== */\n.no-params {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params i {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params p {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper label {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input,\n.text-input {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input:focus,\n.text-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* ========================================\n Results (Step 3)\n ======================================== */\n.results-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success i {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error i {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status {\n flex: 1;\n font-size: 16px;\n}\n\n.duration {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space .code-editor-container {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container mj-code-editor {\n width: 100%;\n height: 100%;\n}\n\n.execution-info {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label {\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* ========================================\n Panel Actions\n ======================================== */\n.panel-actions {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions button {\n min-width: 100px;\n}\n\n.panel-actions button i {\n margin-right: 6px;\n}\n\n/* ========================================\n Responsive / Mobile\n ======================================== */\n@media (max-width: 768px) {\n .slide-out-panel {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle {\n display: none;\n }\n\n .step-indicator {\n padding: 12px 16px;\n }\n\n .step-connector {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label {\n display: none;\n }\n\n .panel-content {\n padding: 16px;\n }\n\n .tool-header {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n\n .panel-actions button {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header {\n padding: 12px 16px;\n }\n\n .panel-title {\n font-size: 16px;\n }\n\n .step-number {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name {\n font-size: 16px;\n }\n}\n"] }]
|
|
1265
|
+
], template: "<!-- Backdrop -->\n@if (Visible) {\n <div class=\"panel-backdrop\" (click)=\"closeDialog()\"></div>\n}\n\n<!-- Slide-out Panel -->\n@if (Visible) {\n <div class=\"slide-out-panel\"\n @slideIn\n [style.width.px]=\"IsMobileMode ? null : PanelWidth\"\n [class.mobile]=\"IsMobileMode\"\n [class.resizing]=\"IsResizing\">\n <!-- Resize Handle (left edge) -->\n @if (!IsMobileMode) {\n <div class=\"resize-handle\"\n (mousedown)=\"onResizeStart($event)\"\n [class.active]=\"IsResizing\"\n title=\"Drag to resize\">\n <div class=\"resize-grip\"></div>\n </div>\n }\n <!-- Panel Header -->\n <div class=\"panel-header\">\n <h2 class=\"panel-title\">\n <i class=\"fa-solid fa-flask\"></i>\n Test MCP Tool\n </h2>\n <button class=\"close-btn\" (click)=\"closeDialog()\" title=\"Close\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n <!-- Step Indicator -->\n <div class=\"step-indicator\">\n <div class=\"step\" [class.active]=\"CurrentStep === 'select'\" [class.completed]=\"CurrentStep !== 'select'\">\n <span class=\"step-number\">1</span>\n <span class=\"step-label\">Select Tool</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep !== 'select'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'configure'\" [class.completed]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">2</span>\n <span class=\"step-label\">Configure</span>\n </div>\n <div class=\"step-connector\" [class.completed]=\"CurrentStep === 'results'\"></div>\n <div class=\"step\" [class.active]=\"CurrentStep === 'results'\">\n <span class=\"step-number\">3</span>\n <span class=\"step-label\">Results</span>\n </div>\n </div>\n <!-- Panel Content -->\n <div class=\"panel-content\">\n <!-- Step 1: Select Server, Connection, Tool -->\n @if (CurrentStep === 'select') {\n <div class=\"step-content\">\n <div class=\"selection-form\">\n <!-- Server Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-server\"></i>\n Server\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayServers\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ServerID\"\n (ValueChange)=\"onServerChange()\"\n [Filterable]=\"true\"\n (FilterChange)=\"onServerFilterChange($event)\"\n Placeholder=\"Select a server...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n <span class=\"item-status\" [class]=\"'status-' + dataItem.Status.toLowerCase()\">\n {{ dataItem.Status }}\n </span>\n </div>\n </ng-template>\n </mj-dropdown>\n </div>\n <!-- Connection Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-link\"></i>\n Connection\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayConnections\"\n TextField=\"Name\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ConnectionID\"\n (ValueChange)=\"onConnectionChange()\"\n [Disabled]=\"!ServerID || NoConnectionsWarning !== null\"\n [Filterable]=\"true\"\n (FilterChange)=\"onConnectionFilterChange($event)\"\n Placeholder=\"Select a connection...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item\">\n <span class=\"item-name\">{{ dataItem.Name }}</span>\n @if (dataItem.Description) {\n <span class=\"item-description\">{{ dataItem.Description }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n @if (NoConnectionsWarning) {\n <span class=\"field-error\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ NoConnectionsWarning }}\n </span>\n }\n @if (FilteredConnections.length === 1 && ConnectionID) {\n <span class=\"field-hint auto-selected\">\n <i class=\"fa-solid fa-check\"></i>\n Auto-selected (only connection available)\n </span>\n }\n </div>\n <!-- Tool Selection -->\n <div class=\"form-group\">\n <label class=\"form-label\">\n <i class=\"fa-solid fa-wrench\"></i>\n Tool\n <span class=\"required\">*</span>\n </label>\n <mj-dropdown\n [Data]=\"DisplayTools\"\n TextField=\"ToolTitle\"\n ValueField=\"ID\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ToolID\"\n (ValueChange)=\"onToolChange()\"\n [Disabled]=\"!ServerID\"\n [Filterable]=\"true\"\n (FilterChange)=\"onToolFilterChange($event)\"\n Placeholder=\"Select a tool...\">\n <ng-template #mjDropdownItem let-dataItem>\n <div class=\"dropdown-item tool-item\">\n <span class=\"item-name\">{{ dataItem.ToolTitle || dataItem.ToolName }}</span>\n @if (dataItem.ToolDescription) {\n <span class=\"item-description\">{{ dataItem.ToolDescription }}</span>\n }\n </div>\n </ng-template>\n </mj-dropdown>\n @if (!ServerID) {\n <span class=\"field-hint\">Select a server first</span>\n }\n </div>\n </div>\n </div>\n }\n <!-- Step 2: Configure Parameters -->\n @if (CurrentStep === 'configure') {\n <div class=\"step-content\">\n <div class=\"tool-header\">\n <div class=\"tool-info\">\n <h3 class=\"tool-name\">\n <i class=\"fa-solid fa-wrench\"></i>\n {{ SelectedTool?.ToolTitle || SelectedTool?.ToolName }}\n </h3>\n @if (SelectedTool?.ToolDescription) {\n <p class=\"tool-description\">{{ SelectedTool?.ToolDescription }}</p>\n }\n </div>\n <div class=\"tool-context\">\n <span class=\"context-item\">\n <i class=\"fa-solid fa-server\"></i>\n {{ SelectedServerName }}\n </span>\n <span class=\"context-item\">\n <i class=\"fa-solid fa-link\"></i>\n {{ SelectedConnectionName }}\n </span>\n </div>\n </div>\n @if (ParameterConfigs.length === 0) {\n <div class=\"no-params\">\n <i class=\"fa-solid fa-check-circle\"></i>\n <p>This tool requires no parameters.</p>\n </div>\n } @else {\n <div class=\"parameters-form\">\n <h4 class=\"params-title\">Parameters</h4>\n @for (config of ParameterConfigs; track config.name) {\n <div class=\"param-group\" [class.required]=\"config.required\">\n <label class=\"param-label\">\n {{ config.name }}\n @if (config.required) {\n <span class=\"required\">*</span>\n }\n </label>\n @if (config.description) {\n <p class=\"param-description\">{{ config.description }}</p>\n }\n <!-- Enum/Select -->\n @if (config.enumValues.length > 0) {\n <mj-dropdown\n [Data]=\"config.enumValues\"\n [ValuePrimitive]=\"true\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (ValueChange)=\"onParameterChange(config.name, $any($event))\">\n </mj-dropdown>\n }\n <!-- Boolean -->\n @else if (config.type === 'boolean') {\n <div class=\"checkbox-wrapper\">\n <input type=\"checkbox\"\n [id]=\"'param-' + config.name\"\n [checked]=\"ParameterValues[config.name]\"\n (change)=\"onParameterChange(config.name, $any($event.target).checked)\">\n <label [for]=\"'param-' + config.name\">Enabled</label>\n </div>\n }\n <!-- Number/Integer -->\n @else if (config.type === 'number' || config.type === 'integer') {\n <mj-numeric-input\n [Step]=\"config.type === 'integer' ? 1 : 0.1\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (ngModelChange)=\"onParameterChange(config.name, $event)\">\n </mj-numeric-input>\n }\n <!-- Array/Object (Textarea with JSON) -->\n @else if (config.type === 'array' || config.type === 'object') {\n <textarea class=\"json-input mj-textarea\"\n rows=\"4\"\n [value]=\"getTextareaValue(config.name)\"\n (input)=\"onTextareaChange(config.name, $any($event.target).value, config)\"\n placeholder=\"Enter JSON {{ config.type }}...\"></textarea>\n <span class=\"field-hint\">Enter valid JSON</span>\n }\n <!-- String (default) -->\n @else {\n @if (isTextarea(config)) {\n <textarea class=\"text-input mj-textarea\"\n rows=\"3\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\"></textarea>\n } @else {\n <input class=\"mj-input\"\n [(ngModel)]=\"ParameterValues[config.name]\"\n (input)=\"onParameterChange(config.name, $any($event.target).value)\"\n [placeholder]=\"config.description || 'Enter value...'\" />\n }\n }\n </div>\n }\n </div>\n }\n</div>\n}\n<!-- Step 3: Results -->\n@if (CurrentStep === 'results') {\n <div class=\"step-content results-step\">\n <div class=\"results-container\">\n <!-- Success/Error Header -->\n <div class=\"result-header\" [class.success]=\"ExecutionResult?.Success\" [class.error]=\"!ExecutionResult?.Success\">\n @if (ExecutionResult?.Success) {\n <i class=\"fa-solid fa-check-circle\"></i>\n <span class=\"result-status\">Execution Successful</span>\n } @else {\n <i class=\"fa-solid fa-times-circle\"></i>\n <span class=\"result-status\">Execution Failed</span>\n }\n @if (ExecutionResult?.DurationMs) {\n <span class=\"duration\">{{ ExecutionResult?.DurationMs }}ms</span>\n }\n </div>\n <!-- Executed Tool Info -->\n <div class=\"execution-info\">\n <div class=\"info-row\">\n <span class=\"info-label\">Tool:</span>\n <span class=\"info-value\">{{ SelectedToolName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Server:</span>\n <span class=\"info-value\">{{ SelectedServerName }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"info-label\">Connection:</span>\n <span class=\"info-value\">{{ SelectedConnectionName }}</span>\n </div>\n </div>\n <!-- Error Message -->\n @if (ExecutionResult?.ErrorMessage) {\n <div class=\"error-panel\">\n <h4><i class=\"fa-solid fa-exclamation-triangle\"></i> Error</h4>\n <pre class=\"error-message\">{{ ExecutionResult?.ErrorMessage }}</pre>\n </div>\n }\n <!-- Result Data -->\n @if (ExecutionResult?.Result) {\n <div class=\"result-panel fill-space\">\n <div class=\"result-panel-header\">\n <h4><i class=\"fa-solid fa-code\"></i> Result</h4>\n <button mjButton variant=\"flat\" (click)=\"copyResult()\" title=\"Copy to clipboard\">\n <i class=\"fa-solid fa-copy\"></i>\n </button>\n </div>\n <div class=\"code-editor-container\">\n <mj-code-editor\n [ngModel]=\"FormattedResult\"\n [language]=\"'json'\"\n [readonly]=\"true\">\n </mj-code-editor>\n </div>\n </div>\n }\n </div>\n </div>\n}\n</div>\n<!-- Panel Actions -->\n<div class=\"panel-actions\">\n @switch (CurrentStep) {\n @case ('select') {\n <button mjButton variant=\"primary\" (click)=\"proceedToConfig()\" [disabled]=\"!CanProceedToConfig\">\n <i class=\"fa-solid fa-arrow-right\"></i>\n Next\n </button>\n <button mjButton variant=\"flat\" (click)=\"closeDialog()\">Cancel</button>\n }\n @case ('configure') {\n <button mjButton variant=\"primary\" (click)=\"executeTool()\" [disabled]=\"!IsValid || IsExecuting\">\n @if (IsExecuting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Executing...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Execute Tool\n }\n </button>\n <button mjButton variant=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Back\n </button>\n }\n @case ('results') {\n <button mjButton variant=\"primary\" (click)=\"runAgain()\">\n <i class=\"fa-solid fa-redo\"></i>\n Run Again\n </button>\n <button mjButton variant=\"flat\" (click)=\"goBack()\">\n <i class=\"fa-solid fa-arrow-left\"></i>\n Edit Parameters\n </button>\n <button mjButton variant=\"flat\" (click)=\"closeDialog()\">Close</button>\n }\n }\n</div>\n</div>\n}\n", styles: ["/* MCP Test Tool Slide-Out Panel Styles */\n\n/* ========================================\n Backdrop\n ======================================== */\n.panel-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n z-index: 1000;\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========================================\n Slide-Out Panel\n ======================================== */\n.slide-out-panel {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-surface);\n box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.slide-out-panel.mobile {\n width: 100% !important;\n left: 0;\n}\n\n.slide-out-panel.resizing {\n user-select: none;\n transition: none;\n}\n\n/* ========================================\n Resize Handle\n ======================================== */\n.resize-handle {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 6px;\n cursor: ew-resize;\n background: transparent;\n z-index: 10;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 0.15s ease;\n}\n\n.resize-handle:hover,\n.resize-handle.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.resize-grip {\n width: 3px;\n height: 40px;\n background: var(--mj-border-strong);\n border-radius: 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.resize-handle:hover .resize-grip,\n.resize-handle.active .resize-grip {\n opacity: 1;\n background: var(--mj-brand-primary);\n}\n\n/* ========================================\n Panel Header\n ======================================== */\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-title {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.panel-title i {\n color: var(--mj-brand-primary);\n}\n\n.close-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n border: none;\n background: transparent;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-muted);\n transition: all 0.15s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-primary);\n}\n\n.close-btn i {\n font-size: 18px;\n}\n\n/* ========================================\n Step Indicator\n ======================================== */\n.step-indicator {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 16px 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.step {\n display: flex;\n align-items: center;\n gap: 8px;\n opacity: 0.5;\n transition: opacity 0.2s ease;\n}\n\n.step.active,\n.step.completed {\n opacity: 1;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border-radius: 50%;\n background: var(--mj-border-default);\n color: var(--mj-text-muted);\n font-weight: 600;\n font-size: 13px;\n transition: all 0.2s ease;\n}\n\n.step.active .step-number {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.step.completed .step-number {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n}\n\n.step-label {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.step-connector {\n width: 40px;\n height: 2px;\n background: var(--mj-border-default);\n margin: 0 10px;\n transition: background 0.2s ease;\n}\n\n.step-connector.completed {\n background: var(--mj-status-success);\n}\n\n/* ========================================\n Panel Content\n ======================================== */\n.panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n display: flex;\n flex-direction: column;\n min-height: 0;\n}\n\n.step-content {\n min-height: 100%;\n}\n\n.step-content.results-step {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* ========================================\n Selection Form (Step 1)\n ======================================== */\n.selection-form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.form-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.form-label i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.required {\n color: var(--mj-status-error);\n font-weight: 600;\n}\n\n.field-hint {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n margin-top: 4px;\n}\n\n.field-hint.auto-selected {\n color: var(--mj-status-success);\n font-style: normal;\n}\n\n.field-hint.auto-selected i {\n font-size: 11px;\n}\n\n.field-error {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-status-error);\n margin-top: 4px;\n padding: 8px 10px;\n background: color-mix(in srgb, var(--mj-status-error) 8%, var(--mj-bg-surface));\n border-radius: 4px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n}\n\n.field-error i {\n font-size: 13px;\n}\n\n/* Dropdown Item Styling */\n.dropdown-item {\n display: flex;\n flex-direction: column;\n gap: 2px;\n padding: 4px 0;\n}\n\n.dropdown-item.tool-item {\n max-width: 100%;\n}\n\n.item-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n.item-description {\n font-size: 12px;\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100%;\n}\n\n.item-status {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.item-status.status-active {\n color: var(--mj-status-success);\n}\n\n.item-status.status-inactive {\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Tool Header (Step 2)\n ======================================== */\n.tool-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n margin-bottom: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.tool-info {\n flex: 1;\n min-width: 0;\n}\n\n.tool-name {\n display: flex;\n align-items: center;\n gap: 10px;\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.tool-name i {\n color: var(--mj-brand-primary);\n}\n\n.tool-description {\n margin: 0;\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.5;\n}\n\n.tool-context {\n display: flex;\n flex-direction: column;\n gap: 6px;\n align-items: flex-end;\n flex-shrink: 0;\n}\n\n.context-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n\n.context-item i {\n font-size: 11px;\n color: var(--mj-text-disabled);\n}\n\n/* ========================================\n Parameters Form (Step 2)\n ======================================== */\n.no-params {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n text-align: center;\n color: var(--mj-text-muted);\n}\n\n.no-params i {\n font-size: 48px;\n color: var(--mj-status-success);\n margin-bottom: 16px;\n}\n\n.no-params p {\n margin: 0;\n font-size: 15px;\n}\n\n.params-title {\n margin: 0 0 16px 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n.param-group {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n}\n\n.param-group.required {\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.param-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-description {\n margin: 0;\n font-size: 12px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n\n.checkbox-wrapper input[type=\"checkbox\"] {\n width: 18px;\n height: 18px;\n cursor: pointer;\n}\n\n.checkbox-wrapper label {\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n}\n\n.json-input,\n.text-input {\n width: 100%;\n padding: 10px 12px;\n font-family: 'Consolas', 'Monaco', monospace;\n font-size: 13px;\n line-height: 1.5;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n background: var(--mj-bg-surface);\n resize: vertical;\n box-sizing: border-box;\n}\n\n.json-input:focus,\n.text-input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 2px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* ========================================\n Results (Step 3)\n ======================================== */\n.results-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n flex: 1;\n min-height: 0;\n}\n\n.result-header {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px;\n border-radius: 8px;\n font-weight: 600;\n}\n\n.result-header.success {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n}\n\n.result-header.success i {\n font-size: 24px;\n color: var(--mj-status-success);\n}\n\n.result-header.error {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.result-header.error i {\n font-size: 24px;\n color: var(--mj-status-error);\n}\n\n.result-status {\n flex: 1;\n font-size: 16px;\n}\n\n.duration {\n font-size: 13px;\n font-weight: normal;\n color: var(--mj-text-muted);\n background: rgba(0, 0, 0, 0.05);\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.error-panel {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n padding: 16px;\n}\n\n.error-panel h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0 0 12px 0;\n font-size: 14px;\n color: var(--mj-status-error);\n}\n\n.error-message {\n margin: 0;\n padding: 12px;\n background: var(--mj-bg-surface);\n border-radius: 4px;\n font-family: monospace;\n font-size: 13px;\n line-height: 1.5;\n color: var(--mj-status-error);\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.result-panel {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.result-panel.fill-space {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 200px;\n}\n\n.result-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.result-panel-header h4 {\n display: flex;\n align-items: center;\n gap: 8px;\n margin: 0;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.code-editor-container {\n height: 300px;\n min-height: 200px;\n max-height: 400px;\n overflow: hidden;\n}\n\n.result-panel.fill-space .code-editor-container {\n flex: 1;\n height: auto;\n max-height: none;\n}\n\n.code-editor-container mj-code-editor {\n width: 100%;\n height: 100%;\n}\n\n.execution-info {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n border: 1px solid var(--mj-border-default);\n}\n\n.info-row {\n display: flex;\n justify-content: space-between;\n padding: 6px 0;\n font-size: 13px;\n}\n\n.info-row:not(:last-child) {\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.info-label {\n color: var(--mj-text-muted);\n}\n\n.info-value {\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n\n/* ========================================\n Panel Actions\n ======================================== */\n.panel-actions {\n display: flex;\n gap: 8px;\n padding: 16px 20px;\n background: var(--mj-bg-surface);\n border-top: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.panel-actions button {\n min-width: 100px;\n}\n\n.panel-actions button i {\n margin-right: 6px;\n}\n\n/* ========================================\n Responsive / Mobile\n ======================================== */\n@media (max-width: 768px) {\n .slide-out-panel {\n width: 100% !important;\n left: 0;\n }\n\n .resize-handle {\n display: none;\n }\n\n .step-indicator {\n padding: 12px 16px;\n }\n\n .step-connector {\n width: 20px;\n margin: 0 6px;\n }\n\n .step-label {\n display: none;\n }\n\n .panel-content {\n padding: 16px;\n }\n\n .tool-header {\n flex-direction: column;\n gap: 12px;\n }\n\n .tool-context {\n align-items: flex-start;\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n }\n\n .panel-actions {\n flex-wrap: wrap;\n }\n\n .panel-actions button {\n flex: 1;\n min-width: 80px;\n }\n}\n\n@media (max-width: 480px) {\n .panel-header {\n padding: 12px 16px;\n }\n\n .panel-title {\n font-size: 16px;\n }\n\n .step-number {\n width: 24px;\n height: 24px;\n font-size: 12px;\n }\n\n .tool-name {\n font-size: 16px;\n }\n}\n"] }]
|
|
1274
1266
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], { Visible: [{
|
|
1275
1267
|
type: Input
|
|
1276
1268
|
}], Servers: [{
|