@gravitee/ui-policy-studio-angular 15.9.0 → 15.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +12 -5
- package/esm2022/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.mjs +12 -5
- package/esm2022/lib/components/step-form/gio-ps-step-form.component.mjs +14 -5
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs +31 -8
- package/fesm2022/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +2 -0
- package/lib/components/flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component.d.ts +2 -0
- package/lib/components/step-form/gio-ps-step-form.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -13,17 +13,18 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
16
|
+
import { Component, EventEmitter, inject, Input, Output } from '@angular/core';
|
|
17
17
|
import { FormControl, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';
|
|
18
18
|
import { catchError, map, takeUntil } from 'rxjs/operators';
|
|
19
19
|
import { of, Subject } from 'rxjs';
|
|
20
|
-
import { GioBannerModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioLoaderModule, } from '@gravitee/ui-particles-angular';
|
|
20
|
+
import { GioBannerModule, GioElPromptComponent, GioElService, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioLoaderModule, GioPopoverComponent, PopoverTriggerDirective, } from '@gravitee/ui-particles-angular';
|
|
21
21
|
import { isEmpty } from 'lodash';
|
|
22
22
|
import { CommonModule } from '@angular/common';
|
|
23
23
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
24
24
|
import { MatInputModule } from '@angular/material/input';
|
|
25
25
|
import { GioAsciidoctorModule } from '@gravitee/ui-particles-angular/gio-asciidoctor';
|
|
26
26
|
import { MarkdownComponent } from 'ngx-markdown';
|
|
27
|
+
import { MatIcon } from '@angular/material/icon';
|
|
27
28
|
import { isPolicy, isSharedPolicyGroupPolicy, toPolicy } from '../../models';
|
|
28
29
|
import * as i0 from "@angular/core";
|
|
29
30
|
import * as i1 from "../../policy-studio/gio-policy-studio.service";
|
|
@@ -37,6 +38,7 @@ export class GioPolicyStudioStepFormComponent {
|
|
|
37
38
|
constructor(policyStudioService) {
|
|
38
39
|
this.policyStudioService = policyStudioService;
|
|
39
40
|
this.noDocumentationAvailable = { content: 'No documentation available.', language: 'ASCIIDOC' };
|
|
41
|
+
this.elService = inject(GioElService);
|
|
40
42
|
this.readOnly = false;
|
|
41
43
|
this.stepChange = new EventEmitter();
|
|
42
44
|
this.isValid = new EventEmitter();
|
|
@@ -116,8 +118,11 @@ export class GioPolicyStudioStepFormComponent {
|
|
|
116
118
|
configuration,
|
|
117
119
|
});
|
|
118
120
|
}
|
|
121
|
+
isEnabled() {
|
|
122
|
+
return this.elService.isEnabled();
|
|
123
|
+
}
|
|
119
124
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: i1.GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", flowPhase: "flowPhase", apiType: "apiType", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }] }); }
|
|
125
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", flowPhase: "flowPhase", apiType: "apiType", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: GioElPromptComponent, selector: "gio-el-prompt", inputs: ["responseState"] }, { kind: "component", type: GioPopoverComponent, selector: "gio-popover", inputs: ["trigger", "closeOnBackdropClick"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[gioPopoverTrigger]", inputs: ["gioPopoverTriggerFor", "gioPopoverTriggerBasedOnElement"] }] }); }
|
|
121
126
|
}
|
|
122
127
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
|
|
123
128
|
type: Component,
|
|
@@ -131,7 +136,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
131
136
|
GioLoaderModule,
|
|
132
137
|
GioBannerModule,
|
|
133
138
|
MarkdownComponent,
|
|
134
|
-
|
|
139
|
+
GioElPromptComponent,
|
|
140
|
+
GioPopoverComponent,
|
|
141
|
+
MatIcon,
|
|
142
|
+
PopoverTriggerDirective,
|
|
143
|
+
], selector: 'gio-ps-step-form', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"] }]
|
|
135
144
|
}], ctorParameters: () => [{ type: i1.GioPolicyStudioService }], propDecorators: { readOnly: [{
|
|
136
145
|
type: Input
|
|
137
146
|
}], step: [{
|
|
@@ -149,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
149
158
|
}], isValid: [{
|
|
150
159
|
type: Output
|
|
151
160
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWdDLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFDTCxlQUFlLEVBQ2YsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUd2QixlQUFlLEdBQ2hCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxN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QUM7SUFDTCxDQUFDOzhHQTVIVSxnQ0FBZ0M7a0dBQWhDLGdDQUFnQyx3UkN0RDdDLHkwRkE4RUEsZ3hERHRDSSxZQUFZLHVMQUNaLG1CQUFtQixtMkJBQ25CLGNBQWMscXVCQUNkLGtCQUFrQiw4QkFDbEIsdUJBQXVCLDhMQUN2QixvQkFBb0IsZ0pBQ3BCLGVBQWUsMEdBQ2YsZUFBZSwrTUFDZixpQkFBaUI7OzJGQU1SLGdDQUFnQztrQkFoQjVDLFNBQVM7OEJBQ0M7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLG9CQUFvQjt3QkFDcEIsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGlCQUFpQjtxQkFDbEIsWUFDUyxrQkFBa0I7MkZBUXJCLFFBQVE7c0JBRGQsS0FBSztnQkFJQyxJQUFJO3NCQURWLEtBQUs7Z0JBSUMsU0FBUztzQkFEZixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsT0FBTztzQkFEYixLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFJbEIsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxVQUFVO3NCQURoQixNQUFNO2dCQUlBLE9BQU87c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEdpb0Jhbm5lck1vZHVsZSxcbiAgR2lvRm9ybUpzb25TY2hlbWFDb21wb25lbnQsXG4gIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLFxuICBHaW9Kc29uU2NoZW1hLFxuICBHaW9Kc29uU2NoZW1hQ29udGV4dCxcbiAgR2lvTG9hZGVyTW9kdWxlLFxufSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXInO1xuaW1wb3J0IHsgaXNFbXB0eSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IEdpb0FzY2lpZG9jdG9yTW9kdWxlIH0gZnJvbSAnQGdyYXZpdGVlL3VpLXBhcnRpY2xlcy1hbmd1bGFyL2dpby1hc2NpaWRvY3Rvcic7XG5pbXBvcnQgeyBNYXJrZG93bkNvbXBvbmVudCB9IGZyb20gJ25neC1tYXJrZG93bic7XG5cbmltcG9ydCB7IEFwaVR5cGUsIEZsb3dQaGFzZSwgR2VuZXJpY1BvbGljeSwgaXNQb2xpY3ksIGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3ksIFN0ZXAsIHRvUG9saWN5IH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb1NlcnZpY2UgfSBmcm9tICcuLi8uLi9wb2xpY3ktc3R1ZGlvL2dpby1wb2xpY3ktc3R1ZGlvLnNlcnZpY2UnO1xuaW1wb3J0IHsgUG9saWN5RG9jdW1lbnRhdGlvbiB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBHaW9Gb3JtSnNvblNjaGVtYU1vZHVsZSxcbiAgICBHaW9Bc2NpaWRvY3Rvck1vZHVsZSxcbiAgICBHaW9Mb2FkZXJNb2R1bGUsXG4gICAgR2lvQmFubmVyTW9kdWxlLFxuICAgIE1hcmtkb3duQ29tcG9uZW50LFxuICBdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1zdGVwLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBub0RvY3VtZW50YXRpb25BdmFpbGFibGU6IFBvbGljeURvY3VtZW50YXRpb24gPSB7IGNvbnRlbnQ6ICdObyBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZS4nLCBsYW5ndWFnZTogJ0FTQ0lJRE9DJyB9O1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwPzogU3RlcDtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZmxvd1BoYXNlITogRmxvd1BoYXNlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2VuZXJpY1BvbGljeSE6IEdlbmVyaWNQb2xpY3k7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcG9saWN5U2NoZW1hJD86IE9ic2VydmFibGU8R2lvSnNvblNjaGVtYSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICBwdWJsaWMgcG9saWN5RG9jdW1lbnRhdGlvbiQ/OiBPYnNlcnZhYmxlPFBvbGljeURvY3VtZW50YXRpb24+O1xuICBwdWJsaWMgaW5mb0Jhbm5lcj86IHN0cmluZztcblxuICBwdWJsaWMgc3RlcEZvcm0/OiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBjb250ZXh0PzogR2lvSnNvblNjaGVtYUNvbnRleHQ7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgaXNNZXNzYWdlID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9saWN5U3R1ZGlvU2VydmljZTogR2lvUG9saWN5U3R1ZGlvU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmdlbmVyaWNQb2xpY3kpIHtcbiAgICAgIGlmIChpc1BvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICAgIHRoaXMucG9saWN5U2NoZW1hJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lTY2hlbWEodG9Qb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkucGlwZShcbiAgICAgICAgICBtYXAoc2NoZW1hID0+IHtcbiAgICAgICAgICAgIGlmIChHaW9Gb3JtSnNvblNjaGVtYUNvbXBvbmVudC5pc0Rpc3BsYXlhYmxlKHNjaGVtYSBhcyBHaW9Kc29uU2NoZW1hKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hIGFzIEdpb0pzb25TY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lEb2N1bWVudGF0aW9uJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lEb2N1bWVudGF0aW9uKHRvUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpLnBpcGUoXG4gICAgICAgICAgbWFwKGRvYyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvYyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgY29udGVudDogZG9jLCBsYW5ndWFnZTogJ0FTQ0lJRE9DJyB9IGFzIFBvbGljeURvY3VtZW50YXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXNFbXB0eShkb2M/LmNvbnRlbnQpID8gdGhpcy5ub0RvY3VtZW50YXRpb25BdmFpbGFibGUgOiBkb2M7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLm5vRG9jdW1lbnRhdGlvbkF2YWlsYWJsZSkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkge1xuICAgICAgICB0aGlzLnBvbGljeVNjaGVtYSQgPSBvZih7fSk7XG4gICAgICAgIHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbiQgPSBvZih7IGNvbnRlbnQ6ICcgJywgbGFuZ3VhZ2U6ICdBU0NJSURPQycgfSk7XG4gICAgICAgIHRoaXMuaW5mb0Jhbm5lciA9IHRoaXMuZ2VuZXJpY1BvbGljeS5wcmVyZXF1aXNpdGVNZXNzYWdlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5mbG93UGhhc2UpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgICAgZmxvd1BoYXNlOiB0aGlzLmZsb3dQaGFzZSxcbiAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaXNNZXNzYWdlID0gdGhpcy5mbG93UGhhc2UgPT09ICdQVUJMSVNIJyB8fCB0aGlzLmZsb3dQaGFzZSA9PT0gJ1NVQlNDUklCRSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFN0ZXBGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGVwRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZGVzY3JpcHRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5kZXNjcmlwdGlvbiwgZGlzYWJsZWQ6IHRoaXMucmVhZE9ubHkgfSksXG4gICAgICBjb25kaXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25kaXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgICAgbWVzc2FnZUNvbmRpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4oeyB2YWx1ZTogdGhpcy5zdGVwPy5tZXNzYWdlQ29uZGl0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25maWd1cmF0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSh2YWxpZCA9PiB7XG4gICAgICB0aGlzLmlzVmFsaWQuZW1pdCh2YWxpZCA9PT0gJ1ZBTElEJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Kc29uU2NoZW1hUmVhZHkoaXNSZWFkeTogYm9vbGVhbikge1xuICAgIC8vIFdoZW4gcmVhZHkgYW5kIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBlbWl0XG4gICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcblxuICAgICAgaWYgKHRoaXMuc3RlcEZvcm0/LnN0YXR1cyA9PT0gJ1ZBTElEJykge1xuICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdCh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0ZXBDaGFuZ2UoKTogdm9pZCB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmZpZ3VyYXRpb24nKT8udmFsdWU7XG5cbiAgICBpZiAoaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICBjb25maWd1cmF0aW9uID0geyBzaGFyZWRQb2xpY3lHcm91cElkOiB0aGlzLmdlbmVyaWNQb2xpY3kuc2hhcmVkUG9saWN5R3JvdXBJZCB9O1xuICAgIH1cblxuICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHtcbiAgICAgIC4uLnRoaXMuc3RlcCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlLFxuICAgICAgY29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmRpdGlvbicpPy52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlQ29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ21lc3NhZ2VDb25kaXRpb24nKT8udmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDIzIFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gICAgXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gICAgXG4gICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAgICBcbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG5cbjxkaXYgY2xhc3M9XCJzZXR0aW5nc1wiPlxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3NfX2hlYWRlclwiPlNldHRpbmdzPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0ZXBGb3JtICYmIChwb2xpY3lTY2hlbWEkIHwgYXN5bmMpIGFzIHBvbGljeVNjaGVtYTsgZWxzZSBsb2FkaW5nVG1wbFwiIFtmb3JtR3JvdXBdPVwic3RlcEZvcm1cIj5cbiAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIiBjZGtGb2N1c0luaXRpYWw+PC90ZXh0YXJlYT5cbiAgICAgICAgPG1hdC1oaW50PkRlc2NyaWJlIGhvdyB5b3VyIHBvbGljeSB3b3Jrcy48L21hdC1oaW50PlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPlRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjb25kaXRpb25cIiAvPlxuICAgICAgICA8bWF0LWhpbnQ+VGhlIGNvbmRpdGlvbiB0byBleGVjdXRlIHRoaXMgcG9saWN5LiBTdXBwb3J0cyBFeHByZXNzaW9uIExhbmd1YWdlLjwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICBAaWYgKGlzTWVzc2FnZSkge1xuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5NZXNzYWdlIHRyaWdnZXIgY29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VDb25kaXRpb25cIiAvPlxuICAgICAgICAgIDxtYXQtaGludD5UaGUgY29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhpcyBwb2xpY3kgb24gbWVzc2FnZS4gU3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZS48L21hdC1oaW50PlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgfVxuXG4gICAgICA8Z2lvLWZvcm0tanNvbi1zY2hlbWFcbiAgICAgICAgKm5nSWY9XCJwb2xpY3lTY2hlbWFcIlxuICAgICAgICBbanNvblNjaGVtYV09XCIkYW55KHBvbGljeVNjaGVtYSlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgKHJlYWR5KT1cIm9uSnNvblNjaGVtYVJlYWR5KCRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maWd1cmF0aW9uXCJcbiAgICAgID48L2dpby1mb3JtLWpzb24tc2NoZW1hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9faGVhZGVyXCI+RG9jdW1lbnRhdGlvbjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZyAqbmdJZj1cImluZm9CYW5uZXJcIj5cbiAgICAgIFByZXJlcXVpc2l0ZSBtZXNzYWdlXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5Pnt7IGluZm9CYW5uZXIgfX08L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeURvY3VtZW50YXRpb24kIHwgYXN5bmMgYXMgcG9saWN5RG9jdW1lbnRhdGlvbjsgZWxzZSBsb2FkaW5nVG1wbFwiPlxuICAgICAgQHN3aXRjaCAocG9saWN5RG9jdW1lbnRhdGlvbi5sYW5ndWFnZSkge1xuICAgICAgICBAY2FzZSAoJ0FTQ0lJRE9DJykge1xuICAgICAgICAgIDxnaW8tYXNjaWlkb2N0b3IgW2NvbnRlbnRdPVwicG9saWN5RG9jdW1lbnRhdGlvbi5jb250ZW50XCI+PC9naW8tYXNjaWlkb2N0b3I+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdNQVJLRE9XTicpIHtcbiAgICAgICAgICA8bWFya2Rvd24gY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50X19tYXJrZG93blwiIFtkYXRhXT1cInBvbGljeURvY3VtZW50YXRpb24uY29udGVudFwiPjwvbWFya2Rvd24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVG1wbD5cbiAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL3N0ZXAtZm9ybS9naW8tcHMtc3RlcC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvc3RlcC1mb3JtL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzVILE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixZQUFZLEVBQ1osMEJBQTBCLEVBQzFCLHVCQUF1QixFQUd2QixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLHVCQUF1QixHQUN4QixNQUFNLGdDQUFnQyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFB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IENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBVbnR5cGVkRm9ybUNvbnRyb2wsIFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBHaW9CYW5uZXJNb2R1bGUsXG4gIEdpb0VsUHJvbXB0Q29tcG9uZW50LFxuICBHaW9FbFNlcnZpY2UsXG4gIEdpb0Zvcm1Kc29uU2NoZW1hQ29tcG9uZW50LFxuICBHaW9Gb3JtSnNvblNjaGVtYU1vZHVsZSxcbiAgR2lvSnNvblNjaGVtYSxcbiAgR2lvSnNvblNjaGVtYUNvbnRleHQsXG4gIEdpb0xvYWRlck1vZHVsZSxcbiAgR2lvUG9wb3ZlckNvbXBvbmVudCxcbiAgUG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUsXG59IGZyb20gJ0BncmF2aXRlZS91aS1wYXJ0aWNsZXMtYW5ndWxhcic7XG5pbXBvcnQgeyBpc0VtcHR5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgR2lvQXNjaWlkb2N0b3JNb2R1bGUgfSBmcm9tICdAZ3Jhdml0ZWUvdWktcGFydGljbGVzLWFuZ3VsYXIvZ2lvLWFzY2lpZG9jdG9yJztcbmltcG9ydCB7IE1hcmtkb3duQ29tcG9uZW50IH0gZnJvbSAnbmd4LW1hcmtkb3duJztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuaW1wb3J0IHsgQXBpVHlwZSwgRmxvd1BoYXNlLCBHZW5lcmljUG9saWN5LCBpc1BvbGljeSwgaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSwgU3RlcCwgdG9Qb2xpY3kgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvU2VydmljZSB9IGZyb20gJy4uLy4uL3BvbGljeS1zdHVkaW8vZ2lvLXBvbGljeS1zdHVkaW8uc2VydmljZSc7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudGF0aW9uIH0gZnJvbSAnLi4vLi4vcG9saWN5LXN0dWRpby9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIEdpb0Zvcm1Kc29uU2NoZW1hTW9kdWxlLFxuICAgIEdpb0FzY2lpZG9jdG9yTW9kdWxlLFxuICAgIEdpb0xvYWRlck1vZHVsZSxcbiAgICBHaW9CYW5uZXJNb2R1bGUsXG4gICAgTWFya2Rvd25Db21wb25lbnQsXG4gICAgR2lvRWxQcm9tcHRDb21wb25lbnQsXG4gICAgR2lvUG9wb3ZlckNvbXBvbmVudCxcbiAgICBNYXRJY29uLFxuICAgIFBvcG92ZXJUcmlnZ2VyRGlyZWN0aXZlLFxuICBdLFxuICBzZWxlY3RvcjogJ2dpby1wcy1zdGVwLWZvcm0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLXN0ZXAtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1zdGVwLWZvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvU3RlcEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBub0RvY3VtZW50YXRpb25BdmFpbGFibGU6IFBvbGljeURvY3VtZW50YXRpb24gPSB7IGNvbnRlbnQ6ICdObyBkb2N1bWVudGF0aW9uIGF2YWlsYWJsZS4nLCBsYW5ndWFnZTogJ0FTQ0lJRE9DJyB9O1xuICBwcml2YXRlIHJlYWRvbmx5IGVsU2VydmljZSA9IGluamVjdChHaW9FbFNlcnZpY2UpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzdGVwPzogU3RlcDtcblxuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KVxuICBwdWJsaWMgZmxvd1BoYXNlITogRmxvd1BoYXNlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBhcGlUeXBlITogQXBpVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZ2VuZXJpY1BvbGljeSE6IEdlbmVyaWNQb2xpY3k7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzdGVwQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTdGVwPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgaXNWYWxpZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwdWJsaWMgcG9saWN5U2NoZW1hJD86IE9ic2VydmFibGU8R2lvSnNvblNjaGVtYSB8IG51bGwgfCB1bmRlZmluZWQ+O1xuICBwdWJsaWMgcG9saWN5RG9jdW1lbnRhdGlvbiQ/OiBPYnNlcnZhYmxlPFBvbGljeURvY3VtZW50YXRpb24+O1xuICBwdWJsaWMgaW5mb0Jhbm5lcj86IHN0cmluZztcblxuICBwdWJsaWMgc3RlcEZvcm0/OiBVbnR5cGVkRm9ybUdyb3VwO1xuXG4gIHB1YmxpYyBjb250ZXh0PzogR2lvSnNvblNjaGVtYUNvbnRleHQ7XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgaXNNZXNzYWdlID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcG9saWN5U3R1ZGlvU2VydmljZTogR2lvUG9saWN5U3R1ZGlvU2VydmljZSkge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmdlbmVyaWNQb2xpY3kpIHtcbiAgICAgIGlmIChpc1BvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICAgIHRoaXMucG9saWN5U2NoZW1hJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lTY2hlbWEodG9Qb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkucGlwZShcbiAgICAgICAgICBtYXAoc2NoZW1hID0+IHtcbiAgICAgICAgICAgIGlmIChHaW9Gb3JtSnNvblNjaGVtYUNvbXBvbmVudC5pc0Rpc3BsYXlhYmxlKHNjaGVtYSBhcyBHaW9Kc29uU2NoZW1hKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2NoZW1hIGFzIEdpb0pzb25TY2hlbWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5wb2xpY3lEb2N1bWVudGF0aW9uJCA9IHRoaXMucG9saWN5U3R1ZGlvU2VydmljZS5nZXRQb2xpY3lEb2N1bWVudGF0aW9uKHRvUG9saWN5KHRoaXMuZ2VuZXJpY1BvbGljeSkpLnBpcGUoXG4gICAgICAgICAgbWFwKGRvYyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRvYyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgY29udGVudDogZG9jLCBsYW5ndWFnZTogJ0FTQ0lJRE9DJyB9IGFzIFBvbGljeURvY3VtZW50YXRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXNFbXB0eShkb2M/LmNvbnRlbnQpID8gdGhpcy5ub0RvY3VtZW50YXRpb25BdmFpbGFibGUgOiBkb2M7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZih0aGlzLm5vRG9jdW1lbnRhdGlvbkF2YWlsYWJsZSkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGlzU2hhcmVkUG9saWN5R3JvdXBQb2xpY3kodGhpcy5nZW5lcmljUG9saWN5KSkge1xuICAgICAgICB0aGlzLnBvbGljeVNjaGVtYSQgPSBvZih7fSk7XG4gICAgICAgIHRoaXMucG9saWN5RG9jdW1lbnRhdGlvbiQgPSBvZih7IGNvbnRlbnQ6ICcgJywgbGFuZ3VhZ2U6ICdBU0NJSURPQycgfSk7XG4gICAgICAgIHRoaXMuaW5mb0Jhbm5lciA9IHRoaXMuZ2VuZXJpY1BvbGljeS5wcmVyZXF1aXNpdGVNZXNzYWdlO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5mbG93UGhhc2UpIHtcbiAgICAgIHRoaXMuY29udGV4dCA9IHtcbiAgICAgICAgZmxvd1BoYXNlOiB0aGlzLmZsb3dQaGFzZSxcbiAgICAgICAgYXBpVHlwZTogdGhpcy5hcGlUeXBlLFxuICAgICAgfTtcbiAgICAgIHRoaXMuaXNNZXNzYWdlID0gdGhpcy5mbG93UGhhc2UgPT09ICdQVUJMSVNIJyB8fCB0aGlzLmZsb3dQaGFzZSA9PT0gJ1NVQlNDUklCRSc7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFN0ZXBGb3JtKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGVwRm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0ZXBGb3JtID0gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZGVzY3JpcHRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5kZXNjcmlwdGlvbiwgZGlzYWJsZWQ6IHRoaXMucmVhZE9ubHkgfSksXG4gICAgICBjb25kaXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25kaXRpb24sIGRpc2FibGVkOiB0aGlzLnJlYWRPbmx5IH0pLFxuICAgICAgbWVzc2FnZUNvbmRpdGlvbjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IHVuZGVmaW5lZD4oeyB2YWx1ZTogdGhpcy5zdGVwPy5tZXNzYWdlQ29uZGl0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICAgIGNvbmZpZ3VyYXRpb246IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woeyB2YWx1ZTogdGhpcy5zdGVwPy5jb25maWd1cmF0aW9uLCBkaXNhYmxlZDogdGhpcy5yZWFkT25seSB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RlcEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSh2YWxpZCA9PiB7XG4gICAgICB0aGlzLmlzVmFsaWQuZW1pdCh2YWxpZCA9PT0gJ1ZBTElEJyk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Kc29uU2NoZW1hUmVhZHkoaXNSZWFkeTogYm9vbGVhbikge1xuICAgIC8vIFdoZW4gcmVhZHkgYW5kIGlmIHRoZSBmb3JtIGlzIHZhbGlkLCBlbWl0XG4gICAgaWYgKGlzUmVhZHkpIHtcbiAgICAgIHRoaXMuZW1pdFN0ZXBDaGFuZ2UoKTtcblxuICAgICAgaWYgKHRoaXMuc3RlcEZvcm0/LnN0YXR1cyA9PT0gJ1ZBTElEJykge1xuICAgICAgICB0aGlzLmlzVmFsaWQuZW1pdCh0cnVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZW1pdFN0ZXBDaGFuZ2UoKTogdm9pZCB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmZpZ3VyYXRpb24nKT8udmFsdWU7XG5cbiAgICBpZiAoaXNTaGFyZWRQb2xpY3lHcm91cFBvbGljeSh0aGlzLmdlbmVyaWNQb2xpY3kpKSB7XG4gICAgICBjb25maWd1cmF0aW9uID0geyBzaGFyZWRQb2xpY3lHcm91cElkOiB0aGlzLmdlbmVyaWNQb2xpY3kuc2hhcmVkUG9saWN5R3JvdXBJZCB9O1xuICAgIH1cblxuICAgIHRoaXMuc3RlcENoYW5nZS5lbWl0KHtcbiAgICAgIC4uLnRoaXMuc3RlcCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnZhbHVlLFxuICAgICAgY29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ2NvbmRpdGlvbicpPy52YWx1ZSA/PyB1bmRlZmluZWQsXG4gICAgICBtZXNzYWdlQ29uZGl0aW9uOiB0aGlzLnN0ZXBGb3JtPy5nZXQoJ21lc3NhZ2VDb25kaXRpb24nKT8udmFsdWUgPz8gdW5kZWZpbmVkLFxuICAgICAgY29uZmlndXJhdGlvbixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWxTZXJ2aWNlLmlzRW5hYmxlZCgpO1xuICB9XG59XG4iLCI8IS0tXG5cbiAgICBDb3B5cmlnaHQgKEMpIDIwMjMgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAgICBcbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgICBcbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICAgIFxuICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4tLT5cblxuPGRpdiBjbGFzcz1cInNldHRpbmdzXCI+XG4gIDxkaXYgY2xhc3M9XCJzZXR0aW5nc19faGVhZGVyXCI+U2V0dGluZ3M8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3NfX2NvbnRlbnRcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3RlcEZvcm0gJiYgKHBvbGljeVNjaGVtYSQgfCBhc3luYykgYXMgcG9saWN5U2NoZW1hOyBlbHNlIGxvYWRpbmdUbXBsXCIgW2Zvcm1Hcm91cF09XCJzdGVwRm9ybVwiPlxuICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWxhYmVsPkRlc2NyaXB0aW9uPC9tYXQtbGFiZWw+XG4gICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiIGNka0ZvY3VzSW5pdGlhbD48L3RleHRhcmVhPlxuICAgICAgICA8bWF0LWhpbnQ+RGVzY3JpYmUgaG93IHlvdXIgcG9saWN5IHdvcmtzLjwvbWF0LWhpbnQ+XG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtbGFiZWw+VHJpZ2dlciBjb25kaXRpb248L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvblwiIC8+XG4gICAgICAgIDxtYXQtaGludD5UaGUgY29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhpcyBwb2xpY3kuIFN1cHBvcnRzIEV4cHJlc3Npb24gTGFuZ3VhZ2UuPC9tYXQtaGludD5cbiAgICAgICAgQGlmIChpc0VuYWJsZWQoKSkge1xuICAgICAgICAgIDxidXR0b24gZ2lvUG9wb3ZlclRyaWdnZXIgW2dpb1BvcG92ZXJUcmlnZ2VyRm9yXT1cImFpUG9wb3ZlclwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOmVsXCIgLz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIDxnaW8tcG9wb3ZlciAjYWlQb3BvdmVyIFtjbG9zZU9uQmFja2Ryb3BDbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICA8Z2lvLWVsLXByb21wdCAvPlxuICAgICAgICAgIDwvZ2lvLXBvcG92ZXI+XG4gICAgICAgIH1cbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgIEBpZiAoaXNNZXNzYWdlKSB7XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPk1lc3NhZ2UgdHJpZ2dlciBjb25kaXRpb248L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZUNvbmRpdGlvblwiIC8+XG4gICAgICAgICAgPG1hdC1oaW50PlRoZSBjb25kaXRpb24gdG8gZXhlY3V0ZSB0aGlzIHBvbGljeSBvbiBtZXNzYWdlLiBTdXBwb3J0cyBFeHByZXNzaW9uIExhbmd1YWdlLjwvbWF0LWhpbnQ+XG4gICAgICAgICAgQGlmIChpc0VuYWJsZWQoKSkge1xuICAgICAgICAgICAgPGJ1dHRvbiBnaW9Qb3BvdmVyVHJpZ2dlciBbZ2lvUG9wb3ZlclRyaWdnZXJGb3JdPVwiYWlQb3BvdmVyXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzplbFwiIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGdpby1wb3BvdmVyICNhaVBvcG92ZXIgW2Nsb3NlT25CYWNrZHJvcENsaWNrXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGdpby1lbC1wcm9tcHQgLz5cbiAgICAgICAgICAgIDwvZ2lvLXBvcG92ZXI+XG4gICAgICAgICAgfVxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgfVxuXG4gICAgICA8Z2lvLWZvcm0tanNvbi1zY2hlbWFcbiAgICAgICAgKm5nSWY9XCJwb2xpY3lTY2hlbWFcIlxuICAgICAgICBbanNvblNjaGVtYV09XCIkYW55KHBvbGljeVNjaGVtYSlcIlxuICAgICAgICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgICAgICAgKHJlYWR5KT1cIm9uSnNvblNjaGVtYVJlYWR5KCRldmVudClcIlxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb25maWd1cmF0aW9uXCJcbiAgICAgID48L2dpby1mb3JtLWpzb24tc2NoZW1hPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZG9jdW1lbnRhdGlvbl9faGVhZGVyXCI+RG9jdW1lbnRhdGlvbjwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50XCI+XG4gICAgPGdpby1iYW5uZXItd2FybmluZyAqbmdJZj1cImluZm9CYW5uZXJcIj5cbiAgICAgIFByZXJlcXVpc2l0ZSBtZXNzYWdlXG4gICAgICA8c3BhbiBnaW9CYW5uZXJCb2R5Pnt7IGluZm9CYW5uZXIgfX08L3NwYW4+XG4gICAgPC9naW8tYmFubmVyLXdhcm5pbmc+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvbGljeURvY3VtZW50YXRpb24kIHwgYXN5bmMgYXMgcG9saWN5RG9jdW1lbnRhdGlvbjsgZWxzZSBsb2FkaW5nVG1wbFwiPlxuICAgICAgQHN3aXRjaCAocG9saWN5RG9jdW1lbnRhdGlvbi5sYW5ndWFnZSkge1xuICAgICAgICBAY2FzZSAoJ0FTQ0lJRE9DJykge1xuICAgICAgICAgIDxnaW8tYXNjaWlkb2N0b3IgW2NvbnRlbnRdPVwicG9saWN5RG9jdW1lbnRhdGlvbi5jb250ZW50XCI+PC9naW8tYXNjaWlkb2N0b3I+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKCdNQVJLRE9XTicpIHtcbiAgICAgICAgICA8bWFya2Rvd24gY2xhc3M9XCJkb2N1bWVudGF0aW9uX19jb250ZW50X19tYXJrZG93blwiIFtkYXRhXT1cInBvbGljeURvY3VtZW50YXRpb24uY29udGVudFwiPjwvbWFya2Rvd24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nVG1wbD5cbiAgPGdpby1sb2FkZXI+PC9naW8tbG9hZGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { get, cloneDeep, uniqueId, capitalize, trim, isEmpty, flatten, uniq, toLower, isNil, has, filter, isEqual, differenceBy, omit, unionBy } from 'lodash';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component, Inject, EventEmitter, Input, Output, Injectable, Pipe, ChangeDetectionStrategy } from '@angular/core';
|
|
3
|
+
import { Component, Inject, inject, EventEmitter, Input, Output, Injectable, Pipe, ChangeDetectionStrategy } from '@angular/core';
|
|
4
4
|
import { Subject, BehaviorSubject, of, EMPTY, timer } from 'rxjs';
|
|
5
5
|
import * as i2 from '@angular/common';
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
7
|
import * as i6$1 from '@gravitee/ui-particles-angular';
|
|
8
|
-
import { GioFormSlideToggleModule, GioBannerModule, GioIconsModule, GioFormTagsInputModule, GIO_DIALOG_WIDTH, GioLoaderModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioConfirmDialogComponent } from '@gravitee/ui-particles-angular';
|
|
8
|
+
import { GioFormSlideToggleModule, GioBannerModule, GioIconsModule, GioElService, GioElPromptComponent, GioPopoverComponent, PopoverTriggerDirective, GioFormTagsInputModule, GIO_DIALOG_WIDTH, GioLoaderModule, GioFormJsonSchemaComponent, GioFormJsonSchemaModule, GioConfirmDialogComponent } from '@gravitee/ui-particles-angular';
|
|
9
9
|
import * as i3$1 from '@angular/material/tooltip';
|
|
10
10
|
import { MatTooltipModule, MatTooltip } from '@angular/material/tooltip';
|
|
11
11
|
import * as i4 from '@angular/material/button';
|
|
@@ -28,6 +28,7 @@ import { MatSelectModule } from '@angular/material/select';
|
|
|
28
28
|
import * as i7 from '@angular/material/slide-toggle';
|
|
29
29
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
30
30
|
import * as i5$1 from '@angular/material/icon';
|
|
31
|
+
import { MatIcon } from '@angular/material/icon';
|
|
31
32
|
import * as i3$2 from '@angular/material/tabs';
|
|
32
33
|
import { MatTabsModule } from '@angular/material/tabs';
|
|
33
34
|
import * as i6$2 from '@angular/material/chips';
|
|
@@ -372,6 +373,7 @@ class GioPolicyStudioFlowMessageFormDialogComponent {
|
|
|
372
373
|
this.dialogRef = dialogRef;
|
|
373
374
|
this.entrypoints = [];
|
|
374
375
|
this.mode = 'create';
|
|
376
|
+
this.elService = inject(GioElService);
|
|
375
377
|
this.entrypoints = flowDialogData?.entrypoints ?? [];
|
|
376
378
|
this.existingFlow = cloneDeep(flowDialogData?.flow);
|
|
377
379
|
this.mode = this.existingFlow ? 'edit' : 'create';
|
|
@@ -417,8 +419,11 @@ class GioPolicyStudioFlowMessageFormDialogComponent {
|
|
|
417
419
|
...flowToSave,
|
|
418
420
|
});
|
|
419
421
|
}
|
|
422
|
+
isEnabled() {
|
|
423
|
+
return this.elService.isEnabled();
|
|
424
|
+
}
|
|
420
425
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
421
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
426
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioFlowMessageFormDialogComponent, isStandalone: true, selector: "gio-ps-flow-message-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow'\n }}<button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank.</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed. They will all be executed if left empty.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n <mat-hint>They will all be supported if left empty.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:0;right:-24px;float:right}.content__row{display:flex;align-items:flex-start;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "ngmodule", type: GioFormSlideToggleModule }, { kind: "ngmodule", type: GioBannerModule }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: GioElPromptComponent, selector: "gio-el-prompt", inputs: ["responseState"] }, { kind: "component", type: GioPopoverComponent, selector: "gio-popover", inputs: ["trigger", "closeOnBackdropClick"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[gioPopoverTrigger]", inputs: ["gioPopoverTriggerFor", "gioPopoverTriggerBasedOnElement"] }] }); }
|
|
422
427
|
}
|
|
423
428
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, decorators: [{
|
|
424
429
|
type: Component,
|
|
@@ -434,7 +439,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
434
439
|
GioFormSlideToggleModule,
|
|
435
440
|
GioBannerModule,
|
|
436
441
|
GioIconsModule,
|
|
437
|
-
|
|
442
|
+
GioElPromptComponent,
|
|
443
|
+
GioPopoverComponent,
|
|
444
|
+
PopoverTriggerDirective,
|
|
445
|
+
], selector: 'gio-ps-flow-message-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow'\n }}<button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank.</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed. They will all be executed if left empty.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n <mat-hint>They will all be supported if left empty.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:0;right:-24px;float:right}.content__row{display:flex;align-items:flex-start;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
438
446
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
439
447
|
type: Inject,
|
|
440
448
|
args: [MAT_DIALOG_DATA]
|
|
@@ -531,6 +539,7 @@ class GioPolicyStudioFlowProxyFormDialogComponent {
|
|
|
531
539
|
this.dialogRef = dialogRef;
|
|
532
540
|
this.mode = 'create';
|
|
533
541
|
this.methods = METHODS_AUTOCOMPLETE;
|
|
542
|
+
this.elService = inject(GioElService);
|
|
534
543
|
this.existingFlow = cloneDeep(flowDialogData?.flow);
|
|
535
544
|
this.mode = this.existingFlow ? 'edit' : 'create';
|
|
536
545
|
const httpSelector = flowDialogData?.flow?.selectors?.find(s => s.type === 'HTTP');
|
|
@@ -576,8 +585,11 @@ class GioPolicyStudioFlowProxyFormDialogComponent {
|
|
|
576
585
|
tagValidationHook(tag, validationCb) {
|
|
577
586
|
validationCb(METHODS_AUTOCOMPLETE.map(m => `${m}`).includes(tag.toUpperCase()));
|
|
578
587
|
}
|
|
588
|
+
isEnabled() {
|
|
589
|
+
return this.elService.isEnabled();
|
|
590
|
+
}
|
|
579
591
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioFlowProxyFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
592
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioFlowProxyFormDialogComponent, isStandalone: true, selector: "gio-ps-flow-proxy-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>\n Flows allow you to apply different policies per HTTP path and/or method. For example you can reroute calls based on the URL specified.\n </p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with path and method if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"pathOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Path operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Path</mat-label>\n <span matTextPrefix>/ </span>\n <input matInput formControlName=\"path\" />\n <mat-hint>Path</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Methods for your flow</mat-label>\n <gio-form-tags-input\n formControlName=\"methods\"\n [autocompleteOptions]=\"methods\"\n [tagValidationHook]=\"tagValidationHook\"\n ></gio-form-tags-input>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:0;right:-24px;float:right}.content__row{display:flex;align-items:flex-start;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "ngmodule", type: GioFormSlideToggleModule }, { kind: "ngmodule", type: GioBannerModule }, { kind: "ngmodule", type: GioIconsModule }, { kind: "component", type: i5$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: GioFormTagsInputModule }, { kind: "component", type: i6$1.GioFormTagsInputComponent, selector: "gio-form-tags-input", inputs: ["aria-label", "addOnBlur", "tagValidationHook", "autocompleteOptions", "displayValueWith", "useAutocompleteOptionValueOnly", "placeholder", "required", "disabled"], outputs: ["tagClicked"] }, { kind: "component", type: GioElPromptComponent, selector: "gio-el-prompt", inputs: ["responseState"] }, { kind: "component", type: GioPopoverComponent, selector: "gio-popover", inputs: ["trigger", "closeOnBackdropClick"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[gioPopoverTrigger]", inputs: ["gioPopoverTriggerFor", "gioPopoverTriggerBasedOnElement"] }] }); }
|
|
581
593
|
}
|
|
582
594
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioFlowProxyFormDialogComponent, decorators: [{
|
|
583
595
|
type: Component,
|
|
@@ -594,7 +606,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
594
606
|
GioBannerModule,
|
|
595
607
|
GioIconsModule,
|
|
596
608
|
GioFormTagsInputModule,
|
|
597
|
-
|
|
609
|
+
GioElPromptComponent,
|
|
610
|
+
GioPopoverComponent,
|
|
611
|
+
PopoverTriggerDirective,
|
|
612
|
+
], selector: 'gio-ps-flow-proxy-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>\n Flows allow you to apply different policies per HTTP path and/or method. For example you can reroute calls based on the URL specified.\n </p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with path and method if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"pathOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Path operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Path</mat-label>\n <span matTextPrefix>/ </span>\n <input matInput formControlName=\"path\" />\n <mat-hint>Path</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Methods for your flow</mat-label>\n <gio-form-tags-input\n formControlName=\"methods\"\n [autocompleteOptions]=\"methods\"\n [tagValidationHook]=\"tagValidationHook\"\n ></gio-form-tags-input>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\" align=\"end\">\n <button class=\"actions__cancelBtn\" mat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-flat-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:0;right:-24px;float:right}.content__row{display:flex;align-items:flex-start;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
598
613
|
}], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
599
614
|
type: Inject,
|
|
600
615
|
args: [MAT_DIALOG_DATA]
|
|
@@ -1114,6 +1129,7 @@ class GioPolicyStudioStepFormComponent {
|
|
|
1114
1129
|
constructor(policyStudioService) {
|
|
1115
1130
|
this.policyStudioService = policyStudioService;
|
|
1116
1131
|
this.noDocumentationAvailable = { content: 'No documentation available.', language: 'ASCIIDOC' };
|
|
1132
|
+
this.elService = inject(GioElService);
|
|
1117
1133
|
this.readOnly = false;
|
|
1118
1134
|
this.stepChange = new EventEmitter();
|
|
1119
1135
|
this.isValid = new EventEmitter();
|
|
@@ -1193,8 +1209,11 @@ class GioPolicyStudioStepFormComponent {
|
|
|
1193
1209
|
configuration,
|
|
1194
1210
|
});
|
|
1195
1211
|
}
|
|
1212
|
+
isEnabled() {
|
|
1213
|
+
return this.elService.isEnabled();
|
|
1214
|
+
}
|
|
1196
1215
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, deps: [{ token: GioPolicyStudioService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1197
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", flowPhase: "flowPhase", apiType: "apiType", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6$1.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7$3.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6$1.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6$1.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6$1.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }] }); }
|
|
1216
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.4", type: GioPolicyStudioStepFormComponent, isStandalone: true, selector: "gio-ps-step-form", inputs: { readOnly: "readOnly", step: "step", flowPhase: "flowPhase", apiType: "apiType", genericPolicy: "genericPolicy" }, outputs: { stepChange: "stepChange", isValid: "isValid" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: GioFormJsonSchemaModule }, { kind: "component", type: i6$1.GioFormJsonSchemaComponent, selector: "gio-form-json-schema", inputs: ["jsonSchema", "context", "options"], outputs: ["ready"] }, { kind: "ngmodule", type: GioAsciidoctorModule }, { kind: "component", type: i7$3.GioAsciidoctorComponent, selector: "gio-asciidoctor", inputs: ["content", "src"] }, { kind: "ngmodule", type: GioLoaderModule }, { kind: "component", type: i6$1.GioLoaderComponent, selector: "gio-loader" }, { kind: "ngmodule", type: GioBannerModule }, { kind: "component", type: i6$1.GioBannerWarningComponent, selector: "gio-banner-warning" }, { kind: "directive", type: i6$1.GioBannerBodyDirective, selector: "[gioBannerBody]" }, { kind: "component", type: MarkdownComponent, selector: "markdown, [markdown]", inputs: ["data", "src", "disableSanitizer", "inline", "clipboard", "clipboardButtonComponent", "clipboardButtonTemplate", "emoji", "katex", "katexOptions", "mermaid", "mermaidOptions", "lineHighlight", "line", "lineOffset", "lineNumbers", "start", "commandLine", "filterOutput", "host", "prompt", "output", "user"], outputs: ["error", "load", "ready"] }, { kind: "component", type: GioElPromptComponent, selector: "gio-el-prompt", inputs: ["responseState"] }, { kind: "component", type: GioPopoverComponent, selector: "gio-popover", inputs: ["trigger", "closeOnBackdropClick"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: PopoverTriggerDirective, selector: "[gioPopoverTrigger]", inputs: ["gioPopoverTriggerFor", "gioPopoverTriggerBasedOnElement"] }] }); }
|
|
1198
1217
|
}
|
|
1199
1218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImport: i0, type: GioPolicyStudioStepFormComponent, decorators: [{
|
|
1200
1219
|
type: Component,
|
|
@@ -1208,7 +1227,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.4", ngImpor
|
|
|
1208
1227
|
GioLoaderModule,
|
|
1209
1228
|
GioBannerModule,
|
|
1210
1229
|
MarkdownComponent,
|
|
1211
|
-
|
|
1230
|
+
GioElPromptComponent,
|
|
1231
|
+
GioPopoverComponent,
|
|
1232
|
+
MatIcon,
|
|
1233
|
+
PopoverTriggerDirective,
|
|
1234
|
+
], selector: 'gio-ps-step-form', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"settings\">\n <div class=\"settings__header\">Settings</div>\n\n <div class=\"settings__content\">\n <ng-container *ngIf=\"stepForm && (policySchema$ | async) as policySchema; else loadingTmpl\" [formGroup]=\"stepForm\">\n <mat-form-field>\n <mat-label>Description</mat-label>\n <textarea matInput formControlName=\"description\" cdkFocusInitial></textarea>\n <mat-hint>Describe how your policy works.</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Trigger condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>The condition to execute this policy. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n\n @if (isMessage) {\n <mat-form-field>\n <mat-label>Message trigger condition</mat-label>\n <input matInput formControlName=\"messageCondition\" />\n <mat-hint>The condition to execute this policy on message. Supports Expression Language.</mat-hint>\n @if (isEnabled()) {\n <button gioPopoverTrigger [gioPopoverTriggerFor]=\"aiPopover\" type=\"button\">\n <mat-icon svgIcon=\"gio:el\" />\n </button>\n\n <gio-popover #aiPopover [closeOnBackdropClick]=\"true\">\n <gio-el-prompt />\n </gio-popover>\n }\n </mat-form-field>\n }\n\n <gio-form-json-schema\n *ngIf=\"policySchema\"\n [jsonSchema]=\"$any(policySchema)\"\n [context]=\"context\"\n (ready)=\"onJsonSchemaReady($event)\"\n formControlName=\"configuration\"\n ></gio-form-json-schema>\n </ng-container>\n </div>\n</div>\n\n<div class=\"documentation\">\n <div class=\"documentation__header\">Documentation</div>\n\n <div class=\"documentation__content\">\n <gio-banner-warning *ngIf=\"infoBanner\">\n Prerequisite message\n <span gioBannerBody>{{ infoBanner }}</span>\n </gio-banner-warning>\n <ng-container *ngIf=\"policyDocumentation$ | async as policyDocumentation; else loadingTmpl\">\n @switch (policyDocumentation.language) {\n @case ('ASCIIDOC') {\n <gio-asciidoctor [content]=\"policyDocumentation.content\"></gio-asciidoctor>\n }\n @case ('MARKDOWN') {\n <markdown class=\"documentation__content__markdown\" [data]=\"policyDocumentation.content\"></markdown>\n }\n }\n </ng-container>\n </div>\n</div>\n\n<ng-template #loadingTmpl>\n <gio-loader></gio-loader>\n</ng-template>\n", styles: ["@charset \"UTF-8\";.gio-top-bar-menu .gio-badge-accent{background-color:var(--gio-oem-palette--active, #ffc2ac);color:var(--gio-oem-palette--active-contrast, #1e1b1b)}:host{display:flex;flex-direction:row;border:1px solid #d2cecd;border-radius:8px}::ng-deep gio-ps-step-form .documentation__content__markdown table{overflow:hidden;width:100%;border:1px solid #d2cecd;border-radius:4px;margin-bottom:12px;border-collapse:separate;border-spacing:0}::ng-deep gio-ps-step-form .documentation__content__markdown table th,::ng-deep gio-ps-step-form .documentation__content__markdown table td{padding:8px;border-bottom:1px solid #d2cecd}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td{border-bottom:none}::ng-deep gio-ps-step-form .documentation__content__markdown table th:first-child{border-top-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table th:last-child{border-top-right-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:first-child{border-bottom-left-radius:4px}::ng-deep gio-ps-step-form .documentation__content__markdown table tr:last-child td:last-child{border-bottom-right-radius:4px}.settings{display:flex;flex:0 0 50%;flex-direction:column}.settings__header{border-right:1px solid #d2cecd}.settings__content{display:flex;flex:1 1 auto;flex-direction:column;padding:16px;border-right:1px solid #d2cecd}.documentation{display:flex;overflow:auto;flex:0 0 50%;flex-direction:column}.documentation__content{overflow:auto;flex:1 1 auto;padding:16px}.settings__header,.documentation__header{padding:16px;border-bottom:1px solid #d2cecd;font-size:14px;font-weight:700;line-height:20px;font-family:Manrope,sans-serif;letter-spacing:.4px}\n"] }]
|
|
1212
1235
|
}], ctorParameters: () => [{ type: GioPolicyStudioService }], propDecorators: { readOnly: [{
|
|
1213
1236
|
type: Input
|
|
1214
1237
|
}], step: [{
|