@cqa-lib/cqa-ui 1.1.283 → 1.1.284
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/esm2020/lib/test-case-details/create-step-group/create-step-group.component.mjs +54 -9
- package/fesm2015/cqa-lib-cqa-ui.mjs +58 -11
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +53 -8
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/test-case-details/create-step-group/create-step-group.component.d.ts +4 -2
- package/package.json +1 -1
|
@@ -16,6 +16,8 @@ export class CreateStepGroupComponent {
|
|
|
16
16
|
constructor(fb) {
|
|
17
17
|
this.fb = fb;
|
|
18
18
|
this.stepsToGroup = [];
|
|
19
|
+
/** Pre-computed display labels from host (same order as stepsToGroup). When provided, used instead of computing from step. */
|
|
20
|
+
this.stepLabels = [];
|
|
19
21
|
this.createGroup = new EventEmitter();
|
|
20
22
|
this.cancelled = new EventEmitter();
|
|
21
23
|
this.form = this.fb.group({
|
|
@@ -31,8 +33,11 @@ export class CreateStepGroupComponent {
|
|
|
31
33
|
? 'Group 1 selected step into a container'
|
|
32
34
|
: `Group ${n} selected steps into a container`;
|
|
33
35
|
}
|
|
34
|
-
/** Display label for a step in the "Steps to group" list (same as main step list - use
|
|
36
|
+
/** Display label for a step in the "Steps to group" list (same as main step list - use stepLabels when provided). */
|
|
35
37
|
getStepDisplayLabel(step, index) {
|
|
38
|
+
if (this.stepLabels?.length > index && this.stepLabels[index] != null && this.stepLabels[index] !== '') {
|
|
39
|
+
return this.stepLabels[index];
|
|
40
|
+
}
|
|
36
41
|
// Prefer step.action - it matches the full display in the step list (e.g. "Enter @|password| in the Email")
|
|
37
42
|
const rawAction = step.action != null && String(step.action).trim() !== '' ? String(step.action) : '';
|
|
38
43
|
if (rawAction) {
|
|
@@ -74,19 +79,57 @@ export class CreateStepGroupComponent {
|
|
|
74
79
|
const params = step.parameters ?? [];
|
|
75
80
|
const getParam = (name) => params.find((p) => p.name?.toLowerCase() === name.toLowerCase());
|
|
76
81
|
const val = (p) => p?.displayValue ?? p?.value ?? '';
|
|
82
|
+
/** Use raw value (strip surrounding quotes from displayValue) for building full sentences */
|
|
83
|
+
const rawVal = (p) => {
|
|
84
|
+
const v = p?.value ?? p?.displayValue ?? '';
|
|
85
|
+
const s = String(v);
|
|
86
|
+
return s.replace(/^["']|["']$/g, '').trim() || s;
|
|
87
|
+
};
|
|
77
88
|
switch (step.eventType) {
|
|
78
89
|
case 'navigate': {
|
|
79
|
-
const url = getParam('url');
|
|
80
|
-
return url ? `Navigate to ${
|
|
90
|
+
const url = getParam('url') ?? params.find((p) => /url|baseUrl/i.test(p.name || ''));
|
|
91
|
+
return url ? `Navigate to ${rawVal(url)}` : 'Navigate';
|
|
92
|
+
}
|
|
93
|
+
case 'enter': {
|
|
94
|
+
const valueParam = getParam('value');
|
|
95
|
+
const labelParam = getParam('label');
|
|
96
|
+
const value = rawVal(valueParam);
|
|
97
|
+
const label = rawVal(labelParam);
|
|
98
|
+
if (value && label)
|
|
99
|
+
return `Enter ${value} in the ${label}`;
|
|
100
|
+
if (value)
|
|
101
|
+
return `Enter ${value}`;
|
|
102
|
+
if (label)
|
|
103
|
+
return `Enter in the ${label}`;
|
|
104
|
+
return 'Enter';
|
|
81
105
|
}
|
|
82
106
|
case 'ai-agent': {
|
|
83
107
|
const instructions = getParam('instructions') ?? getParam('description');
|
|
84
108
|
return val(instructions) || 'AI Agent step';
|
|
85
109
|
}
|
|
86
|
-
case 'type':
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
110
|
+
case 'type': {
|
|
111
|
+
const textParam = getParam('text') ?? getParam('value');
|
|
112
|
+
const elementParam = getParam('element') ?? getParam('label') ?? getParam('selector');
|
|
113
|
+
const text = rawVal(textParam);
|
|
114
|
+
const element = rawVal(elementParam);
|
|
115
|
+
if (text && element)
|
|
116
|
+
return `Enter ${text} in the ${element}`;
|
|
117
|
+
if (text)
|
|
118
|
+
return `Enter ${text}`;
|
|
119
|
+
return 'Type';
|
|
120
|
+
}
|
|
121
|
+
case 'click': {
|
|
122
|
+
const selector = getParam('element') ?? getParam('selector');
|
|
123
|
+
return selector ? `Click on ${rawVal(selector)}` : 'Click';
|
|
124
|
+
}
|
|
125
|
+
case 'doubleClick': {
|
|
126
|
+
const selector = getParam('element') ?? getParam('selector');
|
|
127
|
+
return selector ? `Double click on ${rawVal(selector)}` : 'Double click';
|
|
128
|
+
}
|
|
129
|
+
case 'pressEnter': {
|
|
130
|
+
const element = getParam('element');
|
|
131
|
+
return element ? `Press Enter on ${rawVal(element)}` : 'Press Enter';
|
|
132
|
+
}
|
|
90
133
|
case 'verify':
|
|
91
134
|
return val(getParam('description')) || 'Verify';
|
|
92
135
|
case 'custom': {
|
|
@@ -114,15 +157,17 @@ export class CreateStepGroupComponent {
|
|
|
114
157
|
}
|
|
115
158
|
}
|
|
116
159
|
CreateStepGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
117
|
-
CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: i2.CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
160
|
+
CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup", stepLabels: "stepLabels" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: i2.CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
118
161
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, decorators: [{
|
|
119
162
|
type: Component,
|
|
120
163
|
args: [{ selector: 'cqa-create-step-group', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n" }]
|
|
121
164
|
}], ctorParameters: function () { return [{ type: i1.FormBuilder }]; }, propDecorators: { stepsToGroup: [{
|
|
122
165
|
type: Input
|
|
166
|
+
}], stepLabels: [{
|
|
167
|
+
type: Input
|
|
123
168
|
}], createGroup: [{
|
|
124
169
|
type: Output
|
|
125
170
|
}], cancelled: [{
|
|
126
171
|
type: Output
|
|
127
172
|
}] } });
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jcmVhdGUtc3RlcC1ncm91cC9jcmVhdGUtc3RlcC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQU1sQzs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFRbkMsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFQbkMsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBRXZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDMUQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLN0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVE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QyxDQUFDLElBQUksTUFBTSxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOztxSEFoSFUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsaU5DeEJyQyxtMkhBc0ZBOzJGRDlEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCLFFBRTNCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FHckIsWUFBWTtzQkFBcEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gIFRlc3RDYXNlU3RlcENvbmZpZyxcbiAgTm9ybWFsU3RlcENvbmZpZyxcbiAgVGVzdENhc2VFdmVudFR5cGUsXG4gIGlzTm9ybWFsU3RlcENvbmZpZyxcbn0gZnJvbSAnLi4vdGVzdC1jYXNlLXN0ZXAubW9kZWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVTdGVwR3JvdXBGb3JtRGF0YSB7XG4gIGdyb3VwTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZSBTdGVwIEdyb3VwIHBhbmVsL21vZGFsIGZvciBUZXN0IENhc2UgRGV0YWlscy5cbiAqIEZvbGxvd3MgdGhlIHNhbWUgc3RydWN0dXJlIGFuZCB2YWxpZGF0aW9uIHBhdHRlcm4gYXMgVGVzdCBEYXRhIE1vZGFsIGFuZCBMb29wIFN0ZXAuXG4gKiBEaXNwbGF5cyBzZWxlY3RlZCBzdGVwcyBhbmQgYWxsb3dzIG5hbWluZyB0aGUgbmV3IGdyb3VwOyBlbWl0cyBjcmVhdGVHcm91cCB3aXRoIGdyb3VwIG5hbWVcbiAqIHNvIHRoZSBob3N0IGNhbiBjcmVhdGUgdGhlIHN0ZXAgZ3JvdXAgYW5kIHJlcGxhY2Ugc2VsZWN0ZWQgc3RlcHMgd2l0aCBpdC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3FhLWNyZWF0ZS1zdGVwLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgaG9zdDogeyBjbGFzczogJ2NxYS11aS1yb290JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVTdGVwR3JvdXBDb21wb25lbnQge1xuICBASW5wdXQoKSBzdGVwc1RvR3JvdXA6IFRlc3RDYXNlU3RlcENvbmZpZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIGNyZWF0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxDcmVhdGVTdGVwR3JvdXBGb3JtRGF0YT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGdyb3VwTmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSldXSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzdGVwc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNUb0dyb3VwPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGdldCBzdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuID0gdGhpcy5zdGVwc0NvdW50O1xuICAgIHJldHVybiBuID09PSAxXG4gICAgICA/ICdHcm91cCAxIHNlbGVjdGVkIHN0ZXAgaW50byBhIGNvbnRhaW5lcidcbiAgICAgIDogYEdyb3VwICR7bn0gc2VsZWN0ZWQgc3RlcHMgaW50byBhIGNvbnRhaW5lcmA7XG4gIH1cblxuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgYSBzdGVwIGluIHRoZSBcIlN0ZXBzIHRvIGdyb3VwXCIgbGlzdCAoc2FtZSBhcyBtYWluIHN0ZXAgbGlzdCAtIHVzZSBhY3Rpb24gd2hlbiBhdmFpbGFibGUpLiAqL1xuICBnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgLy8gUHJlZmVyIHN0ZXAuYWN0aW9uIC0gaXQgbWF0Y2hlcyB0aGUgZnVsbCBkaXNwbGF5IGluIHRoZSBzdGVwIGxpc3QgKGUuZy4gXCJFbnRlciBAfHBhc3N3b3JkfCBpbiB0aGUgRW1haWxcIilcbiAgICBjb25zdCByYXdBY3Rpb24gPSBzdGVwLmFjdGlvbiAhPSBudWxsICYmIFN0cmluZyhzdGVwLmFjdGlvbikudHJpbSgpICE9PSAnJyA/IFN0cmluZyhzdGVwLmFjdGlvbikgOiAnJztcbiAgICBpZiAocmF3QWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcEh0bWwocmF3QWN0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlzTm9ybWFsU3RlcENvbmZpZyhzdGVwKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXApO1xuICAgIH1cbiAgICBpZiAoJ2dyb3VwTmFtZScgaW4gc3RlcCAmJiBzdGVwLmdyb3VwTmFtZSkge1xuICAgICAgcmV0dXJuIHN0ZXAuZ3JvdXBOYW1lO1xuICAgIH1cbiAgICBpZiAoJ2NvbmRpdGlvbicgaW4gc3RlcCAmJiBzdGVwLmNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuY29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoJ2xvb3BUeXBlJyBpbiBzdGVwKSB7XG4gICAgICBjb25zdCBsb29wID0gc3RlcCBhcyB7IGxvb3BUeXBlOiBzdHJpbmc7IHRlc3REYXRhUHJvZmlsZT86IHN0cmluZzsgY29uZGl0aW9uPzogc3RyaW5nIH07XG4gICAgICBpZiAobG9vcC5sb29wVHlwZSA9PT0gJ2ZvcicgJiYgbG9vcC50ZXN0RGF0YVByb2ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGBGb3IgbG9vcDogJHtsb29wLnRlc3REYXRhUHJvZmlsZX1gO1xuICAgICAgfVxuICAgICAgaWYgKGxvb3AubG9vcFR5cGUgPT09ICd3aGlsZScgJiYgbG9vcC5jb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGBXaGlsZTogJHtsb29wLmNvbmRpdGlvbn1gO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RlcC5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIHJldHVybiBgU3RlcCAke2luZGV4ICsgMX1gO1xuICB9XG5cbiAgLyoqIFN0cmlwIEhUTUwgdGFncyBmb3IgcGxhaW4tdGV4dCBkaXNwbGF5IChhY3Rpb24gbWF5IGNvbnRhaW4gc3BhbnMgZm9yIGJhZGdlcykuICovXG4gIHByaXZhdGUgc3RyaXBIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdG1wLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICByZXR1cm4gKHRtcC50ZXh0Q29udGVudCB8fCB0bXAuaW5uZXJUZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBodG1sLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXA6IE5vcm1hbFN0ZXBDb25maWcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN0ZXAucGFyYW1ldGVycyA/PyBbXTtcbiAgICBjb25zdCBnZXRQYXJhbSA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgICBwYXJhbXMuZmluZCgocCkgPT4gcC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IHZhbCA9IChwOiB7IHZhbHVlPzogc3RyaW5nOyBkaXNwbGF5VmFsdWU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIHA/LmRpc3BsYXlWYWx1ZSA/PyBwPy52YWx1ZSA/PyAnJztcblxuICAgIHN3aXRjaCAoc3RlcC5ldmVudFR5cGUgYXMgVGVzdENhc2VFdmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ25hdmlnYXRlJzoge1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRQYXJhbSgndXJsJyk7XG4gICAgICAgIHJldHVybiB1cmwgPyBgTmF2aWdhdGUgdG8gJHt2YWwodXJsKX1gIDogJ05hdmlnYXRlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2FpLWFnZW50Jzoge1xuICAgICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBnZXRQYXJhbSgnaW5zdHJ1Y3Rpb25zJykgPz8gZ2V0UGFyYW0oJ2Rlc2NyaXB0aW9uJyk7XG4gICAgICAgIHJldHVybiB2YWwoaW5zdHJ1Y3Rpb25zKSB8fCAnQUkgQWdlbnQgc3RlcCc7XG4gICAgICB9XG4gICAgICBjYXNlICd0eXBlJzpcbiAgICAgICAgcmV0dXJuIHZhbChnZXRQYXJhbSgndGV4dCcpKSB8fCAnVHlwZSc7XG4gICAgICBjYXNlICdjbGljayc6XG4gICAgICAgIHJldHVybiB2YWwoZ2V0UGFyYW0oJ3NlbGVjdG9yJykpID8gYENsaWNrICR7dmFsKGdldFBhcmFtKCdzZWxlY3RvcicpKX1gIDogJ0NsaWNrJztcbiAgICAgIGNhc2UgJ3ZlcmlmeSc6XG4gICAgICAgIHJldHVybiB2YWwoZ2V0UGFyYW0oJ2Rlc2NyaXB0aW9uJykpIHx8ICdWZXJpZnknO1xuICAgICAgY2FzZSAnY3VzdG9tJzoge1xuICAgICAgICBjb25zdCBkZXNjID0gZ2V0UGFyYW0oJ2Rlc2NyaXB0aW9uJykgPz8gZ2V0UGFyYW0oJ2FjdGlvbicpO1xuICAgICAgICByZXR1cm4gdmFsKGRlc2MpIHx8ICdDdXN0b20gc3RlcCc7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsKGdldFBhcmFtKCdkZXNjcmlwdGlvbicpKSB8fCB2YWwocGFyYW1zWzBdKSB8fCAnU3RlcCc7XG4gICAgfVxuICB9XG5cbiAgb25DYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5jYW5jZWxsZWQuZW1pdCgpO1xuICB9XG5cbiAgb25DcmVhdGVHcm91cCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgdGhpcy5zdGVwc0NvdW50ID09PSAwKSB7XG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBncm91cE5hbWUgPSAodGhpcy5mb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnZhbHVlID8/ICcnKS50cmltKCk7XG4gICAgaWYgKCFncm91cE5hbWUpIHtcbiAgICAgIHRoaXMuZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5zZXRFcnJvcnMoeyByZXF1aXJlZDogdHJ1ZSB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jcmVhdGVHcm91cC5lbWl0KHsgZ3JvdXBOYW1lIH0pO1xuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY3FhLWJnLXdoaXRlIGNxYS1yb3VuZGVkLVsxMnB4XSBjcWEtc2hhZG93LWxnIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtdy1mdWxsIGNxYS1tYXgtdy1bNTAwcHhdIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTQgY3FhLXAtNiBjcWEtYm94LWJvcmRlciBjcWEtbWluLWgtMFwiPlxuICA8IS0tIEhlYWRlcjogdGl0bGUgKyBjbG9zZSAoWCkgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RhcnQgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtZ2FwLTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMSBjcWEtbWluLXctMFwiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsyNHB4XSBjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbS0wXCI+XG4gICAgICAgIENyZWF0ZSBzdGVwIGdyb3VwXG4gICAgICA8L2gyPlxuICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzIwcHhdIGNxYS10ZXh0LVsjNjQ3NDhCXSBjcWEtbS0wXCI+XG4gICAgICAgIHt7IHN1YnRpdGxlVGV4dCB9fVxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxuICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtbWluLWgtNyBjcWEtbWluLXctNyBjcWEtcm91bmRlZCBjcWEtdGV4dC1bIzZCNzI4MF0gaG92ZXI6Y3FhLWJnLVsjRjNGNEY2XSBjcWEtcC0wIGNxYS1mbGV4LXNocmluay0wXCJcbiAgICAgIHRpdGxlPVwiQ2xvc2VcIlxuICAgICAgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xOCA2TDYgMThNNiA2bDEyIDEyXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cblxuICA8IS0tIEdyb3VwIG5hbWUgKiAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEuNVwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bIzE2MTYxN11cIj5cbiAgICAgIEdyb3VwIG5hbWUgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1yZWQtNTAwXCI+Kjwvc3Bhbj5cbiAgICA8L2xhYmVsPlxuICAgIDxjcWEtY3VzdG9tLWlucHV0XG4gICAgICBwbGFjZWhvbGRlcj1cImUuZy4sIEF1dGhlbnRpY2F0aW9uIGZsb3dcIlxuICAgICAgW3ZhbHVlXT1cImZvcm0uZ2V0KCdncm91cE5hbWUnKT8udmFsdWVcIlxuICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgIHNpemU9XCJtZFwiXG4gICAgICAodmFsdWVDaGFuZ2UpPVwiZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy5zZXRWYWx1ZSgkZXZlbnQpOyBmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKVwiPlxuICAgIDwvY3FhLWN1c3RvbS1pbnB1dD5cbiAgICA8cCAqbmdJZj1cImZvcm0uZ2V0KCdncm91cE5hbWUnKT8uaW52YWxpZCAmJiBmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWRcIiBjbGFzcz1cImNxYS10ZXh0LXhzIGNxYS10ZXh0LXJlZC01MDAgY3FhLW0tMFwiPlxuICAgICAgR3JvdXAgbmFtZSBpcyByZXF1aXJlZC5cbiAgICA8L3A+XG4gIDwvZGl2PlxuXG4gIDwhLS0gU3RlcHMgdG8gZ3JvdXAgKE4pIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtMlwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNxYS1mb250LXNlbWlib2xkIGNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTAwJV0gY3FhLXRyYWNraW5nLW5vcm1hbCBjcWEtdGV4dC1bIzBBMEEwQV0gY3FhLWFsaWduLW1pZGRsZVwiPlxuICAgICAgU3RlcHMgdG8gZ3JvdXAgKHt7IHN0ZXBzQ291bnQgfX0pXG4gICAgPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLXNjcm9sbGJhci1oaWRlIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTIgY3FhLW1heC1oLVsyMDBweF0gY3FhLW92ZXJmbG93LXktYXV0byBjcWEtcm91bmRlZC1bOHB4XSBjcWEtcC1bNnB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bcmdiYSgwLDAsMCwwLjEpXVwiPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwc1RvR3JvdXA7IGxldCBpID0gaW5kZXhcIlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1yb3VuZGVkLVs0cHhdIGNxYS1weS1bNHB4XSBjcWEtcHgtWzhweF0gY3FhLWJnLVtyZ2JhKDIxNiwyMTcsMjUyLDAuMyldXCI+XG4gICAgICAgIDwhLS0gTnVtYmVyZWQgYmFkZ2UgLS0+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtdy03IGNxYS1oLTcgY3FhLXJvdW5kZWQtZnVsbCBjcWEtYmctWyMzRjQzRUVdIGNxYS10ZXh0LXdoaXRlIGNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy1bMTVweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS1mbGV4LXNocmluay0wXCI+XG4gICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS1mb250LW1lZGl1bSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS10cmFja2luZy1bMHB4XSBjcWEtdGV4dC1bIzBCMEIwQ10gY3FhLWZsZXgtMSBjcWEtbWluLXctMCBjcWEtdHJ1bmNhdGVcIj5cbiAgICAgICAgICB7eyBnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXAsIGkpIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIEFjdGlvbnM6IENhbmNlbCB8IENyZWF0ZSBncm91cCAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1zdHJldGNoIGNxYS13LWZ1bGwgY3FhLWdhcC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4LTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxjcWEtYnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIHRleHQ9XCJDYW5jZWxcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzQxNDE0Nl0nXCJcbiAgICAgICAgKGNsaWNrZWQpPVwib25DYW5jZWwoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgYnRuU2l6ZT1cImxnXCJcbiAgICAgICAgdGV4dD1cIkNyZWF0ZSBncm91cFwiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtjdXN0b21DbGFzc109XCInY3FhLXRleHQtWzE0cHhdIGNxYS1weS1bOXB4XSBjcWEtYm9yZGVyLVsjM0Y0M0VFXSBjcWEtYmctWyMzRjQzRUVdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ3JlYXRlR3JvdXAoKVwiPlxuICAgICAgPC9jcWEtYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
173
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXN0LWNhc2UtZGV0YWlscy9jcmVhdGUtc3RlcC1ncm91cC9jcmVhdGUtc3RlcC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3Rlc3QtY2FzZS1kZXRhaWxzL2NyZWF0ZS1zdGVwLWdyb3VwL2NyZWF0ZS1zdGVwLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBSUwsa0JBQWtCLEdBQ25CLE1BQU0sMEJBQTBCLENBQUM7Ozs7OztBQU1sQzs7Ozs7R0FLRztBQU1ILE1BQU0sT0FBTyx3QkFBd0I7SUFVbkMsWUFBNkIsRUFBZTtRQUFmLE9BQUUsR0FBRixFQUFFLENBQWE7UUFUbkMsaUJBQVksR0FBeUIsRUFBRSxDQUFDO1FBQ2pELDhIQUE4SDtRQUNySCxlQUFVLEdBQWEsRUFBRSxDQUFDO1FBRXpCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFDMUQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFLN0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNoRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsWUFBWSxF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QztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDN0IsT0FBTztTQUNSO1FBQ0QsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkUsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzFELE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDOztxSEF0SlUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsMk9DeEJyQyxtMkhBc0ZBOzJGRDlEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsdUJBQXVCLFFBRTNCLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtrR0FHckIsWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgVGVzdENhc2VTdGVwQ29uZmlnLFxuICBOb3JtYWxTdGVwQ29uZmlnLFxuICBUZXN0Q2FzZUV2ZW50VHlwZSxcbiAgaXNOb3JtYWxTdGVwQ29uZmlnLFxufSBmcm9tICcuLi90ZXN0LWNhc2Utc3RlcC5tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVN0ZXBHcm91cEZvcm1EYXRhIHtcbiAgZ3JvdXBOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlIFN0ZXAgR3JvdXAgcGFuZWwvbW9kYWwgZm9yIFRlc3QgQ2FzZSBEZXRhaWxzLlxuICogRm9sbG93cyB0aGUgc2FtZSBzdHJ1Y3R1cmUgYW5kIHZhbGlkYXRpb24gcGF0dGVybiBhcyBUZXN0IERhdGEgTW9kYWwgYW5kIExvb3AgU3RlcC5cbiAqIERpc3BsYXlzIHNlbGVjdGVkIHN0ZXBzIGFuZCBhbGxvd3MgbmFtaW5nIHRoZSBuZXcgZ3JvdXA7IGVtaXRzIGNyZWF0ZUdyb3VwIHdpdGggZ3JvdXAgbmFtZVxuICogc28gdGhlIGhvc3QgY2FuIGNyZWF0ZSB0aGUgc3RlcCBncm91cCBhbmQgcmVwbGFjZSBzZWxlY3RlZCBzdGVwcyB3aXRoIGl0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtY3JlYXRlLXN0ZXAtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3JlYXRlLXN0ZXAtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICBob3N0OiB7IGNsYXNzOiAnY3FhLXVpLXJvb3QnIH0sXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZVN0ZXBHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHN0ZXBzVG9Hcm91cDogVGVzdENhc2VTdGVwQ29uZmlnW10gPSBbXTtcbiAgLyoqIFByZS1jb21wdXRlZCBkaXNwbGF5IGxhYmVscyBmcm9tIGhvc3QgKHNhbWUgb3JkZXIgYXMgc3RlcHNUb0dyb3VwKS4gV2hlbiBwcm92aWRlZCwgdXNlZCBpbnN0ZWFkIG9mIGNvbXB1dGluZyBmcm9tIHN0ZXAuICovXG4gIEBJbnB1dCgpIHN0ZXBMYWJlbHM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpIGNyZWF0ZUdyb3VwID0gbmV3IEV2ZW50RW1pdHRlcjxDcmVhdGVTdGVwR3JvdXBGb3JtRGF0YT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbGxlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGdyb3VwTmFtZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMSldXSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBzdGVwc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuc3RlcHNUb0dyb3VwPy5sZW5ndGggPz8gMDtcbiAgfVxuXG4gIGdldCBzdWJ0aXRsZVRleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBuID0gdGhpcy5zdGVwc0NvdW50O1xuICAgIHJldHVybiBuID09PSAxXG4gICAgICA/ICdHcm91cCAxIHNlbGVjdGVkIHN0ZXAgaW50byBhIGNvbnRhaW5lcidcbiAgICAgIDogYEdyb3VwICR7bn0gc2VsZWN0ZWQgc3RlcHMgaW50byBhIGNvbnRhaW5lcmA7XG4gIH1cblxuICAvKiogRGlzcGxheSBsYWJlbCBmb3IgYSBzdGVwIGluIHRoZSBcIlN0ZXBzIHRvIGdyb3VwXCIgbGlzdCAoc2FtZSBhcyBtYWluIHN0ZXAgbGlzdCAtIHVzZSBzdGVwTGFiZWxzIHdoZW4gcHJvdmlkZWQpLiAqL1xuICBnZXRTdGVwRGlzcGxheUxhYmVsKHN0ZXA6IFRlc3RDYXNlU3RlcENvbmZpZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuc3RlcExhYmVscz8ubGVuZ3RoID4gaW5kZXggJiYgdGhpcy5zdGVwTGFiZWxzW2luZGV4XSAhPSBudWxsICYmIHRoaXMuc3RlcExhYmVsc1tpbmRleF0gIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdGVwTGFiZWxzW2luZGV4XTtcbiAgICB9XG4gICAgLy8gUHJlZmVyIHN0ZXAuYWN0aW9uIC0gaXQgbWF0Y2hlcyB0aGUgZnVsbCBkaXNwbGF5IGluIHRoZSBzdGVwIGxpc3QgKGUuZy4gXCJFbnRlciBAfHBhc3N3b3JkfCBpbiB0aGUgRW1haWxcIilcbiAgICBjb25zdCByYXdBY3Rpb24gPSBzdGVwLmFjdGlvbiAhPSBudWxsICYmIFN0cmluZyhzdGVwLmFjdGlvbikudHJpbSgpICE9PSAnJyA/IFN0cmluZyhzdGVwLmFjdGlvbikgOiAnJztcbiAgICBpZiAocmF3QWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdHJpcEh0bWwocmF3QWN0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlzTm9ybWFsU3RlcENvbmZpZyhzdGVwKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXApO1xuICAgIH1cbiAgICBpZiAoJ2dyb3VwTmFtZScgaW4gc3RlcCAmJiBzdGVwLmdyb3VwTmFtZSkge1xuICAgICAgcmV0dXJuIHN0ZXAuZ3JvdXBOYW1lO1xuICAgIH1cbiAgICBpZiAoJ2NvbmRpdGlvbicgaW4gc3RlcCAmJiBzdGVwLmNvbmRpdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuY29uZGl0aW9uO1xuICAgIH1cbiAgICBpZiAoJ2xvb3BUeXBlJyBpbiBzdGVwKSB7XG4gICAgICBjb25zdCBsb29wID0gc3RlcCBhcyB7IGxvb3BUeXBlOiBzdHJpbmc7IHRlc3REYXRhUHJvZmlsZT86IHN0cmluZzsgY29uZGl0aW9uPzogc3RyaW5nIH07XG4gICAgICBpZiAobG9vcC5sb29wVHlwZSA9PT0gJ2ZvcicgJiYgbG9vcC50ZXN0RGF0YVByb2ZpbGUpIHtcbiAgICAgICAgcmV0dXJuIGBGb3IgbG9vcDogJHtsb29wLnRlc3REYXRhUHJvZmlsZX1gO1xuICAgICAgfVxuICAgICAgaWYgKGxvb3AubG9vcFR5cGUgPT09ICd3aGlsZScgJiYgbG9vcC5jb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGBXaGlsZTogJHtsb29wLmNvbmRpdGlvbn1gO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc3RlcC5kZXNjcmlwdGlvbikge1xuICAgICAgcmV0dXJuIHN0ZXAuZGVzY3JpcHRpb247XG4gICAgfVxuICAgIHJldHVybiBgU3RlcCAke2luZGV4ICsgMX1gO1xuICB9XG5cbiAgLyoqIFN0cmlwIEhUTUwgdGFncyBmb3IgcGxhaW4tdGV4dCBkaXNwbGF5IChhY3Rpb24gbWF5IGNvbnRhaW4gc3BhbnMgZm9yIGJhZGdlcykuICovXG4gIHByaXZhdGUgc3RyaXBIdG1sKGh0bWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNvbnN0IHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdG1wLmlubmVySFRNTCA9IGh0bWw7XG4gICAgICByZXR1cm4gKHRtcC50ZXh0Q29udGVudCB8fCB0bXAuaW5uZXJUZXh0IHx8ICcnKS50cmltKCk7XG4gICAgfVxuICAgIHJldHVybiBodG1sLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9ybWFsU3RlcExhYmVsKHN0ZXA6IE5vcm1hbFN0ZXBDb25maWcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHBhcmFtcyA9IHN0ZXAucGFyYW1ldGVycyA/PyBbXTtcbiAgICBjb25zdCBnZXRQYXJhbSA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgICBwYXJhbXMuZmluZCgocCkgPT4gcC5uYW1lPy50b0xvd2VyQ2FzZSgpID09PSBuYW1lLnRvTG93ZXJDYXNlKCkpO1xuICAgIGNvbnN0IHZhbCA9IChwOiB7IHZhbHVlPzogc3RyaW5nOyBkaXNwbGF5VmFsdWU/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCkgPT5cbiAgICAgIHA/LmRpc3BsYXlWYWx1ZSA/PyBwPy52YWx1ZSA/PyAnJztcbiAgICAvKiogVXNlIHJhdyB2YWx1ZSAoc3RyaXAgc3Vycm91bmRpbmcgcXVvdGVzIGZyb20gZGlzcGxheVZhbHVlKSBmb3IgYnVpbGRpbmcgZnVsbCBzZW50ZW5jZXMgKi9cbiAgICBjb25zdCByYXdWYWwgPSAocDogeyB2YWx1ZT86IHN0cmluZzsgZGlzcGxheVZhbHVlPzogc3RyaW5nIH0gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGNvbnN0IHYgPSBwPy52YWx1ZSA/PyBwPy5kaXNwbGF5VmFsdWUgPz8gJyc7XG4gICAgICBjb25zdCBzID0gU3RyaW5nKHYpO1xuICAgICAgcmV0dXJuIHMucmVwbGFjZSgvXltcIiddfFtcIiddJC9nLCAnJykudHJpbSgpIHx8IHM7XG4gICAgfTtcblxuICAgIHN3aXRjaCAoc3RlcC5ldmVudFR5cGUgYXMgVGVzdENhc2VFdmVudFR5cGUpIHtcbiAgICAgIGNhc2UgJ25hdmlnYXRlJzoge1xuICAgICAgICBjb25zdCB1cmwgPSBnZXRQYXJhbSgndXJsJykgPz8gcGFyYW1zLmZpbmQoKHApID0+IC91cmx8YmFzZVVybC9pLnRlc3QocC5uYW1lIHx8ICcnKSk7XG4gICAgICAgIHJldHVybiB1cmwgPyBgTmF2aWdhdGUgdG8gJHtyYXdWYWwodXJsKX1gIDogJ05hdmlnYXRlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2VudGVyJzoge1xuICAgICAgICBjb25zdCB2YWx1ZVBhcmFtID0gZ2V0UGFyYW0oJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IGxhYmVsUGFyYW0gPSBnZXRQYXJhbSgnbGFiZWwnKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByYXdWYWwodmFsdWVQYXJhbSk7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gcmF3VmFsKGxhYmVsUGFyYW0pO1xuICAgICAgICBpZiAodmFsdWUgJiYgbGFiZWwpIHJldHVybiBgRW50ZXIgJHt2YWx1ZX0gaW4gdGhlICR7bGFiZWx9YDtcbiAgICAgICAgaWYgKHZhbHVlKSByZXR1cm4gYEVudGVyICR7dmFsdWV9YDtcbiAgICAgICAgaWYgKGxhYmVsKSByZXR1cm4gYEVudGVyIGluIHRoZSAke2xhYmVsfWA7XG4gICAgICAgIHJldHVybiAnRW50ZXInO1xuICAgICAgfVxuICAgICAgY2FzZSAnYWktYWdlbnQnOiB7XG4gICAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IGdldFBhcmFtKCdpbnN0cnVjdGlvbnMnKSA/PyBnZXRQYXJhbSgnZGVzY3JpcHRpb24nKTtcbiAgICAgICAgcmV0dXJuIHZhbChpbnN0cnVjdGlvbnMpIHx8ICdBSSBBZ2VudCBzdGVwJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3R5cGUnOiB7XG4gICAgICAgIGNvbnN0IHRleHRQYXJhbSA9IGdldFBhcmFtKCd0ZXh0JykgPz8gZ2V0UGFyYW0oJ3ZhbHVlJyk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRQYXJhbSA9IGdldFBhcmFtKCdlbGVtZW50JykgPz8gZ2V0UGFyYW0oJ2xhYmVsJykgPz8gZ2V0UGFyYW0oJ3NlbGVjdG9yJyk7XG4gICAgICAgIGNvbnN0IHRleHQgPSByYXdWYWwodGV4dFBhcmFtKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHJhd1ZhbChlbGVtZW50UGFyYW0pO1xuICAgICAgICBpZiAodGV4dCAmJiBlbGVtZW50KSByZXR1cm4gYEVudGVyICR7dGV4dH0gaW4gdGhlICR7ZWxlbWVudH1gO1xuICAgICAgICBpZiAodGV4dCkgcmV0dXJuIGBFbnRlciAke3RleHR9YDtcbiAgICAgICAgcmV0dXJuICdUeXBlJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NsaWNrJzoge1xuICAgICAgICBjb25zdCBzZWxlY3RvciA9IGdldFBhcmFtKCdlbGVtZW50JykgPz8gZ2V0UGFyYW0oJ3NlbGVjdG9yJyk7XG4gICAgICAgIHJldHVybiBzZWxlY3RvciA/IGBDbGljayBvbiAke3Jhd1ZhbChzZWxlY3Rvcil9YCA6ICdDbGljayc7XG4gICAgICB9XG4gICAgICBjYXNlICdkb3VibGVDbGljayc6IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRQYXJhbSgnZWxlbWVudCcpID8/IGdldFBhcmFtKCdzZWxlY3RvcicpO1xuICAgICAgICByZXR1cm4gc2VsZWN0b3IgPyBgRG91YmxlIGNsaWNrIG9uICR7cmF3VmFsKHNlbGVjdG9yKX1gIDogJ0RvdWJsZSBjbGljayc7XG4gICAgICB9XG4gICAgICBjYXNlICdwcmVzc0VudGVyJzoge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZ2V0UGFyYW0oJ2VsZW1lbnQnKTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQgPyBgUHJlc3MgRW50ZXIgb24gJHtyYXdWYWwoZWxlbWVudCl9YCA6ICdQcmVzcyBFbnRlcic7XG4gICAgICB9XG4gICAgICBjYXNlICd2ZXJpZnknOlxuICAgICAgICByZXR1cm4gdmFsKGdldFBhcmFtKCdkZXNjcmlwdGlvbicpKSB8fCAnVmVyaWZ5JztcbiAgICAgIGNhc2UgJ2N1c3RvbSc6IHtcbiAgICAgICAgY29uc3QgZGVzYyA9IGdldFBhcmFtKCdkZXNjcmlwdGlvbicpID8/IGdldFBhcmFtKCdhY3Rpb24nKTtcbiAgICAgICAgcmV0dXJuIHZhbChkZXNjKSB8fCAnQ3VzdG9tIHN0ZXAnO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHZhbChnZXRQYXJhbSgnZGVzY3JpcHRpb24nKSkgfHwgdmFsKHBhcmFtc1swXSkgfHwgJ1N0ZXAnO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsbGVkLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ3JlYXRlR3JvdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkIHx8IHRoaXMuc3RlcHNDb3VudCA9PT0gMCkge1xuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBOYW1lID0gKHRoaXMuZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy52YWx1ZSA/PyAnJykudHJpbSgpO1xuICAgIGlmICghZ3JvdXBOYW1lKSB7XG4gICAgICB0aGlzLmZvcm0uZ2V0KCdncm91cE5hbWUnKT8uc2V0RXJyb3JzKHsgcmVxdWlyZWQ6IHRydWUgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3JlYXRlR3JvdXAuZW1pdCh7IGdyb3VwTmFtZSB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bMTJweF0gY3FhLXNoYWRvdy1sZyBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXctZnVsbCBjcWEtbWF4LXctWzUwMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00IGNxYS1wLTYgY3FhLWJveC1ib3JkZXIgY3FhLW1pbi1oLTBcIj5cbiAgPCEtLSBIZWFkZXI6IHRpdGxlICsgY2xvc2UgKFgpIC0tPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLXN0YXJ0IGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLWdhcC0yXCI+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTEgY3FhLW1pbi13LTBcIj5cbiAgICAgIDxoMiBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMjRweF0gY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLW0tMFwiPlxuICAgICAgICBDcmVhdGUgc3RlcCBncm91cFxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsyMHB4XSBjcWEtdGV4dC1bIzY0NzQ4Ql0gY3FhLW0tMFwiPlxuICAgICAgICB7eyBzdWJ0aXRsZVRleHQgfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIChjbGljayk9XCJvbkNhbmNlbCgpXCJcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLW1pbi1oLTcgY3FhLW1pbi13LTcgY3FhLXJvdW5kZWQgY3FhLXRleHQtWyM2QjcyODBdIGhvdmVyOmNxYS1iZy1bI0YzRjRGNl0gY3FhLXAtMCBjcWEtZmxleC1zaHJpbmstMFwiXG4gICAgICB0aXRsZT1cIkNsb3NlXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTggNkw2IDE4TTYgNmwxMiAxMlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBHcm91cCBuYW1lICogLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0xLjVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWyMxNjE2MTddXCI+XG4gICAgICBHcm91cCBuYW1lIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQtcmVkLTUwMFwiPio8L3NwYW4+XG4gICAgPC9sYWJlbD5cbiAgICA8Y3FhLWN1c3RvbS1pbnB1dFxuICAgICAgcGxhY2Vob2xkZXI9XCJlLmcuLCBBdXRoZW50aWNhdGlvbiBmbG93XCJcbiAgICAgIFt2YWx1ZV09XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LnZhbHVlXCJcbiAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICBzaXplPVwibWRcIlxuICAgICAgKHZhbHVlQ2hhbmdlKT1cImZvcm0uZ2V0KCdncm91cE5hbWUnKT8uc2V0VmFsdWUoJGV2ZW50KTsgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KClcIj5cbiAgICA8L2NxYS1jdXN0b20taW5wdXQ+XG4gICAgPHAgKm5nSWY9XCJmb3JtLmdldCgnZ3JvdXBOYW1lJyk/LmludmFsaWQgJiYgZm9ybS5nZXQoJ2dyb3VwTmFtZScpPy50b3VjaGVkXCIgY2xhc3M9XCJjcWEtdGV4dC14cyBjcWEtdGV4dC1yZWQtNTAwIGNxYS1tLTBcIj5cbiAgICAgIEdyb3VwIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgPC9wPlxuICA8L2Rpdj5cblxuICA8IS0tIFN0ZXBzIHRvIGdyb3VwIChOKSAtLT5cbiAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTJcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjcWEtZm9udC1zZW1pYm9sZCBjcWEtdGV4dC1bMTJweF0gY3FhLWxlYWRpbmctWzEwMCVdIGNxYS10cmFja2luZy1ub3JtYWwgY3FhLXRleHQtWyMwQTBBMEFdIGNxYS1hbGlnbi1taWRkbGVcIj5cbiAgICAgIFN0ZXBzIHRvIGdyb3VwICh7eyBzdGVwc0NvdW50IH19KVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNxYS1zY3JvbGxiYXItaGlkZSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0yIGNxYS1tYXgtaC1bMjAwcHhdIGNxYS1vdmVyZmxvdy15LWF1dG8gY3FhLXJvdW5kZWQtWzhweF0gY3FhLXAtWzZweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItW3JnYmEoMCwwLDAsMC4xKV1cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHNUb0dyb3VwOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMiBjcWEtcm91bmRlZC1bNHB4XSBjcWEtcHktWzRweF0gY3FhLXB4LVs4cHhdIGNxYS1iZy1bcmdiYSgyMTYsMjE3LDI1MiwwLjMpXVwiPlxuICAgICAgICA8IS0tIE51bWJlcmVkIGJhZGdlIC0tPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXctNyBjcWEtaC03IGNxYS1yb3VuZGVkLWZ1bGwgY3FhLWJnLVsjM0Y0M0VFXSBjcWEtdGV4dC13aGl0ZSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdIGNxYS1mb250LW1lZGl1bSBjcWEtZmxleC1zaHJpbmstMFwiPlxuICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1tZWRpdW0gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdHJhY2tpbmctWzBweF0gY3FhLXRleHQtWyMwQjBCMENdIGNxYS1mbGV4LTEgY3FhLW1pbi13LTAgY3FhLXRydW5jYXRlXCI+XG4gICAgICAgICAge3sgZ2V0U3RlcERpc3BsYXlMYWJlbChzdGVwLCBpKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPCEtLSBBY3Rpb25zOiBDYW5jZWwgfCBDcmVhdGUgZ3JvdXAgLS0+XG4gIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtdy1mdWxsIGNxYS1nYXAtM1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS1taW4tdy0wXCI+XG4gICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBidG5TaXplPVwibGdcIlxuICAgICAgICB0ZXh0PVwiQ2FuY2VsXCJcbiAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtdGV4dC1bMTRweF0gY3FhLXB5LVs5cHhdIGNxYS1ib3JkZXItWyM0MTQxNDZdJ1wiXG4gICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtbWluLXctMFwiPlxuICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIGJ0blNpemU9XCJsZ1wiXG4gICAgICAgIHRleHQ9XCJDcmVhdGUgZ3JvdXBcIlxuICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS10ZXh0LVsxNHB4XSBjcWEtcHktWzlweF0gY3FhLWJvcmRlci1bIzNGNDNFRV0gY3FhLWJnLVsjM0Y0M0VFXSdcIlxuICAgICAgICAoY2xpY2tlZCk9XCJvbkNyZWF0ZUdyb3VwKClcIj5cbiAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -25875,6 +25875,8 @@ class CreateStepGroupComponent {
|
|
|
25875
25875
|
constructor(fb) {
|
|
25876
25876
|
this.fb = fb;
|
|
25877
25877
|
this.stepsToGroup = [];
|
|
25878
|
+
/** Pre-computed display labels from host (same order as stepsToGroup). When provided, used instead of computing from step. */
|
|
25879
|
+
this.stepLabels = [];
|
|
25878
25880
|
this.createGroup = new EventEmitter();
|
|
25879
25881
|
this.cancelled = new EventEmitter();
|
|
25880
25882
|
this.form = this.fb.group({
|
|
@@ -25891,8 +25893,12 @@ class CreateStepGroupComponent {
|
|
|
25891
25893
|
? 'Group 1 selected step into a container'
|
|
25892
25894
|
: `Group ${n} selected steps into a container`;
|
|
25893
25895
|
}
|
|
25894
|
-
/** Display label for a step in the "Steps to group" list (same as main step list - use
|
|
25896
|
+
/** Display label for a step in the "Steps to group" list (same as main step list - use stepLabels when provided). */
|
|
25895
25897
|
getStepDisplayLabel(step, index) {
|
|
25898
|
+
var _a;
|
|
25899
|
+
if (((_a = this.stepLabels) === null || _a === void 0 ? void 0 : _a.length) > index && this.stepLabels[index] != null && this.stepLabels[index] !== '') {
|
|
25900
|
+
return this.stepLabels[index];
|
|
25901
|
+
}
|
|
25896
25902
|
// Prefer step.action - it matches the full display in the step list (e.g. "Enter @|password| in the Email")
|
|
25897
25903
|
const rawAction = step.action != null && String(step.action).trim() !== '' ? String(step.action) : '';
|
|
25898
25904
|
if (rawAction) {
|
|
@@ -25931,27 +25937,66 @@ class CreateStepGroupComponent {
|
|
|
25931
25937
|
return html.replace(/<[^>]*>/g, '').replace(/ /g, ' ').trim();
|
|
25932
25938
|
}
|
|
25933
25939
|
getNormalStepLabel(step) {
|
|
25934
|
-
var _a, _b, _c;
|
|
25940
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
25935
25941
|
const params = (_a = step.parameters) !== null && _a !== void 0 ? _a : [];
|
|
25936
25942
|
const getParam = (name) => params.find((p) => { var _a; return ((_a = p.name) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === name.toLowerCase(); });
|
|
25937
25943
|
const val = (p) => { var _a, _b; return (_b = (_a = p === null || p === void 0 ? void 0 : p.displayValue) !== null && _a !== void 0 ? _a : p === null || p === void 0 ? void 0 : p.value) !== null && _b !== void 0 ? _b : ''; };
|
|
25944
|
+
/** Use raw value (strip surrounding quotes from displayValue) for building full sentences */
|
|
25945
|
+
const rawVal = (p) => {
|
|
25946
|
+
var _a, _b;
|
|
25947
|
+
const v = (_b = (_a = p === null || p === void 0 ? void 0 : p.value) !== null && _a !== void 0 ? _a : p === null || p === void 0 ? void 0 : p.displayValue) !== null && _b !== void 0 ? _b : '';
|
|
25948
|
+
const s = String(v);
|
|
25949
|
+
return s.replace(/^["']|["']$/g, '').trim() || s;
|
|
25950
|
+
};
|
|
25938
25951
|
switch (step.eventType) {
|
|
25939
25952
|
case 'navigate': {
|
|
25940
|
-
const url = getParam('url');
|
|
25941
|
-
return url ? `Navigate to ${
|
|
25953
|
+
const url = (_b = getParam('url')) !== null && _b !== void 0 ? _b : params.find((p) => /url|baseUrl/i.test(p.name || ''));
|
|
25954
|
+
return url ? `Navigate to ${rawVal(url)}` : 'Navigate';
|
|
25955
|
+
}
|
|
25956
|
+
case 'enter': {
|
|
25957
|
+
const valueParam = getParam('value');
|
|
25958
|
+
const labelParam = getParam('label');
|
|
25959
|
+
const value = rawVal(valueParam);
|
|
25960
|
+
const label = rawVal(labelParam);
|
|
25961
|
+
if (value && label)
|
|
25962
|
+
return `Enter ${value} in the ${label}`;
|
|
25963
|
+
if (value)
|
|
25964
|
+
return `Enter ${value}`;
|
|
25965
|
+
if (label)
|
|
25966
|
+
return `Enter in the ${label}`;
|
|
25967
|
+
return 'Enter';
|
|
25942
25968
|
}
|
|
25943
25969
|
case 'ai-agent': {
|
|
25944
|
-
const instructions = (
|
|
25970
|
+
const instructions = (_c = getParam('instructions')) !== null && _c !== void 0 ? _c : getParam('description');
|
|
25945
25971
|
return val(instructions) || 'AI Agent step';
|
|
25946
25972
|
}
|
|
25947
|
-
case 'type':
|
|
25948
|
-
|
|
25949
|
-
|
|
25950
|
-
|
|
25973
|
+
case 'type': {
|
|
25974
|
+
const textParam = (_d = getParam('text')) !== null && _d !== void 0 ? _d : getParam('value');
|
|
25975
|
+
const elementParam = (_f = (_e = getParam('element')) !== null && _e !== void 0 ? _e : getParam('label')) !== null && _f !== void 0 ? _f : getParam('selector');
|
|
25976
|
+
const text = rawVal(textParam);
|
|
25977
|
+
const element = rawVal(elementParam);
|
|
25978
|
+
if (text && element)
|
|
25979
|
+
return `Enter ${text} in the ${element}`;
|
|
25980
|
+
if (text)
|
|
25981
|
+
return `Enter ${text}`;
|
|
25982
|
+
return 'Type';
|
|
25983
|
+
}
|
|
25984
|
+
case 'click': {
|
|
25985
|
+
const selector = (_g = getParam('element')) !== null && _g !== void 0 ? _g : getParam('selector');
|
|
25986
|
+
return selector ? `Click on ${rawVal(selector)}` : 'Click';
|
|
25987
|
+
}
|
|
25988
|
+
case 'doubleClick': {
|
|
25989
|
+
const selector = (_h = getParam('element')) !== null && _h !== void 0 ? _h : getParam('selector');
|
|
25990
|
+
return selector ? `Double click on ${rawVal(selector)}` : 'Double click';
|
|
25991
|
+
}
|
|
25992
|
+
case 'pressEnter': {
|
|
25993
|
+
const element = getParam('element');
|
|
25994
|
+
return element ? `Press Enter on ${rawVal(element)}` : 'Press Enter';
|
|
25995
|
+
}
|
|
25951
25996
|
case 'verify':
|
|
25952
25997
|
return val(getParam('description')) || 'Verify';
|
|
25953
25998
|
case 'custom': {
|
|
25954
|
-
const desc = (
|
|
25999
|
+
const desc = (_j = getParam('description')) !== null && _j !== void 0 ? _j : getParam('action');
|
|
25955
26000
|
return val(desc) || 'Custom step';
|
|
25956
26001
|
}
|
|
25957
26002
|
default:
|
|
@@ -25976,12 +26021,14 @@ class CreateStepGroupComponent {
|
|
|
25976
26021
|
}
|
|
25977
26022
|
}
|
|
25978
26023
|
CreateStepGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, deps: [{ token: i1$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
|
|
25979
|
-
CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
26024
|
+
CreateStepGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: CreateStepGroupComponent, selector: "cqa-create-step-group", inputs: { stepsToGroup: "stepsToGroup", stepLabels: "stepLabels" }, outputs: { createGroup: "createGroup", cancelled: "cancelled" }, host: { classAttribute: "cqa-ui-root" }, ngImport: i0, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n", components: [{ type: CustomInputComponent, selector: "cqa-custom-input", inputs: ["label", "type", "placeholder", "value", "disabled", "errors", "required", "ariaLabel", "size", "fullWidth", "maxLength", "showCharCount", "inputInlineStyle", "labelInlineStyle"], outputs: ["valueChange", "blurred", "focused", "enterPressed"] }, { type: ButtonComponent, selector: "cqa-button", inputs: ["variant", "btnSize", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass", "inlineStyles", "tooltip", "tooltipPosition"], outputs: ["clicked"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
25980
26025
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: CreateStepGroupComponent, decorators: [{
|
|
25981
26026
|
type: Component,
|
|
25982
26027
|
args: [{ selector: 'cqa-create-step-group', host: { class: 'cqa-ui-root' }, template: "<div\n class=\"cqa-bg-white cqa-rounded-[12px] cqa-shadow-lg cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-w-full cqa-max-w-[500px] cqa-flex cqa-flex-col cqa-gap-4 cqa-p-6 cqa-box-border cqa-min-h-0\">\n <!-- Header: title + close (X) -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-min-w-0\">\n <h2 class=\"cqa-text-[16px] cqa-leading-[24px] cqa-font-bold cqa-text-[#111827] cqa-m-0\">\n Create step group\n </h2>\n <p class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-[#64748B] cqa-m-0\">\n {{ subtitleText }}\n </p>\n </div>\n <button\n type=\"button\"\n (click)=\"onCancel()\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-min-h-7 cqa-min-w-7 cqa-rounded cqa-text-[#6B7280] hover:cqa-bg-[#F3F4F6] cqa-p-0 cqa-flex-shrink-0\"\n title=\"Close\"\n aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n </div>\n\n <!-- Group name * -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1.5\">\n <label class=\"cqa-text-sm cqa-font-medium cqa-text-[#161617]\">\n Group name <span class=\"cqa-text-red-500\">*</span>\n </label>\n <cqa-custom-input\n placeholder=\"e.g., Authentication flow\"\n [value]=\"form.get('groupName')?.value\"\n [fullWidth]=\"true\"\n size=\"md\"\n (valueChange)=\"form.get('groupName')?.setValue($event); form.get('groupName')?.updateValueAndValidity()\">\n </cqa-custom-input>\n <p *ngIf=\"form.get('groupName')?.invalid && form.get('groupName')?.touched\" class=\"cqa-text-xs cqa-text-red-500 cqa-m-0\">\n Group name is required.\n </p>\n </div>\n\n <!-- Steps to group (N) -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <label class=\"cqa-font-semibold cqa-text-[12px] cqa-leading-[100%] cqa-tracking-normal cqa-text-[#0A0A0A] cqa-align-middle\">\n Steps to group ({{ stepsCount }})\n </label>\n <div class=\"cqa-scrollbar-hide cqa-flex cqa-flex-col cqa-gap-2 cqa-max-h-[200px] cqa-overflow-y-auto cqa-rounded-[8px] cqa-p-[6px] cqa-border cqa-border-solid cqa-border-[rgba(0,0,0,0.1)]\">\n <div\n *ngFor=\"let step of stepsToGroup; let i = index\"\n class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-rounded-[4px] cqa-py-[4px] cqa-px-[8px] cqa-bg-[rgba(216,217,252,0.3)]\">\n <!-- Numbered badge -->\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-7 cqa-h-7 cqa-rounded-full cqa-bg-[#3F43EE] cqa-text-white cqa-text-[10px] cqa-leading-[15px] cqa-font-medium cqa-flex-shrink-0\">\n {{ i + 1 }}\n </span>\n <span class=\"cqa-font-medium cqa-text-[10px] cqa-leading-[15px] cqa-tracking-[0px] cqa-text-[#0B0B0C] cqa-flex-1 cqa-min-w-0 cqa-truncate\">\n {{ getStepDisplayLabel(step, i) }}\n </span>\n </div>\n </div>\n </div>\n\n <!-- Actions: Cancel | Create group -->\n <div class=\"cqa-flex cqa-items-stretch cqa-w-full cqa-gap-3\">\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"outlined\"\n btnSize=\"lg\"\n text=\"Cancel\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#414146]'\"\n (clicked)=\"onCancel()\">\n </cqa-button>\n </div>\n <div class=\"cqa-flex-1 cqa-min-w-0\">\n <cqa-button\n variant=\"filled\"\n btnSize=\"lg\"\n text=\"Create group\"\n [fullWidth]=\"true\"\n [customClass]=\"'cqa-text-[14px] cqa-py-[9px] cqa-border-[#3F43EE] cqa-bg-[#3F43EE]'\"\n (clicked)=\"onCreateGroup()\">\n </cqa-button>\n </div>\n </div>\n</div>\n" }]
|
|
25983
26028
|
}], ctorParameters: function () { return [{ type: i1$1.FormBuilder }]; }, propDecorators: { stepsToGroup: [{
|
|
25984
26029
|
type: Input
|
|
26030
|
+
}], stepLabels: [{
|
|
26031
|
+
type: Input
|
|
25985
26032
|
}], createGroup: [{
|
|
25986
26033
|
type: Output
|
|
25987
26034
|
}], cancelled: [{
|