import { Component, Input, Output, EventEmitter } from '@angular/core';
import { Metadata } from '@memberjunction/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@progress/kendo-angular-inputs";
import * as i3 from "@progress/kendo-angular-buttons";
const _forTrack0 = ($index, $item) => $item.param.ID;
const _forTrack1 = ($index, $item) => $item.ID;
function ActionTestHarnessComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 8);
    i0.ɵɵelement(1, "i", 16);
    i0.ɵɵelementStart(2, "p");
    i0.ɵɵtext(3, "This action has no input parameters");
    i0.ɵɵelementEnd()();
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 19);
    i0.ɵɵtext(1, "*");
    i0.ɵɵelementEnd();
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 20);
    i0.ɵɵtext(1, "Array");
    i0.ɵɵelementEnd();
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 22);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(paramValue_r1.param.Description);
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template(rf, ctx) { if (rf & 1) {
    const _r2 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "textarea", 30);
    i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template_textarea_change_0_listener($event) { i0.ɵɵrestoreView(_r2); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
    i0.ɵɵtext(1, "                                ");
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    const ctx_r2 = i0.ɵɵnextContext(2);
    i0.ɵɵproperty("value", ctx_r2.getParamDisplayValue(paramValue_r1))("placeholder", paramValue_r1.param.IsArray ? "Enter JSON array" : paramValue_r1.param.ValueType === "Simple Object" ? "Enter JSON object" : "Enter value");
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template(rf, ctx) { if (rf & 1) {
    const _r4 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 24)(1, "input", 31);
    i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r4); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵproperty("checked", paramValue_r1.value);
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template(rf, ctx) { if (rf & 1) {
    const _r5 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "input", 32);
    i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r5); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵproperty("value", paramValue_r1.value);
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template(rf, ctx) { if (rf & 1) {
    const _r6 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "input", 33);
    i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r6); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵproperty("value", paramValue_r1.value);
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template(rf, ctx) { if (rf & 1) {
    const _r7 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "input", 34);
    i0.ɵɵlistener("change", function ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r7); const paramValue_r1 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onParamValueChange(paramValue_r1, $event)); });
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵproperty("value", paramValue_r1.value || "");
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 28);
    i0.ɵɵelement(1, "i", 35);
    i0.ɵɵtext(2);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1(" ", paramValue_r1.error, " ");
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 29);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const paramValue_r1 = i0.ɵɵnextContext().$implicit;
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" Default: ", paramValue_r1.param.DefaultValue, " ");
} }
function ActionTestHarnessComponent_Conditional_14_For_2_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 18)(1, "label");
    i0.ɵɵtext(2);
    i0.ɵɵtemplate(3, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_3_Template, 2, 0, "span", 19)(4, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_4_Template, 2, 0, "span", 20);
    i0.ɵɵelementStart(5, "span", 21);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()();
    i0.ɵɵtemplate(7, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_7_Template, 2, 1, "div", 22)(8, ActionTestHarnessComponent_Conditional_14_For_2_Case_8_Template, 2, 2, "textarea", 23)(9, ActionTestHarnessComponent_Conditional_14_For_2_Case_9_Template, 2, 1, "div", 24)(10, ActionTestHarnessComponent_Conditional_14_For_2_Case_10_Template, 1, 1, "input", 25)(11, ActionTestHarnessComponent_Conditional_14_For_2_Case_11_Template, 1, 1, "input", 26)(12, ActionTestHarnessComponent_Conditional_14_For_2_Case_12_Template, 1, 1, "input", 27)(13, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_13_Template, 3, 1, "div", 28)(14, ActionTestHarnessComponent_Conditional_14_For_2_Conditional_14_Template, 2, 1, "div", 29);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    let tmp_18_0;
    const paramValue_r1 = ctx.$implicit;
    const ctx_r2 = i0.ɵɵnextContext(2);
    i0.ɵɵclassProp("required", paramValue_r1.param.IsRequired)("error", paramValue_r1.error);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate1(" ", paramValue_r1.param.Name, " ");
    i0.ɵɵadvance();
    i0.ɵɵconditional(paramValue_r1.param.IsRequired ? 3 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(paramValue_r1.param.IsArray ? 4 : -1);
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate(paramValue_r1.param.ValueType);
    i0.ɵɵadvance();
    i0.ɵɵconditional(paramValue_r1.param.Description ? 7 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional((tmp_18_0 = ctx_r2.getInputType(paramValue_r1.param)) === "textarea" ? 8 : tmp_18_0 === "checkbox" ? 9 : tmp_18_0 === "number" ? 10 : tmp_18_0 === "datetime-local" ? 11 : 12);
    i0.ɵɵadvance(5);
    i0.ɵɵconditional(paramValue_r1.error ? 13 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(paramValue_r1.param.DefaultValue && !paramValue_r1.value ? 14 : -1);
} }
function ActionTestHarnessComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 9);
    i0.ɵɵrepeaterCreate(1, ActionTestHarnessComponent_Conditional_14_For_2_Template, 15, 12, "div", 17, _forTrack0);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext();
    i0.ɵɵadvance();
    i0.ɵɵrepeater(ctx_r2.paramValues);
} }
function ActionTestHarnessComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "i", 36);
    i0.ɵɵtext(1, " Executing... ");
} }
function ActionTestHarnessComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelement(0, "i", 37);
    i0.ɵɵtext(1, " Execute Action ");
} }
function ActionTestHarnessComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
    const _r8 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 12);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_22_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.clearResults()); });
    i0.ɵɵelement(1, "i", 38);
    i0.ɵɵtext(2, " Clear Results ");
    i0.ɵɵelementEnd();
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template(rf, ctx) { if (rf & 1) {
    const _r9 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "button", 46);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.copyResultToClipboard()); });
    i0.ɵɵelement(1, "i", 47);
    i0.ɵɵtext(2, " Copy ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(3, "button", 46);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.showRawResult = !ctx_r2.showRawResult); });
    i0.ɵɵelement(4, "i", 48);
    i0.ɵɵtext(5);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(5);
    i0.ɵɵtextInterpolate1(" ", ctx_r2.showRawResult ? "Hide" : "Show", " Raw ");
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_10_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 44);
    i0.ɵɵelement(1, "i", 49);
    i0.ɵɵelementStart(2, "div", 50)(3, "h5");
    i0.ɵɵtext(4, "Execution Error");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "p");
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()()();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(2);
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r2.executionError);
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_5_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "span", 53);
    i0.ɵɵtext(1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(3);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate(ctx_r2.executionResult.ResultCode);
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_6_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 54)(1, "h5");
    i0.ɵɵelement(2, "i", 56);
    i0.ɵɵtext(3, " Message ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(4, "div", 57)(5, "pre", 58);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()()();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(3);
    i0.ɵɵadvance(6);
    i0.ɵɵtextInterpolate(ctx_r2.executionResult.Message);
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template(rf, ctx) { if (rf & 1) {
    const _r11 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 57)(1, "div", 62)(2, "span", 63);
    i0.ɵɵtext(3, "JSON");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(4, "button", 64);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.copyResultDataToClipboard()); });
    i0.ɵɵelement(5, "i", 47);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(6, "pre", 65);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(4);
    i0.ɵɵadvance(7);
    i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData));
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 67)(1, "label");
    i0.ɵɵelement(2, "i", 68);
    i0.ɵɵtext(3);
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(4, "div", 69)(5, "pre", 58);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()()();
} if (rf & 2) {
    const outputParam_r12 = ctx.$implicit;
    const ctx_r2 = i0.ɵɵnextContext(6);
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate1(" ", outputParam_r12.Name, " ");
    i0.ɵɵadvance(3);
    i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData[outputParam_r12.Name]));
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 66);
    i0.ɵɵrepeaterCreate(1, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_For_2_Template, 7, 2, "div", 67, _forTrack1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(5);
    i0.ɵɵadvance();
    i0.ɵɵrepeater(ctx_r2.getOutputParams());
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template(rf, ctx) { if (rf & 1) {
    const _r13 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 57)(1, "div", 62)(2, "span", 63);
    i0.ɵɵtext(3, "JSON");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(4, "button", 64);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r2.copyResultDataToClipboard()); });
    i0.ɵɵelement(5, "i", 47);
    i0.ɵɵelementEnd()();
    i0.ɵɵelementStart(6, "pre", 65);
    i0.ɵɵtext(7);
    i0.ɵɵelementEnd()();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(5);
    i0.ɵɵadvance(7);
    i0.ɵɵtextInterpolate(ctx_r2.formatResultData(ctx_r2.executionResult.ResultData));
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵtemplate(0, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_0_Template, 3, 0, "div", 66)(1, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Conditional_1_Template, 8, 1, "div", 57);
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(4);
    i0.ɵɵconditional(ctx_r2.getOutputParams().length > 0 ? 0 : 1);
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template(rf, ctx) { if (rf & 1) {
    const _r10 = i0.ɵɵgetCurrentView();
    i0.ɵɵelementStart(0, "div", 55)(1, "h5");
    i0.ɵɵelement(2, "i", 59);
    i0.ɵɵtext(3, " Result Data ");
    i0.ɵɵelementStart(4, "button", 60);
    i0.ɵɵlistener("click", function ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.showRawResult = !ctx_r2.showRawResult); });
    i0.ɵɵelement(5, "i", 61);
    i0.ɵɵtext(6);
    i0.ɵɵelementEnd()();
    i0.ɵɵtemplate(7, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_7_Template, 8, 1, "div", 57)(8, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Conditional_8_Template, 2, 1);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(3);
    i0.ɵɵadvance(5);
    i0.ɵɵclassProp("fa-code", !ctx_r2.showRawResult)("fa-list", ctx_r2.showRawResult);
    i0.ɵɵadvance();
    i0.ɵɵtextInterpolate1(" ", ctx_r2.showRawResult ? "Formatted View" : "Raw JSON", " ");
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.showRawResult ? 7 : 8);
} }
function ActionTestHarnessComponent_Conditional_23_Conditional_11_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 51)(1, "div", 52);
    i0.ɵɵelement(2, "i");
    i0.ɵɵelementStart(3, "span");
    i0.ɵɵtext(4);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(5, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_5_Template, 2, 1, "span", 53);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(6, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_6_Template, 7, 1, "div", 54)(7, ActionTestHarnessComponent_Conditional_23_Conditional_11_Conditional_7_Template, 9, 6, "div", 55);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext(2);
    i0.ɵɵclassProp("failure", !ctx_r2.executionResult.Success);
    i0.ɵɵadvance();
    i0.ɵɵstyleProp("background-color", ctx_r2.getResultColor());
    i0.ɵɵadvance();
    i0.ɵɵclassMap("fa-solid " + ctx_r2.getResultIcon());
    i0.ɵɵadvance(2);
    i0.ɵɵtextInterpolate(ctx_r2.executionResult.Success ? "Success" : "Failed");
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionResult.ResultCode ? 5 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionResult.Message ? 6 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionResult.ResultData !== null && ctx_r2.executionResult.ResultData !== undefined ? 7 : -1);
} }
function ActionTestHarnessComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
    i0.ɵɵelementStart(0, "div", 15)(1, "div", 39)(2, "h4");
    i0.ɵɵelement(3, "i", 40);
    i0.ɵɵtext(4, " Execution Results ");
    i0.ɵɵelementEnd();
    i0.ɵɵelementStart(5, "div", 41)(6, "span", 42);
    i0.ɵɵelement(7, "i", 43);
    i0.ɵɵtext(8);
    i0.ɵɵelementEnd();
    i0.ɵɵtemplate(9, ActionTestHarnessComponent_Conditional_23_Conditional_9_Template, 6, 1);
    i0.ɵɵelementEnd()();
    i0.ɵɵtemplate(10, ActionTestHarnessComponent_Conditional_23_Conditional_10_Template, 7, 1, "div", 44)(11, ActionTestHarnessComponent_Conditional_23_Conditional_11_Template, 8, 10, "div", 45);
    i0.ɵɵelementEnd();
} if (rf & 2) {
    const ctx_r2 = i0.ɵɵnextContext();
    i0.ɵɵadvance(8);
    i0.ɵɵtextInterpolate1(" ", ctx_r2.executionTime, "ms ");
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionResult ? 9 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionError ? 10 : -1);
    i0.ɵɵadvance();
    i0.ɵɵconditional(ctx_r2.executionResult ? 11 : -1);
} }
export class ActionTestHarnessComponent {
    constructor(cdr) {
        this.cdr = cdr;
        this.actionParams = [];
        this.isVisible = false;
        this.visibilityChange = new EventEmitter();
        this.paramValues = [];
        this.isExecuting = false;
        this.executionResult = null;
        this.executionError = null;
        this.executionTime = 0;
        this.showRawResult = false;
        this.skipActionLog = false;
    }
    ngOnInit() {
        this.initializeParamValues();
    }
    initializeParamValues() {
        // Initialize parameter values with defaults
        this.paramValues = this.actionParams
            .filter(p => {
            const type = p.Type?.trim().toLowerCase();
            return type === 'input' || type === 'both';
        })
            .sort((a, b) => {
            // Sort required params first, then by name
            if (a.IsRequired !== b.IsRequired) {
                return a.IsRequired ? -1 : 1;
            }
            return a.Name.localeCompare(b.Name);
        })
            .map(param => ({
            param,
            value: this.getDefaultValue(param)
        }));
    }
    getDefaultValue(param) {
        if (param.DefaultValue) {
            return this.parseDefaultValue(param.DefaultValue, param.ValueType);
        }
        // Return appropriate empty value based on type
        if (param.IsArray) {
            return [];
        }
        switch (param.ValueType) {
            case 'Scalar':
                return null;
            case 'Simple Object':
                return {};
            case 'BaseEntity Sub-Class':
                return null;
            default:
                return null;
        }
    }
    parseDefaultValue(defaultValue, valueType) {
        try {
            // Try to parse as JSON first
            return JSON.parse(defaultValue);
        }
        catch {
            // If not JSON, return as string for scalar types
            if (valueType === 'Scalar') {
                return defaultValue;
            }
            return defaultValue;
        }
    }
    getInputType(param) {
        if (param.IsArray || param.ValueType === 'Simple Object' || param.ValueType === 'BaseEntity Sub-Class') {
            return 'textarea';
        }
        // Try to infer from default value or name
        const value = param.DefaultValue?.toLowerCase() || param.Name.toLowerCase();
        if (value.includes('date') || value.includes('time')) {
            return 'datetime-local';
        }
        if (value === 'true' || value === 'false') {
            return 'checkbox';
        }
        if (!isNaN(Number(value))) {
            return 'number';
        }
        return 'text';
    }
    onParamValueChange(paramValue, event) {
        const inputType = this.getInputType(paramValue.param);
        if (inputType === 'checkbox') {
            paramValue.value = event.target.checked;
        }
        else if (inputType === 'number') {
            paramValue.value = event.target.valueAsNumber;
        }
        else if (inputType === 'textarea') {
            // For complex types, try to parse as JSON
            try {
                paramValue.value = JSON.parse(event.target.value);
                paramValue.error = undefined;
            }
            catch (e) {
                // If not valid JSON, keep as string
                paramValue.value = event.target.value;
                if (paramValue.param.ValueType !== 'Scalar') {
                    paramValue.error = 'Invalid JSON format';
                }
            }
        }
        else {
            paramValue.value = event.target.value;
        }
    }
    getParamDisplayValue(paramValue) {
        if (paramValue.value === null || paramValue.value === undefined) {
            return '';
        }
        if (typeof paramValue.value === 'object') {
            return JSON.stringify(paramValue.value, null, 2);
        }
        return String(paramValue.value);
    }
    validateParams() {
        let isValid = true;
        for (const paramValue of this.paramValues) {
            // Check required fields
            if (paramValue.param.IsRequired) {
                if (paramValue.value === null || paramValue.value === undefined ||
                    (typeof paramValue.value === 'string' && paramValue.value.trim() === '') ||
                    (Array.isArray(paramValue.value) && paramValue.value.length === 0)) {
                    paramValue.error = 'This field is required';
                    isValid = false;
                }
            }
            // Check for JSON parse errors
            if (paramValue.error) {
                isValid = false;
            }
        }
        return isValid;
    }
    async executeAction() {
        if (!this.validateParams()) {
            return;
        }
        this.isExecuting = true;
        this.executionResult = null;
        this.executionError = null;
        const startTime = Date.now();
        try {
            // Build parameters object
            const params = {};
            for (const paramValue of this.paramValues) {
                params[paramValue.param.Name] = paramValue.value;
            }
            // Execute the action using GraphQL
            const query = `
                mutation RunAction($input: RunActionInput!) {
                    RunAction(input: $input) {
                        Success
                        Message
                        ResultCode
                        ResultData
                    }
                }
            `;
            // Get GraphQL data provider from Metadata
            const graphQLProvider = Metadata.Provider;
            // Convert params to ActionParamInput array format
            const actionParams = this.paramValues.map(paramValue => {
                // Determine the actual data type for the Type field
                let dataType = 'string'; // default
                if (paramValue.param.ValueType === 'Scalar') {
                    // For scalar, check the actual value type
                    if (typeof paramValue.value === 'boolean') {
                        dataType = 'boolean';
                    }
                    else if (typeof paramValue.value === 'number') {
                        dataType = 'number';
                    }
                    else {
                        dataType = 'string';
                    }
                }
                else if (paramValue.param.ValueType === 'Simple Object') {
                    dataType = 'object';
                }
                else if (paramValue.param.IsArray) {
                    dataType = 'array';
                }
                return {
                    Name: paramValue.param.Name,
                    Value: paramValue.value === null || paramValue.value === undefined
                        ? null
                        : typeof paramValue.value === 'object'
                            ? JSON.stringify(paramValue.value)
                            : String(paramValue.value),
                    Type: dataType
                };
            });
            const variables = {
                input: {
                    ActionID: this.action.ID,
                    Params: actionParams,
                    SkipActionLog: this.skipActionLog
                }
            };
            let result;
            try {
                result = await graphQLProvider.ExecuteGQL(query, variables);
            }
            catch (gqlError) {
                console.error('❌ Action Test Harness: GraphQL execution failed', {
                    error: gqlError,
                    message: gqlError?.message,
                    networkError: gqlError?.networkError,
                    graphQLErrors: gqlError?.graphQLErrors,
                    statusCode: gqlError?.networkError?.statusCode,
                    response: gqlError?.networkError?.response
                });
                throw gqlError;
            }
            this.executionTime = Date.now() - startTime;
            if (result?.RunAction) {
                this.executionResult = result.RunAction;
                // If result is false/failed, it might still have an error in the data
                if (!this.executionResult?.Success && this.executionResult?.Message) {
                    console.warn('⚠️ Action Test Harness: Action failed with message', this.executionResult.Message);
                }
            }
            else {
                console.error('❌ Action Test Harness: No RunAction in result', {
                    result,
                    resultType: typeof result,
                    resultStringified: JSON.stringify(result)
                });
                throw new Error('No result returned from action execution');
            }
        }
        catch (error) {
            this.executionTime = Date.now() - startTime;
            this.executionError = error.message || 'An unknown error occurred';
            console.error('❌ Action Test Harness: Caught error during action execution', {
                error: error,
                message: error?.message,
                stack: error?.stack,
                type: error?.constructor?.name
            });
        }
        finally {
            this.isExecuting = false;
            this.cdr.detectChanges();
        }
    }
    clearResults() {
        this.executionResult = null;
        this.executionError = null;
        this.executionTime = 0;
    }
    resetParams() {
        this.initializeParamValues();
        this.clearResults();
    }
    copyResultToClipboard() {
        if (!this.executionResult)
            return;
        const resultText = JSON.stringify(this.executionResult, null, 2);
        navigator.clipboard.writeText(resultText).then(() => {
            // Could add a notification here
        }).catch(() => {
            // Failed to copy to clipboard
        });
    }
    copyResultDataToClipboard() {
        if (!this.executionResult?.ResultData)
            return;
        const resultDataText = this.formatResultData(this.executionResult.ResultData);
        navigator.clipboard.writeText(resultDataText).then(() => {
            // Could add a notification here
        }).catch(() => {
            // Failed to copy to clipboard
        });
    }
    getResultIcon() {
        if (!this.executionResult)
            return '';
        return this.executionResult.Success ? 'fa-check-circle' : 'fa-times-circle';
    }
    getResultColor() {
        if (!this.executionResult)
            return '';
        return this.executionResult.Success ? '#28a745' : '#dc3545';
    }
    getOutputParams() {
        return this.actionParams.filter(p => p.Type === 'Output' || p.Type === 'Both');
    }
    formatResultData(data) {
        if (data === null || data === undefined)
            return 'null';
        if (typeof data === 'object') {
            return JSON.stringify(data, null, 2);
        }
        return String(data);
    }
    static { this.ɵfac = function ActionTestHarnessComponent_Factory(t) { return new (t || ActionTestHarnessComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
    static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ActionTestHarnessComponent, selectors: [["mj-action-test-harness"]], inputs: { action: "action", actionParams: "actionParams", isVisible: "isVisible" }, outputs: { visibilityChange: "visibilityChange" }, decls: 24, vars: 7, consts: [[1, "action-test-harness"], [1, "harness-header"], [1, "fa-solid", "fa-flask"], [1, "header-actions"], ["name", "skipActionLog", 3, "ngModelChange", "ngModel"], [2, "margin-left", "8px"], [1, "parameters-section"], [1, "fa-solid", "fa-sliders"], [1, "no-params"], [1, "params-grid"], [1, "action-buttons"], ["kendoButton", "", "themeColor", "primary", "size", "large", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", 3, "click"], [1, "fa-solid", "fa-undo"], ["kendoButton", "", "fillMode", "outline"], [1, "results-section"], [1, "fa-solid", "fa-inbox"], [1, "param-field", 3, "required", "error"], [1, "param-field"], [1, "required-indicator"], [1, "array-badge"], [1, "value-type"], [1, "param-description"], ["rows", "4", 1, "param-input", 3, "value", "placeholder"], [1, "checkbox-wrapper"], ["type", "number", "placeholder", "Enter number", 1, "param-input", 3, "value"], ["type", "datetime-local", 1, "param-input", 3, "value"], ["type", "text", "placeholder", "Enter value", 1, "param-input", 3, "value"], [1, "field-error"], [1, "default-hint"], ["rows", "4", 1, "param-input", 3, "change", "value", "placeholder"], ["type", "checkbox", 1, "param-checkbox", 3, "change", "checked"], ["type", "number", "placeholder", "Enter number", 1, "param-input", 3, "change", "value"], ["type", "datetime-local", 1, "param-input", 3, "change", "value"], ["type", "text", "placeholder", "Enter value", 1, "param-input", 3, "change", "value"], [1, "fa-solid", "fa-exclamation-circle"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [1, "fa-solid", "fa-trash"], [1, "results-header"], [1, "fa-solid", "fa-poll"], [1, "execution-meta"], [1, "execution-time"], [1, "fa-solid", "fa-clock"], [1, "error-result"], [1, "success-result", 3, "failure"], ["kendoButton", "", "fillMode", "flat", "size", "small", 3, "click"], [1, "fa-solid", "fa-copy"], [1, "fa-solid", "fa-code"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "error-content"], [1, "success-result"], [1, "status-banner"], [1, "result-code"], [1, "result-message"], [1, "result-data"], [1, "fa-solid", "fa-message"], [1, "code-editor-container"], [1, "code-editor"], [1, "fa-solid", "fa-database"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "toggle-view-btn", 3, "click"], [1, "fa-solid"], [1, "code-editor-header"], [1, "language-badge"], ["kendoButton", "", "fillMode", "flat", "size", "small", 1, "copy-btn", 3, "click"], [1, "code-editor", "json"], [1, "output-params"], [1, "output-param"], [1, "fa-solid", "fa-tag"], [1, "code-editor-container", "compact"]], template: function ActionTestHarnessComponent_Template(rf, ctx) { if (rf & 1) {
            i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
            i0.ɵɵelement(3, "i", 2);
            i0.ɵɵtext(4);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(5, "div", 3)(6, "kendo-switch", 4);
            i0.ɵɵtwoWayListener("ngModelChange", function ActionTestHarnessComponent_Template_kendo_switch_ngModelChange_6_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.skipActionLog, $event) || (ctx.skipActionLog = $event); return $event; });
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(7, "label", 5);
            i0.ɵɵtext(8, "Skip Action Log");
            i0.ɵɵelementEnd()()();
            i0.ɵɵelementStart(9, "div", 6)(10, "h4");
            i0.ɵɵelement(11, "i", 7);
            i0.ɵɵtext(12, " Input Parameters ");
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(13, ActionTestHarnessComponent_Conditional_13_Template, 4, 0, "div", 8)(14, ActionTestHarnessComponent_Conditional_14_Template, 3, 0, "div", 9);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(15, "div", 10)(16, "button", 11);
            i0.ɵɵlistener("click", function ActionTestHarnessComponent_Template_button_click_16_listener() { return ctx.executeAction(); });
            i0.ɵɵtemplate(17, ActionTestHarnessComponent_Conditional_17_Template, 2, 0)(18, ActionTestHarnessComponent_Conditional_18_Template, 2, 0);
            i0.ɵɵelementEnd();
            i0.ɵɵelementStart(19, "button", 12);
            i0.ɵɵlistener("click", function ActionTestHarnessComponent_Template_button_click_19_listener() { return ctx.resetParams(); });
            i0.ɵɵelement(20, "i", 13);
            i0.ɵɵtext(21, " Reset ");
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(22, ActionTestHarnessComponent_Conditional_22_Template, 3, 0, "button", 14);
            i0.ɵɵelementEnd();
            i0.ɵɵtemplate(23, ActionTestHarnessComponent_Conditional_23_Template, 12, 4, "div", 15);
            i0.ɵɵelementEnd();
        } if (rf & 2) {
            i0.ɵɵadvance(4);
            i0.ɵɵtextInterpolate1(" Test Harness for ", ctx.action.Name, " ");
            i0.ɵɵadvance(2);
            i0.ɵɵtwoWayProperty("ngModel", ctx.skipActionLog);
            i0.ɵɵadvance(7);
            i0.ɵɵconditional(ctx.paramValues.length === 0 ? 13 : 14);
            i0.ɵɵadvance(3);
            i0.ɵɵproperty("disabled", ctx.isExecuting || ctx.action.Status !== "Active");
            i0.ɵɵadvance();
            i0.ɵɵconditional(ctx.isExecuting ? 17 : 18);
            i0.ɵɵadvance(5);
            i0.ɵɵconditional(ctx.executionResult || ctx.executionError ? 22 : -1);
            i0.ɵɵadvance();
            i0.ɵɵconditional(ctx.executionResult || ctx.executionError ? 23 : -1);
        } }, dependencies: [i1.NgControlStatus, i1.NgModel, i2.SwitchComponent, i3.ButtonComponent], styles: [".action-test-harness[_ngcontent-%COMP%] {\n    background: white;\n    border-radius: 8px;\n    padding: 24px;\n    max-width: 100%;\n    margin: 0;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n\n\n.action-test-harness[_ngcontent-%COMP%]   *[_ngcontent-%COMP%] {\n    box-sizing: border-box;\n}\n\n\n\n.harness-header[_ngcontent-%COMP%] {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 20px;\n    padding-bottom: 16px;\n    border-bottom: 2px solid #e9ecef;\n    flex-wrap: wrap;\n    gap: 12px;\n}\n\n.harness-header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%] {\n    margin: 0;\n    color: #2c3e50;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n}\n\n.harness-header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    color: #6f42c1;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n\n\n.parameters-section[_ngcontent-%COMP%] {\n    margin-bottom: 20px;\n    width: 100%;\n    overflow-x: auto;\n}\n\n.parameters-section[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%] {\n    margin: 0 0 16px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.no-params[_ngcontent-%COMP%] {\n    text-align: center;\n    padding: 40px;\n    color: #6c757d;\n}\n\n.no-params[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    font-size: 2.5em;\n    margin-bottom: 12px;\n    opacity: 0.3;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n    gap: 16px;\n    width: 100%;\n}\n\n.param-field[_ngcontent-%COMP%] {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 6px;\n    padding: 12px;\n    transition: all 0.2s;\n    min-width: 0;\n    overflow: hidden;\n}\n\n.param-field[_ngcontent-%COMP%]:hover {\n    border-color: #dee2e6;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n.param-field.required[_ngcontent-%COMP%] {\n    border-left: 3px solid #ffc107;\n}\n\n.param-field.error[_ngcontent-%COMP%] {\n    border-color: #dc3545;\n    background: #f8d7da20;\n}\n\n.param-field[_ngcontent-%COMP%]   label[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 8px;\n    font-weight: 600;\n    color: #495057;\n    flex-wrap: wrap;\n    font-size: 0.95em;\n}\n\n.required-indicator[_ngcontent-%COMP%] {\n    color: #dc3545;\n}\n\n.array-badge[_ngcontent-%COMP%] {\n    background: #6f42c1;\n    color: white;\n    padding: 2px 6px;\n    border-radius: 10px;\n    font-size: 0.75em;\n    font-weight: 500;\n}\n\n.value-type[_ngcontent-%COMP%] {\n    margin-left: auto;\n    color: #6c757d;\n    font-size: 0.8em;\n    font-weight: 400;\n    white-space: nowrap;\n}\n\n.param-description[_ngcontent-%COMP%] {\n    color: #6c757d;\n    font-size: 0.9em;\n    margin-bottom: 8px;\n    line-height: 1.4;\n}\n\n.param-input[_ngcontent-%COMP%] {\n    width: 100%;\n    padding: 8px 12px;\n    border: 1px solid #ced4da;\n    border-radius: 4px;\n    font-family: inherit;\n    font-size: 0.95em;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n    max-width: 100%;\n}\n\n.param-input[_ngcontent-%COMP%]:focus {\n    outline: none;\n    border-color: #80bdff;\n    box-shadow: 0 0 0 2px rgba(0,123,255,0.1);\n}\n\ntextarea.param-input[_ngcontent-%COMP%] {\n    resize: vertical;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n}\n\n.checkbox-wrapper[_ngcontent-%COMP%] {\n    padding: 8px 0;\n}\n\n.param-checkbox[_ngcontent-%COMP%] {\n    width: 20px;\n    height: 20px;\n    cursor: pointer;\n}\n\n.field-error[_ngcontent-%COMP%] {\n    margin-top: 6px;\n    color: #dc3545;\n    font-size: 0.85em;\n    display: flex;\n    align-items: center;\n    gap: 4px;\n}\n\n.default-hint[_ngcontent-%COMP%] {\n    margin-top: 6px;\n    color: #6c757d;\n    font-size: 0.85em;\n    font-style: italic;\n}\n\n\n\n.action-buttons[_ngcontent-%COMP%] {\n    display: flex;\n    gap: 12px;\n    margin-bottom: 24px;\n    padding: 16px;\n    background: #f8f9fa;\n    border-radius: 6px;\n    align-items: center;\n    flex-wrap: wrap;\n}\n\n\n\n.results-section[_ngcontent-%COMP%] {\n    border: 2px solid #e9ecef;\n    border-radius: 8px;\n    overflow: hidden;\n    margin-top: 20px;\n}\n\n.results-header[_ngcontent-%COMP%] {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 16px 20px;\n    background: #f8f9fa;\n    border-bottom: 1px solid #e9ecef;\n}\n\n.results-header[_ngcontent-%COMP%]   h4[_ngcontent-%COMP%] {\n    margin: 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.execution-meta[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n}\n\n.execution-time[_ngcontent-%COMP%] {\n    color: #6c757d;\n    font-size: 0.9em;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n}\n\n\n\n.error-result[_ngcontent-%COMP%] {\n    padding: 20px;\n    background: #f8d7da;\n    display: flex;\n    gap: 16px;\n    align-items: flex-start;\n}\n\n.error-result[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    font-size: 1.5em;\n    color: #dc3545;\n    flex-shrink: 0;\n}\n\n.error-content[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%] {\n    margin: 0 0 8px 0;\n    color: #721c24;\n}\n\n.error-content[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] {\n    margin: 0;\n    color: #721c24;\n}\n\n\n\n.success-result[_ngcontent-%COMP%] {\n    background: white;\n}\n\n.success-result.failure[_ngcontent-%COMP%]   .status-banner[_ngcontent-%COMP%] {\n    background: #dc3545 !important;\n}\n\n.status-banner[_ngcontent-%COMP%] {\n    padding: 16px 20px;\n    color: white;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-weight: 600;\n    font-size: 1.1em;\n}\n\n.status-banner[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    font-size: 1.2em;\n}\n\n.result-code[_ngcontent-%COMP%] {\n    margin-left: auto;\n    background: rgba(255,255,255,0.2);\n    padding: 4px 10px;\n    border-radius: 12px;\n    font-size: 0.9em;\n}\n\n.result-message[_ngcontent-%COMP%] {\n    padding: 20px;\n    border-bottom: 1px solid #e9ecef;\n}\n\n.result-message[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%] {\n    margin: 0 0 12px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.result-message[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    color: #17a2b8;\n}\n\n.result-message[_ngcontent-%COMP%]   p[_ngcontent-%COMP%] {\n    margin: 0;\n    color: #6c757d;\n    line-height: 1.5;\n}\n\n.result-message[_ngcontent-%COMP%]   .code-editor-container[_ngcontent-%COMP%] {\n    margin-bottom: 0;\n}\n\n.result-message[_ngcontent-%COMP%]   .code-editor[_ngcontent-%COMP%] {\n    color: #e8e8e8;\n    background: #2d2d30;\n    max-height: 200px;\n    overflow-y: auto;\n}\n\n\n\n.result-data[_ngcontent-%COMP%] {\n    padding: 20px;\n}\n\n.result-data[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%] {\n    margin: 0 0 16px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.result-data[_ngcontent-%COMP%]   h5[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    color: #6f42c1;\n}\n\n.toggle-view-btn[_ngcontent-%COMP%] {\n    margin-left: auto;\n    font-size: 0.85em;\n}\n\n.raw-data[_ngcontent-%COMP%] {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 4px;\n    padding: 16px;\n    margin: 0;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n    overflow-x: auto;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n\n\n.code-editor-container[_ngcontent-%COMP%] {\n    background: #1e1e1e;\n    border-radius: 6px;\n    overflow: hidden;\n    margin-bottom: 16px;\n}\n\n.code-editor-container.compact[_ngcontent-%COMP%] {\n    margin-bottom: 0;\n}\n\n.code-editor-header[_ngcontent-%COMP%] {\n    background: #2d2d30;\n    padding: 8px 12px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    border-bottom: 1px solid #3e3e42;\n}\n\n.language-badge[_ngcontent-%COMP%] {\n    background: #007acc;\n    color: white;\n    padding: 2px 8px;\n    border-radius: 3px;\n    font-size: 0.75em;\n    font-weight: 600;\n    text-transform: uppercase;\n}\n\n.copy-btn[_ngcontent-%COMP%] {\n    color: #cccccc;\n    padding: 4px 8px;\n    min-width: auto;\n}\n\n.copy-btn[_ngcontent-%COMP%]:hover {\n    color: #ffffff;\n    background: rgba(255, 255, 255, 0.1);\n}\n\n.code-editor[_ngcontent-%COMP%] {\n    background: #1e1e1e;\n    color: #d4d4d4;\n    border: none;\n    border-radius: 0;\n    padding: 16px;\n    margin: 0;\n    font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n    font-size: 13px;\n    line-height: 1.5;\n    overflow-x: auto;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n.code-editor.json[_ngcontent-%COMP%] {\n    \n\n    color: #9cdcfe;\n}\n\n\n\n.output-params[_ngcontent-%COMP%] {\n    display: grid;\n    gap: 16px;\n}\n\n.output-param[_ngcontent-%COMP%] {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 6px;\n    padding: 16px;\n}\n\n.output-param[_ngcontent-%COMP%]   label[_ngcontent-%COMP%] {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 8px;\n    font-weight: 600;\n    color: #495057;\n}\n\n.output-param[_ngcontent-%COMP%]   label[_ngcontent-%COMP%]   i[_ngcontent-%COMP%] {\n    color: #6f42c1;\n    font-size: 0.9em;\n}\n\n.output-value[_ngcontent-%COMP%] {\n    background: white;\n    border: 1px solid #dee2e6;\n    border-radius: 4px;\n    padding: 12px;\n}\n\n.output-value[_ngcontent-%COMP%]   pre[_ngcontent-%COMP%] {\n    margin: 0;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n.no-value[_ngcontent-%COMP%] {\n    color: #6c757d;\n    font-style: italic;\n}\n\n\n\n@media (max-width: 768px) {\n    .params-grid[_ngcontent-%COMP%] {\n        grid-template-columns: 1fr;\n    }\n    \n    .harness-header[_ngcontent-%COMP%] {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 12px;\n    }\n    \n    .results-header[_ngcontent-%COMP%] {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 12px;\n    }\n    \n    .action-buttons[_ngcontent-%COMP%] {\n        flex-wrap: wrap;\n    }\n}"] }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ActionTestHarnessComponent, [{
        type: Component,
        args: [{ selector: 'mj-action-test-harness', template: "<div class=\"action-test-harness\">\n    <div class=\"harness-header\">\n        <h3>\n            <i class=\"fa-solid fa-flask\"></i>\n            Test Harness for {{ action.Name }}\n        </h3>\n        <div class=\"header-actions\">\n            <kendo-switch [(ngModel)]=\"skipActionLog\" name=\"skipActionLog\">\n            </kendo-switch>\n            <label style=\"margin-left: 8px;\">Skip Action Log</label>\n        </div>\n    </div>\n\n    <!-- Input Parameters Section -->\n    <div class=\"parameters-section\">\n        <h4>\n            <i class=\"fa-solid fa-sliders\"></i>\n            Input Parameters\n        </h4>\n        \n        @if (paramValues.length === 0) {\n            <div class=\"no-params\">\n                <i class=\"fa-solid fa-inbox\"></i>\n                <p>This action has no input parameters</p>\n            </div>\n        } @else {\n            <div class=\"params-grid\">\n                @for (paramValue of paramValues; track paramValue.param.ID) {\n                    <div class=\"param-field\" [class.required]=\"paramValue.param.IsRequired\" [class.error]=\"paramValue.error\">\n                        <label>\n                            {{ paramValue.param.Name }}\n                            @if (paramValue.param.IsRequired) {\n                                <span class=\"required-indicator\">*</span>\n                            }\n                            @if (paramValue.param.IsArray) {\n                                <span class=\"array-badge\">Array</span>\n                            }\n                            <span class=\"value-type\">{{ paramValue.param.ValueType }}</span>\n                        </label>\n                        \n                        @if (paramValue.param.Description) {\n                            <div class=\"param-description\">{{ paramValue.param.Description }}</div>\n                        }\n                        \n                        @switch (getInputType(paramValue.param)) {\n                            @case ('textarea') {\n                                <textarea \n                                    [value]=\"getParamDisplayValue(paramValue)\"\n                                    (change)=\"onParamValueChange(paramValue, $event)\"\n                                    [placeholder]=\"paramValue.param.IsArray ? 'Enter JSON array' : paramValue.param.ValueType === 'Simple Object' ? 'Enter JSON object' : 'Enter value'\"\n                                    rows=\"4\"\n                                    class=\"param-input\">\n                                </textarea>\n                            }\n                            @case ('checkbox') {\n                                <div class=\"checkbox-wrapper\">\n                                    <input \n                                        type=\"checkbox\"\n                                        [checked]=\"paramValue.value\"\n                                        (change)=\"onParamValueChange(paramValue, $event)\"\n                                        class=\"param-checkbox\">\n                                </div>\n                            }\n                            @case ('number') {\n                                <input \n                                    type=\"number\"\n                                    [value]=\"paramValue.value\"\n                                    (change)=\"onParamValueChange(paramValue, $event)\"\n                                    placeholder=\"Enter number\"\n                                    class=\"param-input\">\n                            }\n                            @case ('datetime-local') {\n                                <input \n                                    type=\"datetime-local\"\n                                    [value]=\"paramValue.value\"\n                                    (change)=\"onParamValueChange(paramValue, $event)\"\n                                    class=\"param-input\">\n                            }\n                            @default {\n                                <input \n                                    type=\"text\"\n                                    [value]=\"paramValue.value || ''\"\n                                    (change)=\"onParamValueChange(paramValue, $event)\"\n                                    placeholder=\"Enter value\"\n                                    class=\"param-input\">\n                            }\n                        }\n                        \n                        @if (paramValue.error) {\n                            <div class=\"field-error\">\n                                <i class=\"fa-solid fa-exclamation-circle\"></i>\n                                {{ paramValue.error }}\n                            </div>\n                        }\n                        \n                        @if (paramValue.param.DefaultValue && !paramValue.value) {\n                            <div class=\"default-hint\">\n                                Default: {{ paramValue.param.DefaultValue }}\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        }\n    </div>\n\n    <!-- Action Buttons -->\n    <div class=\"action-buttons\">\n        <button \n            kendoButton\n            themeColor=\"primary\" \n            size=\"large\"\n            (click)=\"executeAction()\"\n            [disabled]=\"isExecuting || action.Status !== 'Active'\">\n            @if (isExecuting) {\n                <i class=\"fa-solid fa-spinner fa-spin\"></i> Executing...\n            } @else {\n                <i class=\"fa-solid fa-play\"></i> Execute Action\n            }\n        </button>\n        \n        <button \n            kendoButton\n            fillMode=\"outline\"\n            (click)=\"resetParams()\">\n            <i class=\"fa-solid fa-undo\"></i> Reset\n        </button>\n        \n        @if (executionResult || executionError) {\n            <button \n                kendoButton\n                fillMode=\"outline\"\n                (click)=\"clearResults()\">\n                <i class=\"fa-solid fa-trash\"></i> Clear Results\n            </button>\n        }\n    </div>\n\n    <!-- Results Section -->\n    @if (executionResult || executionError) {\n        <div class=\"results-section\">\n            <div class=\"results-header\">\n                <h4>\n                    <i class=\"fa-solid fa-poll\"></i>\n                    Execution Results\n                </h4>\n                <div class=\"execution-meta\">\n                    <span class=\"execution-time\">\n                        <i class=\"fa-solid fa-clock\"></i>\n                        {{ executionTime }}ms\n                    </span>\n                    @if (executionResult) {\n                        <button \n                            kendoButton\n                            fillMode=\"flat\" \n                            size=\"small\"\n                            (click)=\"copyResultToClipboard()\">\n                            <i class=\"fa-solid fa-copy\"></i> Copy\n                        </button>\n                        <button \n                            kendoButton\n                            fillMode=\"flat\" \n                            size=\"small\"\n                            (click)=\"showRawResult = !showRawResult\">\n                            <i class=\"fa-solid fa-code\"></i> \n                            {{ showRawResult ? 'Hide' : 'Show' }} Raw\n                        </button>\n                    }\n                </div>\n            </div>\n\n            @if (executionError) {\n                <div class=\"error-result\">\n                    <i class=\"fa-solid fa-exclamation-triangle\"></i>\n                    <div class=\"error-content\">\n                        <h5>Execution Error</h5>\n                        <p>{{ executionError }}</p>\n                    </div>\n                </div>\n            }\n\n            @if (executionResult) {\n                <div class=\"success-result\" [class.failure]=\"!executionResult.Success\">\n                    <!-- Status Banner -->\n                    <div class=\"status-banner\" [style.background-color]=\"getResultColor()\">\n                        <i [class]=\"'fa-solid ' + getResultIcon()\"></i>\n                        <span>{{ executionResult.Success ? 'Success' : 'Failed' }}</span>\n                        @if (executionResult.ResultCode) {\n                            <span class=\"result-code\">{{ executionResult.ResultCode }}</span>\n                        }\n                    </div>\n\n                    <!-- Message -->\n                    @if (executionResult.Message) {\n                        <div class=\"result-message\">\n                            <h5>\n                                <i class=\"fa-solid fa-message\"></i> Message\n                            </h5>\n                            <div class=\"code-editor-container\">\n                                <pre class=\"code-editor\">{{ executionResult.Message }}</pre>\n                            </div>\n                        </div>\n                    }\n\n                    <!-- Result Data -->\n                    @if (executionResult.ResultData !== null && executionResult.ResultData !== undefined) {\n                        <div class=\"result-data\">\n                            <h5>\n                                <i class=\"fa-solid fa-database\"></i> Result Data\n                                <button \n                                    kendoButton\n                                    fillMode=\"flat\" \n                                    size=\"small\"\n                                    class=\"toggle-view-btn\"\n                                    (click)=\"showRawResult = !showRawResult\">\n                                    <i class=\"fa-solid\" [class.fa-code]=\"!showRawResult\" [class.fa-list]=\"showRawResult\"></i> \n                                    {{ showRawResult ? 'Formatted View' : 'Raw JSON' }}\n                                </button>\n                            </h5>\n                            @if (showRawResult) {\n                                <div class=\"code-editor-container\">\n                                    <div class=\"code-editor-header\">\n                                        <span class=\"language-badge\">JSON</span>\n                                        <button \n                                            kendoButton\n                                            fillMode=\"flat\" \n                                            size=\"small\"\n                                            class=\"copy-btn\"\n                                            (click)=\"copyResultDataToClipboard()\">\n                                            <i class=\"fa-solid fa-copy\"></i>\n                                        </button>\n                                    </div>\n                                    <pre class=\"code-editor json\">{{ formatResultData(executionResult.ResultData) }}</pre>\n                                </div>\n                            } @else {\n                                <!-- Output Parameters Mapping -->\n                                @if (getOutputParams().length > 0) {\n                                    <div class=\"output-params\">\n                                        @for (outputParam of getOutputParams(); track outputParam.ID) {\n                                            <div class=\"output-param\">\n                                                <label>\n                                                    <i class=\"fa-solid fa-tag\"></i> {{ outputParam.Name }}\n                                                </label>\n                                                <div class=\"code-editor-container compact\">\n                                                    <pre class=\"code-editor\">{{ formatResultData(executionResult.ResultData[outputParam.Name]) }}</pre>\n                                                </div>\n                                            </div>\n                                        }\n                                    </div>\n                                } @else {\n                                    <div class=\"code-editor-container\">\n                                        <div class=\"code-editor-header\">\n                                            <span class=\"language-badge\">JSON</span>\n                                            <button \n                                                kendoButton\n                                                fillMode=\"flat\" \n                                                size=\"small\"\n                                                class=\"copy-btn\"\n                                                (click)=\"copyResultDataToClipboard()\">\n                                                <i class=\"fa-solid fa-copy\"></i>\n                                            </button>\n                                        </div>\n                                        <pre class=\"code-editor json\">{{ formatResultData(executionResult.ResultData) }}</pre>\n                                    </div>\n                                }\n                            }\n                        </div>\n                    }\n                </div>\n            }\n        </div>\n    }\n</div>", styles: [".action-test-harness {\n    background: white;\n    border-radius: 8px;\n    padding: 24px;\n    max-width: 100%;\n    margin: 0;\n    width: 100%;\n    box-sizing: border-box;\n}\n\n/* Ensure all child elements use border-box */\n.action-test-harness * {\n    box-sizing: border-box;\n}\n\n/* Header */\n.harness-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: 20px;\n    padding-bottom: 16px;\n    border-bottom: 2px solid #e9ecef;\n    flex-wrap: wrap;\n    gap: 12px;\n}\n\n.harness-header h3 {\n    margin: 0;\n    color: #2c3e50;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n}\n\n.harness-header h3 i {\n    color: #6f42c1;\n}\n\n.header-actions {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n/* Parameters Section */\n.parameters-section {\n    margin-bottom: 20px;\n    width: 100%;\n    overflow-x: auto;\n}\n\n.parameters-section h4 {\n    margin: 0 0 16px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.no-params {\n    text-align: center;\n    padding: 40px;\n    color: #6c757d;\n}\n\n.no-params i {\n    font-size: 2.5em;\n    margin-bottom: 12px;\n    opacity: 0.3;\n}\n\n.params-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n    gap: 16px;\n    width: 100%;\n}\n\n.param-field {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 6px;\n    padding: 12px;\n    transition: all 0.2s;\n    min-width: 0;\n    overflow: hidden;\n}\n\n.param-field:hover {\n    border-color: #dee2e6;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.05);\n}\n\n.param-field.required {\n    border-left: 3px solid #ffc107;\n}\n\n.param-field.error {\n    border-color: #dc3545;\n    background: #f8d7da20;\n}\n\n.param-field label {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 8px;\n    font-weight: 600;\n    color: #495057;\n    flex-wrap: wrap;\n    font-size: 0.95em;\n}\n\n.required-indicator {\n    color: #dc3545;\n}\n\n.array-badge {\n    background: #6f42c1;\n    color: white;\n    padding: 2px 6px;\n    border-radius: 10px;\n    font-size: 0.75em;\n    font-weight: 500;\n}\n\n.value-type {\n    margin-left: auto;\n    color: #6c757d;\n    font-size: 0.8em;\n    font-weight: 400;\n    white-space: nowrap;\n}\n\n.param-description {\n    color: #6c757d;\n    font-size: 0.9em;\n    margin-bottom: 8px;\n    line-height: 1.4;\n}\n\n.param-input {\n    width: 100%;\n    padding: 8px 12px;\n    border: 1px solid #ced4da;\n    border-radius: 4px;\n    font-family: inherit;\n    font-size: 0.95em;\n    transition: border-color 0.2s;\n    box-sizing: border-box;\n    max-width: 100%;\n}\n\n.param-input:focus {\n    outline: none;\n    border-color: #80bdff;\n    box-shadow: 0 0 0 2px rgba(0,123,255,0.1);\n}\n\ntextarea.param-input {\n    resize: vertical;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n}\n\n.checkbox-wrapper {\n    padding: 8px 0;\n}\n\n.param-checkbox {\n    width: 20px;\n    height: 20px;\n    cursor: pointer;\n}\n\n.field-error {\n    margin-top: 6px;\n    color: #dc3545;\n    font-size: 0.85em;\n    display: flex;\n    align-items: center;\n    gap: 4px;\n}\n\n.default-hint {\n    margin-top: 6px;\n    color: #6c757d;\n    font-size: 0.85em;\n    font-style: italic;\n}\n\n/* Action Buttons */\n.action-buttons {\n    display: flex;\n    gap: 12px;\n    margin-bottom: 24px;\n    padding: 16px;\n    background: #f8f9fa;\n    border-radius: 6px;\n    align-items: center;\n    flex-wrap: wrap;\n}\n\n/* Results Section */\n.results-section {\n    border: 2px solid #e9ecef;\n    border-radius: 8px;\n    overflow: hidden;\n    margin-top: 20px;\n}\n\n.results-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding: 16px 20px;\n    background: #f8f9fa;\n    border-bottom: 1px solid #e9ecef;\n}\n\n.results-header h4 {\n    margin: 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.execution-meta {\n    display: flex;\n    align-items: center;\n    gap: 12px;\n}\n\n.execution-time {\n    color: #6c757d;\n    font-size: 0.9em;\n    display: flex;\n    align-items: center;\n    gap: 6px;\n}\n\n/* Error Result */\n.error-result {\n    padding: 20px;\n    background: #f8d7da;\n    display: flex;\n    gap: 16px;\n    align-items: flex-start;\n}\n\n.error-result i {\n    font-size: 1.5em;\n    color: #dc3545;\n    flex-shrink: 0;\n}\n\n.error-content h5 {\n    margin: 0 0 8px 0;\n    color: #721c24;\n}\n\n.error-content p {\n    margin: 0;\n    color: #721c24;\n}\n\n/* Success Result */\n.success-result {\n    background: white;\n}\n\n.success-result.failure .status-banner {\n    background: #dc3545 !important;\n}\n\n.status-banner {\n    padding: 16px 20px;\n    color: white;\n    display: flex;\n    align-items: center;\n    gap: 12px;\n    font-weight: 600;\n    font-size: 1.1em;\n}\n\n.status-banner i {\n    font-size: 1.2em;\n}\n\n.result-code {\n    margin-left: auto;\n    background: rgba(255,255,255,0.2);\n    padding: 4px 10px;\n    border-radius: 12px;\n    font-size: 0.9em;\n}\n\n.result-message {\n    padding: 20px;\n    border-bottom: 1px solid #e9ecef;\n}\n\n.result-message h5 {\n    margin: 0 0 12px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.result-message h5 i {\n    color: #17a2b8;\n}\n\n.result-message p {\n    margin: 0;\n    color: #6c757d;\n    line-height: 1.5;\n}\n\n.result-message .code-editor-container {\n    margin-bottom: 0;\n}\n\n.result-message .code-editor {\n    color: #e8e8e8;\n    background: #2d2d30;\n    max-height: 200px;\n    overflow-y: auto;\n}\n\n/* Result Data */\n.result-data {\n    padding: 20px;\n}\n\n.result-data h5 {\n    margin: 0 0 16px 0;\n    color: #495057;\n    display: flex;\n    align-items: center;\n    gap: 8px;\n}\n\n.result-data h5 i {\n    color: #6f42c1;\n}\n\n.toggle-view-btn {\n    margin-left: auto;\n    font-size: 0.85em;\n}\n\n.raw-data {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 4px;\n    padding: 16px;\n    margin: 0;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n    overflow-x: auto;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n/* Code Editor Styles */\n.code-editor-container {\n    background: #1e1e1e;\n    border-radius: 6px;\n    overflow: hidden;\n    margin-bottom: 16px;\n}\n\n.code-editor-container.compact {\n    margin-bottom: 0;\n}\n\n.code-editor-header {\n    background: #2d2d30;\n    padding: 8px 12px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    border-bottom: 1px solid #3e3e42;\n}\n\n.language-badge {\n    background: #007acc;\n    color: white;\n    padding: 2px 8px;\n    border-radius: 3px;\n    font-size: 0.75em;\n    font-weight: 600;\n    text-transform: uppercase;\n}\n\n.copy-btn {\n    color: #cccccc;\n    padding: 4px 8px;\n    min-width: auto;\n}\n\n.copy-btn:hover {\n    color: #ffffff;\n    background: rgba(255, 255, 255, 0.1);\n}\n\n.code-editor {\n    background: #1e1e1e;\n    color: #d4d4d4;\n    border: none;\n    border-radius: 0;\n    padding: 16px;\n    margin: 0;\n    font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n    font-size: 13px;\n    line-height: 1.5;\n    overflow-x: auto;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n.code-editor.json {\n    /* JSON syntax highlighting simulation */\n    color: #9cdcfe;\n}\n\n/* Output Parameters */\n.output-params {\n    display: grid;\n    gap: 16px;\n}\n\n.output-param {\n    background: #f8f9fa;\n    border: 1px solid #e9ecef;\n    border-radius: 6px;\n    padding: 16px;\n}\n\n.output-param label {\n    display: flex;\n    align-items: center;\n    gap: 6px;\n    margin-bottom: 8px;\n    font-weight: 600;\n    color: #495057;\n}\n\n.output-param label i {\n    color: #6f42c1;\n    font-size: 0.9em;\n}\n\n.output-value {\n    background: white;\n    border: 1px solid #dee2e6;\n    border-radius: 4px;\n    padding: 12px;\n}\n\n.output-value pre {\n    margin: 0;\n    font-family: 'Courier New', monospace;\n    font-size: 0.9em;\n    white-space: pre-wrap;\n    word-break: break-word;\n}\n\n.no-value {\n    color: #6c757d;\n    font-style: italic;\n}\n\n/* Responsive */\n@media (max-width: 768px) {\n    .params-grid {\n        grid-template-columns: 1fr;\n    }\n    \n    .harness-header {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 12px;\n    }\n    \n    .results-header {\n        flex-direction: column;\n        align-items: flex-start;\n        gap: 12px;\n    }\n    \n    .action-buttons {\n        flex-wrap: wrap;\n    }\n}"] }]
    }], () => [{ type: i0.ChangeDetectorRef }], { action: [{
            type: Input
        }], actionParams: [{
            type: Input
        }], isVisible: [{
            type: Input
        }], visibilityChange: [{
            type: Output
        }] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ActionTestHarnessComponent, { className: "ActionTestHarnessComponent", filePath: "src/lib/custom/Actions/action-test-harness.component.ts", lineNumber: 24 }); })();
//# sourceMappingURL=action-test-harness.component.js.map