@pepperi-addons/ngx-composite-lib 0.4.2-beta.202 → 0.4.2-beta.203
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/asset-picker-button/asset-picker-button.component.mjs +1 -1
- package/esm2020/color-settings/color-settings.component.mjs +1 -1
- package/esm2020/file-status-panel/file-status-panel.component.mjs +94 -29
- package/esm2020/generic-fields-builder/flow-field/flow-field.component.mjs +110 -0
- package/esm2020/generic-fields-builder/generic-fields-builder.component.mjs +270 -18
- package/esm2020/generic-fields-builder/generic-fields-builder.model.mjs +2 -0
- package/esm2020/generic-fields-builder/generic-fields-builder.module.mjs +35 -7
- package/esm2020/generic-fields-builder/public-api.mjs +2 -1
- package/esm2020/generic-list/generic-list.component.mjs +26 -7
- package/esm2020/generic-list/generic-list.service.mjs +3 -2
- package/esm2020/icon-picker/icon-picker.component.mjs +1 -1
- package/esm2020/layout-builder/main-editor/main-editor.component.mjs +1 -1
- package/esm2020/layout-builder/section-editor/section-editor.component.mjs +1 -1
- package/esm2020/layout-builder2/layout-builder.component.mjs +3 -3
- package/esm2020/layout-builder2/main-editor/main-editor.component.mjs +1 -1
- package/esm2020/layout-builder2/section-block/section-block.component.mjs +3 -3
- package/esm2020/layout-builder2/section-editor/section-editor.component.mjs +1 -1
- package/esm2020/manage-parameters/manage-parameters.component.mjs +1 -1
- package/esm2020/mapping-parameters/mapping-parameters.component.mjs +1 -1
- package/esm2020/mapping-parameters/param-map/param-map.component.mjs +1 -1
- package/esm2020/padding-settings/padding-settings.component.mjs +1 -1
- package/esm2020/shadow-settings/shadow-settings.component.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +91 -28
- package/fesm2015/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +413 -23
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs +28 -7
- package/fesm2015/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
- package/fesm2015/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2015/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-asset-picker-button.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-color-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs +93 -28
- package/fesm2020/pepperi-addons-ngx-composite-lib-file-status-panel.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs +406 -23
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-fields-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs +27 -7
- package/fesm2020/pepperi-addons-ngx-composite-lib-generic-list.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-icon-picker.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs +2 -2
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs +6 -6
- package/fesm2020/pepperi-addons-ngx-composite-lib-layout-builder2.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-manage-parameters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-mapping-parameters.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-padding-settings.mjs.map +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs +1 -1
- package/fesm2020/pepperi-addons-ngx-composite-lib-shadow-settings.mjs.map +1 -1
- package/file-status-panel/file-status-panel.component.d.ts +17 -5
- package/generic-fields-builder/flow-field/flow-field.component.d.ts +51 -0
- package/generic-fields-builder/generic-fields-builder.component.d.ts +34 -14
- package/generic-fields-builder/generic-fields-builder.model.d.ts +20 -0
- package/generic-fields-builder/generic-fields-builder.module.d.ts +19 -13
- package/generic-fields-builder/public-api.d.ts +1 -0
- package/generic-list/generic-list.component.d.ts +5 -2
- package/package.json +2 -2
- package/src/assets/i18n/en.ngx-composite-lib.json +5 -0
|
@@ -50,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
50
50
|
}], assetChange: [{
|
|
51
51
|
type: Output
|
|
52
52
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtcGlja2VyLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9hc3NldC1waWNrZXItYnV0dG9uL2Fzc2V0LXBpY2tlci1idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvYXNzZXQtcGlja2VyLWJ1dHRvbi9hc3NldC1waWNrZXItYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQStCLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFVeEgsTUFBTSxPQUFPLDBCQUEwQjtJQWVuQyxZQUNZLGdCQUFrQyxFQUNuQyxTQUEyQixFQUMxQix1QkFBbUQ7UUFGbkQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNuQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMxQiw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQTRCO1FBakJ0RCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsdUJBQWtCLEdBQUcsUUFBUSxDQUFDO1FBR3ZDLGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7SUFnQnpELENBQUM7SUFkRCxJQUFZLGlCQUFpQjtRQUN6QixPQUFPO1lBQ0gsYUFBYSxFQUFFLFFBQVE7WUFDdkIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxRQUFRLEVBQUUsSUFBSTtTQUNqQixDQUFDO0lBQ04sQ0FBQztJQVVPLG9CQUFvQixDQUFDLEtBQVUsRUFBRSxTQUFtQztRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QixJQUFJLFNBQVMsRUFBRTtZQUNYLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLGNBQWM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxzQkFBc0IsQ0FBQztZQUNsRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUNoQyxJQUFJLEVBQUUsYUFBYTtZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtZQUNsQyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDbEYsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUhBMUNRLDBCQUEwQjsyR0FBMUIsMEJBQTBCLG9MQ1Z2Qyw2WkFHTTsyRkRPTywwQkFBMEI7a0JBTHRDLFNBQVM7K0JBQ0kseUJBQXlCOytLQUsxQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHTixXQUFXO3NCQURWLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBBZGRvbkJsb2NrTG9hZGVyU2VydmljZSB9IGZyb20gJ0BwZXBwZXJpLWFkZG9ucy9uZ3gtbGliL3JlbW90ZS1sb2FkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1hc3NldC1waWNrZXItYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXNzZXQtcGlja2VyLWJ1dHRvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNzZXQtcGlja2VyLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEFzc2V0UGlja2VyQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpbWFnZVVSTCA9ICcnO1xuICAgIEBJbnB1dCgpIGFsbG93ZWRBc3NldHNUeXBlcyA9ICdpbWFnZXMnO1xuXG4gICAgQE91dHB1dCgpXG4gICAgYXNzZXRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwcml2YXRlIGdldCBfYXNzZXRzSG9zdE9iamVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNlbGVjdGlvblR5cGU6ICdzaW5nbGUnLFxuICAgICAgICAgICAgYWxsb3dlZEFzc2V0c1R5cGVzOiB0aGlzLmFsbG93ZWRBc3NldHNUeXBlcyxcbiAgICAgICAgICAgIGluRGlhbG9nOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhZGRvbkJsb2NrTG9hZGVyU2VydmljZTogUGVwQWRkb25CbG9ja0xvYWRlclNlcnZpY2VcbiAgICAgICAgKSB7XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSG9zdEV2ZW50c0NhbGxiYWNrKGV2ZW50OiBhbnksIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPGFueT4gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuYXNzZXRDaGFuZ2UuZW1pdChldmVudCk7XG5cbiAgICAgICAgaWYgKGRpYWxvZ1JlZikge1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIC8vIERvIG5vdGhpbmcuXG4gICAgfVxuXG4gICAgb25PcGVuQXNzZXRzRGlhbG9nKCkge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmFkZG9uQmxvY2tMb2FkZXJTZXJ2aWNlLmxvYWRBZGRvbkJsb2NrSW5EaWFsb2coe1xuICAgICAgICAgICAgY29udGFpbmVyOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBuYW1lOiAnQXNzZXRQaWNrZXInLFxuICAgICAgICAgICAgaG9zdE9iamVjdDogdGhpcy5fYXNzZXRzSG9zdE9iamVjdCxcbiAgICAgICAgICAgIGhvc3RFdmVudHNDYWxsYmFjazogKGV2ZW50KSA9PiB7IHRoaXMub25Ib3N0RXZlbnRzQ2FsbGJhY2soZXZlbnQsIGRpYWxvZ1JlZik7IH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwiYm9keS14cyBub3JtYWwgZWxsaXBzaXNcIj57eydBU1NFVF9QSUNLRVJfQlVUVE9OLkNIT09TRV9JTUFHRScgfCB0cmFuc2xhdGV9fTwvbGFiZWw+XG48ZGl2IGNsYXNzPVwiYXNzZXRzLWJ0bi1jb250XCIgW25nU3R5bGVdPVwieydiYWNrZ3JvdW5kLWltYWdlJzogJ3VybCgnICsgaW1hZ2VVUkwgKyAnKSd9XCIgKGNsaWNrKT1cIm9uT3BlbkFzc2V0c0RpYWxvZygpO1wiPlxuICAgIDxwZXAtYnV0dG9uIHNpemVUeXBlPVwic21cIiBbc3R5bGVUeXBlXT1cIidyZWd1bGFyJ1wiIFt2YWx1ZV09XCInQVNTRVRfUElDS0VSX0JVVFRPTi5PUEVOX0FTU0VUU19NQU5BR0VSJyB8IHRyYW5zbGF0ZVwiIGljb25OYW1lPVwic3lzdGVtX2ZpbGVfdXBsb2FkX2Nsb3VkXCI+PC9wZXAtYnV0dG9uPlxuPC9kaXY+Il19
|
|
@@ -70,7 +70,7 @@ export class ColorSettingsComponent {
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
ColorSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ColorSettingsComponent, deps: [{ token: i1.PepColorService }], target: i0.ɵɵFactoryTarget.Component });
|
|
73
|
-
ColorSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ColorSettingsComponent, selector: "pep-color-settings", inputs: { title: "title", checkAAComplient: "checkAAComplient", showAAComplient: "showAAComplient", titleSize: "titleSize", color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<div>\n <pep-checkbox \n class=\"{{ titleSize === 'xl' ? 'checkbox-as-title' : 'checkbox-as-sub-title' }}\" \n [label]=\"title\" [renderTitle]=\"false\" [value]=\"color.use\"\n (valueChange)=\"onUseChanged($event)\"></pep-checkbox>\n <pep-color [value]=\"color.value\" [label]=\"title + ' ' + ('COLOR_SETTINGS.COLOR' | translate)\" [disabled]=\"!color.use\"\n [checkAAComplient]=\"checkAAComplient\" [showAAComplient]=\"showAAComplient\" (valueChange)=\"onColorChanged($event)\">\n </pep-color>\n</div>\n<pep-slider [label]=\"title + ' ' + ('COLOR_SETTINGS.OPACITY' | translate)\" [hint]=\"color.opacity.toString() || ''\"\n [minValue]=\"0\" [maxValue]=\"100\" [disabled]=\"!color.use\" [value]=\"color.opacity\" [background]=\"getSliderBackground()\"\n (inputChange)=\"onSliderInputChanged($event)\" (valueChange)=\"onSliderValueChanged($event)\">\n</pep-slider>", styles: [":host{width:100%;display:grid;gap:var(--pep-spacing-lg, 1rem)}\n"], dependencies: [{ kind: "component", type: i2.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange", "validationChange"] }, { kind: "component", type: i3.PepColorComponent, selector: "pep-color", inputs: ["key", "value", "label", "disabled", "xAlignment", "rowSpan", "type", "showTitle", "renderTitle", "showAAComplient", "checkAAComplient", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i4.PepSliderComponent, selector: "pep-slider", inputs: ["label", "disabled", "hint", "background", "step", "minValue", "maxValue", "value"], outputs: ["valueChange", "inputChange"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
73
|
+
ColorSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: ColorSettingsComponent, selector: "pep-color-settings", inputs: { title: "title", checkAAComplient: "checkAAComplient", showAAComplient: "showAAComplient", titleSize: "titleSize", color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<div>\n <pep-checkbox \n class=\"{{ titleSize === 'xl' ? 'checkbox-as-title' : 'checkbox-as-sub-title' }}\" \n [label]=\"title\" [renderTitle]=\"false\" [value]=\"color.use\"\n (valueChange)=\"onUseChanged($event)\"></pep-checkbox>\n <pep-color [value]=\"color.value\" [label]=\"title + ' ' + ('COLOR_SETTINGS.COLOR' | translate)\" [disabled]=\"!color.use\"\n [checkAAComplient]=\"checkAAComplient\" [showAAComplient]=\"showAAComplient\" (valueChange)=\"onColorChanged($event)\">\n </pep-color>\n</div>\n<pep-slider [label]=\"title + ' ' + ('COLOR_SETTINGS.OPACITY' | translate)\" [hint]=\"color.opacity.toString() || ''\"\n [minValue]=\"0\" [maxValue]=\"100\" [disabled]=\"!color.use\" [value]=\"color.opacity\" [background]=\"getSliderBackground()\"\n (inputChange)=\"onSliderInputChanged($event)\" (valueChange)=\"onSliderValueChanged($event)\">\n</pep-slider>", styles: [":host{width:100%;display:grid;gap:var(--pep-spacing-lg, 1rem)}\n"], dependencies: [{ kind: "component", type: i2.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "id", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange", "validationChange"] }, { kind: "component", type: i3.PepColorComponent, selector: "pep-color", inputs: ["key", "value", "label", "disabled", "xAlignment", "rowSpan", "type", "showTitle", "renderTitle", "showAAComplient", "checkAAComplient", "layoutType"], outputs: ["valueChange"] }, { kind: "component", type: i4.PepSliderComponent, selector: "pep-slider", inputs: ["label", "disabled", "hint", "background", "step", "minValue", "maxValue", "value"], outputs: ["valueChange", "inputChange"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] });
|
|
74
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ColorSettingsComponent, decorators: [{
|
|
75
75
|
type: Component,
|
|
76
76
|
args: [{ selector: 'pep-color-settings', template: "<div>\n <pep-checkbox \n class=\"{{ titleSize === 'xl' ? 'checkbox-as-title' : 'checkbox-as-sub-title' }}\" \n [label]=\"title\" [renderTitle]=\"false\" [value]=\"color.use\"\n (valueChange)=\"onUseChanged($event)\"></pep-checkbox>\n <pep-color [value]=\"color.value\" [label]=\"title + ' ' + ('COLOR_SETTINGS.COLOR' | translate)\" [disabled]=\"!color.use\"\n [checkAAComplient]=\"checkAAComplient\" [showAAComplient]=\"showAAComplient\" (valueChange)=\"onColorChanged($event)\">\n </pep-color>\n</div>\n<pep-slider [label]=\"title + ' ' + ('COLOR_SETTINGS.OPACITY' | translate)\" [hint]=\"color.opacity.toString() || ''\"\n [minValue]=\"0\" [maxValue]=\"100\" [disabled]=\"!color.use\" [value]=\"color.opacity\" [background]=\"getSliderBackground()\"\n (inputChange)=\"onSliderInputChanged($event)\" (valueChange)=\"onSliderValueChanged($event)\">\n</pep-slider>", styles: [":host{width:100%;display:grid;gap:var(--pep-spacing-lg, 1rem)}\n"] }]
|
|
@@ -2,29 +2,30 @@ import { Component, Input, Output, EventEmitter, Optional, Inject } from '@angul
|
|
|
2
2
|
import { MatSnackBarRef, MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/material/snack-bar";
|
|
5
|
-
import * as i2 from "@
|
|
6
|
-
import * as i3 from "@
|
|
7
|
-
import * as i4 from "@pepperi-addons/ngx-lib/
|
|
5
|
+
import * as i2 from "@pepperi-addons/ngx-lib/snack-bar";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@pepperi-addons/ngx-lib/icon";
|
|
8
8
|
export class FileStatusPanelComponent {
|
|
9
|
-
constructor(data, snackBarRef, snackBar, cdr) {
|
|
9
|
+
constructor(data, snackBarRef, snackBar, pepSnackBarService, cdr, elementRef, renderer) {
|
|
10
10
|
this.data = data;
|
|
11
11
|
this.snackBarRef = snackBarRef;
|
|
12
12
|
this.snackBar = snackBar;
|
|
13
|
+
this.pepSnackBarService = pepSnackBarService;
|
|
13
14
|
this.cdr = cdr;
|
|
15
|
+
this.elementRef = elementRef;
|
|
16
|
+
this.renderer = renderer;
|
|
14
17
|
// @Input() title = '';
|
|
15
18
|
// @Input() filesList: Array<FileStatus> = [];
|
|
16
19
|
this.closeClick = new EventEmitter();
|
|
17
20
|
this._openAsSnackBar = false;
|
|
21
|
+
this._hasOpenAsSnackBarInput = false;
|
|
18
22
|
this._opened = false;
|
|
19
23
|
this._pendingOpen = false;
|
|
20
24
|
//
|
|
21
25
|
}
|
|
22
26
|
set panelData(val) {
|
|
23
27
|
if (val) {
|
|
24
|
-
|
|
25
|
-
val.content = [];
|
|
26
|
-
}
|
|
27
|
-
this.data = val;
|
|
28
|
+
this.data = this.normalizePanelData(val);
|
|
28
29
|
// Trigger change detection when used as Angular Element
|
|
29
30
|
try {
|
|
30
31
|
this.cdr.detectChanges();
|
|
@@ -34,7 +35,12 @@ export class FileStatusPanelComponent {
|
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
set openAsSnackBar(val) {
|
|
38
|
+
this._hasOpenAsSnackBarInput = true;
|
|
37
39
|
this._openAsSnackBar = !!val;
|
|
40
|
+
try {
|
|
41
|
+
this.cdr.detectChanges();
|
|
42
|
+
}
|
|
43
|
+
catch { }
|
|
38
44
|
if (this._openAsSnackBar) {
|
|
39
45
|
if (this._opened) {
|
|
40
46
|
// If already open, dismiss and re-open after dismissed
|
|
@@ -50,13 +56,14 @@ export class FileStatusPanelComponent {
|
|
|
50
56
|
}
|
|
51
57
|
}
|
|
52
58
|
ngOnInit() {
|
|
53
|
-
|
|
54
|
-
this.data = { ...this.data, content: [] };
|
|
55
|
-
}
|
|
59
|
+
this.data = this.normalizePanelData(this.data);
|
|
56
60
|
// Provide a safe object for the template binding when not opened as snackbar
|
|
57
61
|
this.snackBarRefInput = this.snackBarRef ?? { dismiss: () => { } };
|
|
58
62
|
this.openIfRequested();
|
|
59
63
|
}
|
|
64
|
+
ngAfterViewInit() {
|
|
65
|
+
this.alignSnackBarWrapper();
|
|
66
|
+
}
|
|
60
67
|
onCloseClicked(event) {
|
|
61
68
|
try {
|
|
62
69
|
this.snackBarRef?.dismiss();
|
|
@@ -64,21 +71,72 @@ export class FileStatusPanelComponent {
|
|
|
64
71
|
catch { }
|
|
65
72
|
this.closeClick.emit();
|
|
66
73
|
}
|
|
74
|
+
get shouldRenderInline() {
|
|
75
|
+
if (this.snackBarRef) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
if (this.isElementHost && !this._hasOpenAsSnackBarInput) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
return !this._openAsSnackBar;
|
|
82
|
+
}
|
|
83
|
+
get visibleContent() {
|
|
84
|
+
const content = Array.isArray(this.data?.content) ? this.data.content : [];
|
|
85
|
+
return content.filter((file) => {
|
|
86
|
+
if (!file || file.status === 'hidden') {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return !!file.name || !!file.status || !!file.statusMessage;
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
get isElementHost() {
|
|
93
|
+
return this.elementRef.nativeElement.tagName === 'PEP-FILE-STATUS-PANEL-ELEMENT';
|
|
94
|
+
}
|
|
95
|
+
alignSnackBarWrapper() {
|
|
96
|
+
if (!this.snackBarRef) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
const wrapper = this.elementRef.nativeElement.closest('.cdk-global-overlay-wrapper');
|
|
101
|
+
if (!wrapper) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const isRtl = getComputedStyle(wrapper).direction === 'rtl';
|
|
105
|
+
this.renderer.setStyle(wrapper, 'justify-content', isRtl ? 'flex-start' : 'flex-end');
|
|
106
|
+
});
|
|
107
|
+
}
|
|
67
108
|
openIfRequested() {
|
|
68
|
-
if (this._openAsSnackBar
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
109
|
+
if (!this._openAsSnackBar || this.visibleContent.length === 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const existingRef = FileStatusPanelComponent.activeSnackBarRef;
|
|
113
|
+
if (existingRef?.instance) {
|
|
114
|
+
try {
|
|
115
|
+
existingRef.instance.panelData = this.normalizePanelData(this.data);
|
|
116
|
+
}
|
|
117
|
+
catch { }
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (this._opened) {
|
|
121
|
+
return;
|
|
81
122
|
}
|
|
123
|
+
this._opened = true;
|
|
124
|
+
const snackBarConfig = this.pepSnackBarService.getSnackBarConfig();
|
|
125
|
+
snackBarConfig.data = this.normalizePanelData(this.data);
|
|
126
|
+
const ref = this.snackBar.openFromComponent(FileStatusPanelComponent, snackBarConfig);
|
|
127
|
+
this._snackRef = ref;
|
|
128
|
+
FileStatusPanelComponent.activeSnackBarRef = ref;
|
|
129
|
+
ref.afterDismissed().subscribe(() => {
|
|
130
|
+
if (FileStatusPanelComponent.activeSnackBarRef === ref) {
|
|
131
|
+
FileStatusPanelComponent.activeSnackBarRef = undefined;
|
|
132
|
+
}
|
|
133
|
+
this._opened = false;
|
|
134
|
+
if (this._pendingOpen) {
|
|
135
|
+
this._pendingOpen = false;
|
|
136
|
+
// Re-open with current data (requested via setter while open)
|
|
137
|
+
this.openIfRequested();
|
|
138
|
+
}
|
|
139
|
+
});
|
|
82
140
|
}
|
|
83
141
|
dismissIfOpen() {
|
|
84
142
|
try {
|
|
@@ -87,12 +145,19 @@ export class FileStatusPanelComponent {
|
|
|
87
145
|
catch { }
|
|
88
146
|
this._opened = false;
|
|
89
147
|
}
|
|
148
|
+
normalizePanelData(data) {
|
|
149
|
+
const content = Array.isArray(data?.content) ? [...data.content] : [];
|
|
150
|
+
return {
|
|
151
|
+
...data,
|
|
152
|
+
content,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
90
155
|
}
|
|
91
|
-
FileStatusPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, deps: [{ token: MAT_SNACK_BAR_DATA, optional: true }, { token: MatSnackBarRef, optional: true }, { token: i1.MatSnackBar }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
92
|
-
FileStatusPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FileStatusPanelComponent, selector: "pep-file-status-panel", inputs: { panelData: "panelData", openAsSnackBar: "openAsSnackBar" }, outputs: { closeClick: "closeClick" }, ngImport: i0, template: "<pep-snack-bar class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"
|
|
156
|
+
FileStatusPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, deps: [{ token: MAT_SNACK_BAR_DATA, optional: true }, { token: MatSnackBarRef, optional: true }, { token: i1.MatSnackBar }, { token: i2.PepSnackBarService }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
+
FileStatusPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FileStatusPanelComponent, selector: "pep-file-status-panel", inputs: { panelData: "panelData", openAsSnackBar: "openAsSnackBar" }, outputs: { closeClick: "closeClick" }, ngImport: i0, template: "<pep-snack-bar *ngIf=\"shouldRenderInline\" class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"visibleContent.length\">\n <li *ngFor=\"let file of visibleContent\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.PepIconComponent, selector: "pep-icon", inputs: ["spin", "name", "fill"] }, { kind: "component", type: i2.PepSnackBarComponent, selector: "pep-snack-bar", inputs: ["snackBarRef", "title"], outputs: ["closeClick"] }] });
|
|
93
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FileStatusPanelComponent, decorators: [{
|
|
94
159
|
type: Component,
|
|
95
|
-
args: [{ selector: 'pep-file-status-panel', template: "<pep-snack-bar class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"
|
|
160
|
+
args: [{ selector: 'pep-file-status-panel', template: "<pep-snack-bar *ngIf=\"shouldRenderInline\" class=\"upload-panel-contnainer\" [snackBarRef]=\"snackBarRefInput\" [title]=\"data?.title || ''\" (closeClick)=\"onCloseClicked($event)\" >\n <div pep-snack-bar-content class=\"panel-content\">\n <ul *ngIf=\"visibleContent.length\">\n <li *ngFor=\"let file of visibleContent\">\n <span class=\"color-dimmed body-sm ellipsis\">{{file.name}}</span>\n <pep-icon class=\"pep-spacing-element\" name=\"arrow_right_alt\"></pep-icon>\n <span class=\"body-sm\" title=\"{{file.statusMessage}}\">{{file.status}}</span>\n </li>\n </ul>\n </div>\n</pep-snack-bar>", styles: [".upload-panel-contnainer .panel-content{max-height:50vh;overflow:auto}.upload-panel-contnainer .panel-content ul{list-style-type:none;padding:0}.upload-panel-contnainer .panel-content ul li{height:1.25rem;margin-top:.5rem;display:flex;flex-direction:row;align-items:center}.upload-panel-contnainer .panel-content ul li pep-icon{height:1rem}\n"] }]
|
|
96
161
|
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
97
162
|
type: Optional
|
|
98
163
|
}, {
|
|
@@ -103,11 +168,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
103
168
|
}, {
|
|
104
169
|
type: Inject,
|
|
105
170
|
args: [MatSnackBarRef]
|
|
106
|
-
}] }, { type: i1.MatSnackBar }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { closeClick: [{
|
|
171
|
+
}] }, { type: i1.MatSnackBar }, { type: i2.PepSnackBarService }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { closeClick: [{
|
|
107
172
|
type: Output
|
|
108
173
|
}], panelData: [{
|
|
109
174
|
type: Input
|
|
110
175
|
}], openAsSnackBar: [{
|
|
111
176
|
type: Input
|
|
112
177
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZmlsZS1zdGF0dXMtcGFuZWwvZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZmlsZS1zdGF0dXMtcGFuZWwvZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBc0IsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBZSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7QUFVOUYsTUFBTSxPQUFPLHdCQUF3QjtJQTJDakMsWUFDbUQsSUFBaUMsRUFDckMsV0FBaUUsRUFDcEcsUUFBcUIsRUFDckIsR0FBc0I7UUFIaUIsU0FBSSxHQUFKLElBQUksQ0FBNkI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQXNEO1FBQ3BHLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE5Q2xDLHVCQUF1QjtRQUN2Qiw4Q0FBOEM7UUFHOUMsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBK0JsRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRWhCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBVTFCLEVBQUU7SUFDTCxDQUFDO0lBM0NELElBQ0ksU0FBUyxDQUFDLEdBQWdDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFFLEdBQVcsQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFFLEdB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QUxwQyxTQUFTOytCQUNJLHVCQUF1Qjs7MEJBZ0Q1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3JDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYztzR0F4Q3RDLFVBQVU7c0JBRFQsTUFBTTtnQkFJSCxTQUFTO3NCQURaLEtBQUs7Z0JBY0YsY0FBYztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3RhYmxlLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsLCBJbmplY3QsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRTbmFja0JhclJlZiwgTUFUX1NOQUNLX0JBUl9EQVRBLCBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBQZXBTbmFja0JhckRhdGEgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9zbmFjay1iYXInO1xuaW1wb3J0IHsgRmlsZVN0YXR1cyB9IGZyb20gJy4vZmlsZS1zdGF0dXMtcGFuZWwubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BlcC1maWxlLXN0YXR1cy1wYW5lbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtc3RhdHVzLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXN0YXR1cy1wYW5lbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZpbGVTdGF0dXNQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgLy8gQElucHV0KCkgdGl0bGUgPSAnJztcbiAgICAvLyBASW5wdXQoKSBmaWxlc0xpc3Q6IEFycmF5PEZpbGVTdGF0dXM+ID0gW107XG4gICAgXG4gICAgQE91dHB1dCgpXG4gICAgY2xvc2VDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIFxuICAgIEBJbnB1dCgpXG4gICAgc2V0IHBhbmVsRGF0YSh2YWw6IFBlcFNuYWNrQmFyRGF0YSB8IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICBpZiAoISh2YWwgYXMgYW55KS5jb250ZW50IHx8ICFBcnJheS5pc0FycmF5KCh2YWwgYXMgYW55KS5jb250ZW50KSkge1xuICAgICAgICAgICAgICAgICh2YWwgYXMgYW55KS5jb250ZW50ID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRhdGEgPSB2YWw7XG4gICAgICAgICAgICAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiB1c2VkIGFzIEFuZ3VsYXIgRWxlbWVudFxuICAgICAgICAgICAgdHJ5IHsgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpOyB9IGNhdGNoIHt9XG4gICAgICAgICAgICB0aGlzLm9wZW5JZlJlcXVlc3RlZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBzZXQgb3BlbkFzU25hY2tCYXIodmFsOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX29wZW5Bc1NuYWNrQmFyID0gISF2YWw7XG4gICAgICAgIGlmICh0aGlzLl9vcGVuQXNTbmFja0Jhcikge1xuICAgICAgICAgICAgaWYgKHRoaXMuX29wZW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIElmIGFscmVhZHkgb3BlbiwgZGlzbWlzcyBhbmQgcmUtb3BlbiBhZnRlciBkaXNtaXNzZWRcbiAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nT3BlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzSWZPcGVuKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMub3BlbklmUmVxdWVzdGVkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc21pc3NJZk9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX29wZW5Bc1NuYWNrQmFyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfb3BlbmVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfc25hY2tSZWY/OiBNYXRTbmFja0JhclJlZjxGaWxlU3RhdHVzUGFuZWxDb21wb25lbnQ+O1xuICAgIHByaXZhdGUgX3BlbmRpbmdPcGVuID0gZmFsc2U7XG4gICAgLy8gVXNlZCBvbmx5IGZvciB0ZW1wbGF0ZSBiaW5kaW5nIHRvIHNhdGlzZnkgc3RyaWN0IHRlbXBsYXRlIHR5cGluZ1xuICAgIHNuYWNrQmFyUmVmSW5wdXQ6IGFueTtcbiAgICBcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNQVRfU05BQ0tfQkFSX0RBVEEpIHB1YmxpYyBkYXRhOiBQZXBTbmFja0JhckRhdGEgfCB1bmRlZmluZWQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTWF0U25hY2tCYXJSZWYpIHB1YmxpYyBzbmFja0JhclJlZjogTWF0U25hY2tCYXJSZWY8RmlsZVN0YXR1c1BhbmVsQ29tcG9uZW50PiB8IHVuZGVmaW5lZCxcbiAgICAgICAgcHJpdmF0ZSBzbmFja0JhcjogTWF0U25hY2tCYXIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZlxuICAgICkge1xuICAgICAgIC8vXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhIHx8ICFBcnJheS5pc0FycmF5KCh0aGlzLmRhdGEgYXMgYW55KS5jb250ZW50KSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gKHsgLi4uKHRoaXMuZGF0YSBhcyBhbnkpLCBjb250ZW50OiBbXSB9IGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUHJvdmlkZSBhIHNhZmUgb2JqZWN0IGZvciB0aGUgdGVtcGxhdGUgYmluZGluZyB3aGVuIG5vdCBvcGVuZWQgYXMgc25hY2tiYXJcbiAgICAgICAgdGhpcy5zbmFja0JhclJlZklucHV0ID0gdGhpcy5zbmFja0JhclJlZiA/PyB7IGRpc21pc3M6ICgpID0+IHt9IH07XG4gICAgICAgIHRoaXMub3BlbklmUmVxdWVzdGVkKCk7XG4gICAgfVxuXG4gICAgb25DbG9zZUNsaWNrZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgICAgICB0cnkgeyB0aGlzLnNuYWNrQmFyUmVmPy5kaXNtaXNzKCk7IH0gY2F0Y2gge31cbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9wZW5JZlJlcXVlc3RlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX29wZW5Bc1NuYWNrQmFyICYmICF0aGlzLl9vcGVuZWQgJiYgdGhpcy5kYXRhICYmIEFycmF5LmlzQXJyYXkoKHRoaXMuZGF0YSBhcyBhbnkpLmNvbnRlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tSZWYgPSB0aGlzLnNuYWNrQmFyLm9wZW5Gcm9tQ29tcG9uZW50KEZpbGVTdGF0dXNQYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc25hY2tSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZW5kaW5nT3Blbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBSZS1vcGVuIHdpdGggY3VycmVudCBkYXRhIChyZXF1ZXN0ZWQgdmlhIHNldHRlciB3aGlsZSBvcGVuKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW5JZlJlcXVlc3RlZCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNtaXNzSWZPcGVuKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tSZWY/LmRpc21pc3MoKTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cblxufSIsIjxwZXAtc25hY2stYmFyIGNsYXNzPVwidXBsb2FkLXBhbmVsLWNvbnRuYWluZXJcIiBbc25hY2tCYXJSZWZdPVwic25hY2tCYXJSZWZJbnB1dFwiIFt0aXRsZV09XCJkYXRhPy50aXRsZSB8fCAnJ1wiIChjbG9zZUNsaWNrKT1cIm9uQ2xvc2VDbGlja2VkKCRldmVudClcIiA+XG4gICAgPGRpdiBwZXAtc25hY2stYmFyLWNvbnRlbnQgY2xhc3M9XCJwYW5lbC1jb250ZW50XCI+XG4gICAgICAgIDx1bCAqbmdJZj1cImRhdGE/LmNvbnRlbnQ/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRhdGE/LmNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsZT8uc3RhdHVzICE9PSAnaGlkZGVuJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbG9yLWRpbW1lZCBib2R5LXNtIGVsbGlwc2lzXCI+e3tmaWxlLm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHBlcC1pY29uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiIG5hbWU9XCJhcnJvd19yaWdodF9hbHRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJvZHktc21cIiB0aXRsZT1cInt7ZmlsZS5zdGF0dXNNZXNzYWdlfX1cIj57e2ZpbGUuc3RhdHVzfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgIDwvZGl2PlxuPC9wZXAtc25hY2stYmFyPiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZmlsZS1zdGF0dXMtcGFuZWwvZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNvbXBvc2l0ZS1saWIvZmlsZS1zdGF0dXMtcGFuZWwvZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUEyRCxNQUFNLGVBQWUsQ0FBQztBQUMxSixPQUFPLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFlLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztBQVM5RixNQUFNLE9BQU8sd0JBQXdCO0lBNENqQyxZQUNtRCxJQUFpQyxFQUNyQyxXQUFpRSxFQUNwRyxRQUFxQixFQUNyQixrQkFBc0MsRUFDdEMsR0FBc0IsRUFDdEIsVUFBbUMsRUFDbkMsUUFBbUI7UUFOb0IsU0FBSSxHQUFKLElBQUksQ0FBNkI7UUFDckMsZ0JBQVcsR0FBWCxXQUFXLENBQXNEO1FBQ3BHLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF5QjtRQUNuQyxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBbEQvQix1QkFBdUI7UUFDdkIsOENBQThDO1FBRzlDLGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQThCbEQsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsNEJBQXVCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIsaUJB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QztJQUN6QixDQUFDOztxSEExS1Esd0JBQXdCLGtCQTZDVCxrQkFBa0IsNkJBQ2xCLGNBQWM7eUdBOUM3Qix3QkFBd0IsMEtDVnJDLDRxQkFVZ0I7MkZEQUgsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLHVCQUF1Qjs7MEJBaUQ1QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjs7MEJBQ3JDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsY0FBYzt3TEF6Q3RDLFVBQVU7c0JBRFQsTUFBTTtnQkFJSCxTQUFTO3NCQURaLEtBQUs7Z0JBV0YsY0FBYztzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsLCBJbmplY3QsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyUmVmLCBNQVRfU05BQ0tfQkFSX0RBVEEsIE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcbmltcG9ydCB7IFBlcFNuYWNrQmFyRGF0YSwgUGVwU25hY2tCYXJTZXJ2aWNlIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvc25hY2stYmFyJztcbmltcG9ydCB7IEZpbGVTdGF0dXMgfSBmcm9tICcuL2ZpbGUtc3RhdHVzLXBhbmVsLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZmlsZS1zdGF0dXMtcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLXN0YXR1cy1wYW5lbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1zdGF0dXMtcGFuZWwuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGaWxlU3RhdHVzUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIC8vIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gICAgLy8gQElucHV0KCkgZmlsZXNMaXN0OiBBcnJheTxGaWxlU3RhdHVzPiA9IFtdO1xuICAgIFxuICAgIEBPdXRwdXQoKVxuICAgIGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBcbiAgICBASW5wdXQoKVxuICAgIHNldCBwYW5lbERhdGEodmFsOiBQZXBTbmFja0JhckRhdGEgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5ub3JtYWxpemVQYW5lbERhdGEodmFsKTtcbiAgICAgICAgICAgIC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB3aGVuIHVzZWQgYXMgQW5ndWxhciBFbGVtZW50XG4gICAgICAgICAgICB0cnkgeyB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IH0gY2F0Y2gge31cbiAgICAgICAgICAgIHRoaXMub3BlbklmUmVxdWVzdGVkKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBvcGVuQXNTbmFja0Jhcih2YWw6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5faGFzT3BlbkFzU25hY2tCYXJJbnB1dCA9IHRydWU7XG4gICAgICAgIHRoaXMuX29wZW5Bc1NuYWNrQmFyID0gISF2YWw7XG4gICAgICAgIHRyeSB7IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgfSBjYXRjaCB7fVxuICAgICAgICBpZiAodGhpcy5fb3BlbkFzU25hY2tCYXIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9vcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiBhbHJlYWR5IG9wZW4sIGRpc21pc3MgYW5kIHJlLW9wZW4gYWZ0ZXIgZGlzbWlzc2VkXG4gICAgICAgICAgICAgICAgdGhpcy5fcGVuZGluZ09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzc0lmT3BlbigpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5JZlJlcXVlc3RlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNtaXNzSWZPcGVuKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9vcGVuQXNTbmFja0JhciA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2hhc09wZW5Bc1NuYWNrQmFySW5wdXQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9zbmFja1JlZj86IE1hdFNuYWNrQmFyUmVmPEZpbGVTdGF0dXNQYW5lbENvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBzdGF0aWMgYWN0aXZlU25hY2tCYXJSZWY6IE1hdFNuYWNrQmFyUmVmPEZpbGVTdGF0dXNQYW5lbENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSBfcGVuZGluZ09wZW4gPSBmYWxzZTtcbiAgICAvLyBVc2VkIG9ubHkgZm9yIHRlbXBsYXRlIGJpbmRpbmcgdG8gc2F0aXNmeSBzdHJpY3QgdGVtcGxhdGUgdHlwaW5nXG4gICAgc25hY2tCYXJSZWZJbnB1dDogYW55O1xuICAgIFxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9TTkFDS19CQVJfREFUQSkgcHVibGljIGRhdGE6IFBlcFNuYWNrQmFyRGF0YSB8IHVuZGVmaW5lZCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChNYXRTbmFja0JhclJlZikgcHVibGljIHNuYWNrQmFyUmVmOiBNYXRTbmFja0JhclJlZjxGaWxlU3RhdHVzUGFuZWxDb21wb25lbnQ+IHwgdW5kZWZpbmVkLFxuICAgICAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICAgICAgcHJpdmF0ZSBwZXBTbmFja0JhclNlcnZpY2U6IFBlcFNuYWNrQmFyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAvL1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLm5vcm1hbGl6ZVBhbmVsRGF0YSh0aGlzLmRhdGEpO1xuICAgICAgICAvLyBQcm92aWRlIGEgc2FmZSBvYmplY3QgZm9yIHRoZSB0ZW1wbGF0ZSBiaW5kaW5nIHdoZW4gbm90IG9wZW5lZCBhcyBzbmFja2JhclxuICAgICAgICB0aGlzLnNuYWNrQmFyUmVmSW5wdXQgPSB0aGlzLnNuYWNrQmFyUmVmID8/IHsgZGlzbWlzczogKCkgPT4ge30gfTtcbiAgICAgICAgdGhpcy5vcGVuSWZSZXF1ZXN0ZWQoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWxpZ25TbmFja0JhcldyYXBwZXIoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIHRyeSB7IHRoaXMuc25hY2tCYXJSZWY/LmRpc21pc3MoKTsgfSBjYXRjaCB7fVxuICAgICAgICB0aGlzLmNsb3NlQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIGdldCBzaG91bGRSZW5kZXJJbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLnNuYWNrQmFyUmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRWxlbWVudEhvc3QgJiYgIXRoaXMuX2hhc09wZW5Bc1NuYWNrQmFySW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAhdGhpcy5fb3BlbkFzU25hY2tCYXI7XG4gICAgfVxuXG4gICAgZ2V0IHZpc2libGVDb250ZW50KCk6IEZpbGVTdGF0dXNbXSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBBcnJheS5pc0FycmF5KCh0aGlzLmRhdGEgYXMgYW55KT8uY29udGVudCkgPyAoKHRoaXMuZGF0YSBhcyBhbnkpLmNvbnRlbnQgYXMgRmlsZVN0YXR1c1tdKSA6IFtdO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50LmZpbHRlcigoZmlsZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFmaWxlIHx8IGZpbGUuc3RhdHVzID09PSAnaGlkZGVuJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICEhZmlsZS5uYW1lIHx8ICEhZmlsZS5zdGF0dXMgfHwgISFmaWxlLnN0YXR1c01lc3NhZ2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGlzRWxlbWVudEhvc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50YWdOYW1lID09PSAnUEVQLUZJTEUtU1RBVFVTLVBBTkVMLUVMRU1FTlQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxpZ25TbmFja0JhcldyYXBwZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5zbmFja0JhclJlZikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLmNkay1nbG9iYWwtb3ZlcmxheS13cmFwcGVyJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICAgICAgICBpZiAoIXdyYXBwZXIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUnRsID0gZ2V0Q29tcHV0ZWRTdHlsZSh3cmFwcGVyKS5kaXJlY3Rpb24gPT09ICdydGwnO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh3cmFwcGVyLCAnanVzdGlmeS1jb250ZW50JywgaXNSdGwgPyAnZmxleC1zdGFydCcgOiAnZmxleC1lbmQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvcGVuSWZSZXF1ZXN0ZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fb3BlbkFzU25hY2tCYXIgfHwgdGhpcy52aXNpYmxlQ29udGVudC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nUmVmID0gRmlsZVN0YXR1c1BhbmVsQ29tcG9uZW50LmFjdGl2ZVNuYWNrQmFyUmVmO1xuICAgICAgICBpZiAoZXhpc3RpbmdSZWY/Lmluc3RhbmNlKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGV4aXN0aW5nUmVmLmluc3RhbmNlLnBhbmVsRGF0YSA9IHRoaXMubm9ybWFsaXplUGFuZWxEYXRhKHRoaXMuZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIHt9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fb3BlbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICAgICAgICBjb25zdCBzbmFja0JhckNvbmZpZyA9IHRoaXMucGVwU25hY2tCYXJTZXJ2aWNlLmdldFNuYWNrQmFyQ29uZmlnKCk7XG4gICAgICAgIHNuYWNrQmFyQ29uZmlnLmRhdGEgPSB0aGlzLm5vcm1hbGl6ZVBhbmVsRGF0YSh0aGlzLmRhdGEpO1xuXG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoRmlsZVN0YXR1c1BhbmVsQ29tcG9uZW50LCBzbmFja0JhckNvbmZpZyk7XG4gICAgICAgIHRoaXMuX3NuYWNrUmVmID0gcmVmO1xuICAgICAgICBGaWxlU3RhdHVzUGFuZWxDb21wb25lbnQuYWN0aXZlU25hY2tCYXJSZWYgPSByZWY7XG5cbiAgICAgICAgcmVmLmFmdGVyRGlzbWlzc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChGaWxlU3RhdHVzUGFuZWxDb21wb25lbnQuYWN0aXZlU25hY2tCYXJSZWYgPT09IHJlZikge1xuICAgICAgICAgICAgICAgIEZpbGVTdGF0dXNQYW5lbENvbXBvbmVudC5hY3RpdmVTbmFja0JhclJlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5fb3BlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAodGhpcy5fcGVuZGluZ09wZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wZW5kaW5nT3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIFJlLW9wZW4gd2l0aCBjdXJyZW50IGRhdGEgKHJlcXVlc3RlZCB2aWEgc2V0dGVyIHdoaWxlIG9wZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuSWZSZXF1ZXN0ZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNtaXNzSWZPcGVuKCk6IHZvaWQge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5fc25hY2tSZWY/LmRpc21pc3MoKTtcbiAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB0aGlzLl9vcGVuZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZVBhbmVsRGF0YShkYXRhOiBQZXBTbmFja0JhckRhdGEgfCB1bmRlZmluZWQpOiBQZXBTbmFja0JhckRhdGEge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gQXJyYXkuaXNBcnJheSgoZGF0YSBhcyBhbnkpPy5jb250ZW50KSA/IFsgLi4uKChkYXRhIGFzIGFueSkuY29udGVudCBhcyBGaWxlU3RhdHVzW10pIF0gOiBbXTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uKGRhdGEgYXMgYW55KSxcbiAgICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgIH0gYXMgUGVwU25hY2tCYXJEYXRhO1xuICAgIH1cbn0iLCI8cGVwLXNuYWNrLWJhciAqbmdJZj1cInNob3VsZFJlbmRlcklubGluZVwiIGNsYXNzPVwidXBsb2FkLXBhbmVsLWNvbnRuYWluZXJcIiBbc25hY2tCYXJSZWZdPVwic25hY2tCYXJSZWZJbnB1dFwiIFt0aXRsZV09XCJkYXRhPy50aXRsZSB8fCAnJ1wiIChjbG9zZUNsaWNrKT1cIm9uQ2xvc2VDbGlja2VkKCRldmVudClcIiA+XG4gICAgPGRpdiBwZXAtc25hY2stYmFyLWNvbnRlbnQgY2xhc3M9XCJwYW5lbC1jb250ZW50XCI+XG4gICAgICAgIDx1bCAqbmdJZj1cInZpc2libGVDb250ZW50Lmxlbmd0aFwiPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBmaWxlIG9mIHZpc2libGVDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb2xvci1kaW1tZWQgYm9keS1zbSBlbGxpcHNpc1wiPnt7ZmlsZS5uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHBlcC1pY29uIGNsYXNzPVwicGVwLXNwYWNpbmctZWxlbWVudFwiIG5hbWU9XCJhcnJvd19yaWdodF9hbHRcIj48L3BlcC1pY29uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYm9keS1zbVwiIHRpdGxlPVwie3tmaWxlLnN0YXR1c01lc3NhZ2V9fVwiPnt7ZmlsZS5zdGF0dXN9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG48L3BlcC1zbmFjay1iYXI+Il19
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@pepperi-addons/ngx-lib/button";
|
|
5
|
+
import * as i3 from "@pepperi-addons/ngx-lib/checkbox";
|
|
6
|
+
import * as i4 from "@pepperi-addons/ngx-lib/query-builder";
|
|
7
|
+
import * as i5 from "@pepperi-addons/ngx-composite-lib/show-if-badge";
|
|
8
|
+
import * as i6 from "@pepperi-addons/ngx-lib/textbox";
|
|
9
|
+
import * as i7 from "@ngx-translate/core";
|
|
10
|
+
export class FlowFieldComponent {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.field = { key: '', title: '' };
|
|
13
|
+
this.disableIfParams = [];
|
|
14
|
+
this.usedSingleUseLogicBlockRefs = new Set();
|
|
15
|
+
this.disableDuplicate = false;
|
|
16
|
+
this.deleteBlockClicked = new EventEmitter();
|
|
17
|
+
this.editBlockClicked = new EventEmitter();
|
|
18
|
+
this.duplicateBlockClicked = new EventEmitter();
|
|
19
|
+
this.fieldChanged = new EventEmitter();
|
|
20
|
+
this.showDisabledFilterBuilder = false;
|
|
21
|
+
this.data = {
|
|
22
|
+
query: null,
|
|
23
|
+
fields: [],
|
|
24
|
+
isValid: true,
|
|
25
|
+
outputData: { query: null }
|
|
26
|
+
};
|
|
27
|
+
//
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.setDisableCondition();
|
|
31
|
+
}
|
|
32
|
+
get block() {
|
|
33
|
+
return this.field?.draggableItemData ?? { Name: '', Disabled: false };
|
|
34
|
+
}
|
|
35
|
+
onDeleteBlock(event) {
|
|
36
|
+
this.deleteBlockClicked.emit(this.field);
|
|
37
|
+
}
|
|
38
|
+
onDuplicateBlock(event) {
|
|
39
|
+
this.duplicateBlockClicked.emit(this.field);
|
|
40
|
+
}
|
|
41
|
+
onEditBlock(event) {
|
|
42
|
+
this.editBlockClicked.emit(this.field);
|
|
43
|
+
}
|
|
44
|
+
setDisableCondition() {
|
|
45
|
+
this.data.fields = this.getDisableIfFields();
|
|
46
|
+
const query = this.block?.DisabledConditionFilter || null;
|
|
47
|
+
this.data.outputData.query = query;
|
|
48
|
+
if (query) {
|
|
49
|
+
this.data.query = query;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
showFilterCondition() {
|
|
53
|
+
this.showDisabledFilterBuilder = !this.showDisabledFilterBuilder;
|
|
54
|
+
}
|
|
55
|
+
onDisableChange(event) {
|
|
56
|
+
if (!event) {
|
|
57
|
+
delete this.block.DisabledConditionFilter;
|
|
58
|
+
this.showDisabledFilterBuilder = false;
|
|
59
|
+
this.fieldChanged.emit(this.field);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
onQueryChange(event) {
|
|
63
|
+
this.data.outputData.query = this.block.DisabledConditionFilter = (event || null);
|
|
64
|
+
this.fieldChanged.emit(this.field);
|
|
65
|
+
}
|
|
66
|
+
onNameChange(value) {
|
|
67
|
+
this.block.Name = value;
|
|
68
|
+
this.fieldChanged.emit(this.field);
|
|
69
|
+
}
|
|
70
|
+
getDisableIfFields() {
|
|
71
|
+
return (this.disableIfParams ?? []).map((param) => {
|
|
72
|
+
return {
|
|
73
|
+
FieldID: param.Name,
|
|
74
|
+
Title: param.Name,
|
|
75
|
+
FieldType: param.Type ?? 'String'
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
ngOnChanges(changes) {
|
|
80
|
+
if (this.block && this.usedSingleUseLogicBlockRefs) {
|
|
81
|
+
const { AddonUUID, Name } = this.block.Relation || {};
|
|
82
|
+
const refKey = `${AddonUUID}|${Name}`;
|
|
83
|
+
this.disableDuplicate = this.usedSingleUseLogicBlockRefs.has(refKey);
|
|
84
|
+
}
|
|
85
|
+
if (changes['field']) {
|
|
86
|
+
this.setDisableCondition();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
FlowFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlowFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
91
|
+
FlowFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FlowFieldComponent, selector: "pep-generic-fields-flow-field", inputs: { field: "field", disableIfParams: "disableIfParams", usedSingleUseLogicBlockRefs: "usedSingleUseLogicBlockRefs" }, outputs: { deleteBlockClicked: "deleteBlockClicked", editBlockClicked: "editBlockClicked", duplicateBlockClicked: "duplicateBlockClicked", fieldChanged: "fieldChanged" }, usesOnChanges: true, ngImport: i0, template: "<pep-show-if-badge [showIf]=\"!!data.outputData.query && block.Disabled\" [iconName]=\"'system_filter_2'\"></pep-show-if-badge>\n<div class=\"block-wrapper\">\n <pep-textbox [label]=\"'GENERIC_FIELDS_BUILDER.CHOSEN_BLOCK_NAME' | translate\" [(value)]=\"block.Name\" [class]=\"'pep-field-no-spacing'\" (valueChange)=\"onNameChange($event)\"></pep-textbox>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_edit\" [title]=\"'GENERIC_FIELDS_BUILDER.EDIT' | translate\" (buttonClick)=\"onEditBlock($event)\"></pep-button>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_copy\" [title]=\"'GENERIC_FIELDS_BUILDER.DUPLICATE' | translate\" (buttonClick)=\"onDuplicateBlock($event)\" [disabled]=\"disableDuplicate\"></pep-button>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_bin\" [title]=\"'GENERIC_FIELDS_BUILDER.DELETE' | translate\" (buttonClick)=\"onDeleteBlock($event)\"></pep-button>\n</div>\n<div class=\"disableFilterCont\">\n <div class=\"disableCondition\">\n <pep-checkbox\n [(value)]=\"block.Disabled\"\n [label]=\"'GENERIC_FIELDS_BUILDER.CHOSEN_BLOCK_DISABLED' | translate\"\n [class]=\"'checkbox-no-background'\"\n type=\"checkbox\"\n [renderTitle]=\"false\"\n (valueChange)=\"onDisableChange($event)\">\n </pep-checkbox>\n <pep-button\n sizeType=\"sm\"\n [disabled]=\"!block.Disabled\"\n [iconName]=\"(!showDisabledFilterBuilder ? 'arrow_down' : 'arrow_up')\"\n (buttonClick)=\"showFilterCondition()\">\n </pep-button>\n </div>\n <pep-query-builder [ngStyle]=\"{'display': showDisabledFilterBuilder ? 'block' : 'none'}\" \n [query]=\"data.query\" \n [fields]=\"data.fields\" \n (queryChange)=\"onQueryChange($event)\"\n (formValidationChange)=\"data.isValid=$event\">\n </pep-query-builder> \n</div>\n", styles: [":host{padding-inline:1rem;display:block}::ng-deep .show-if-badge{left:var(--pep-spacing-lg, 1rem);top:-.25rem}.disableFilterCont{padding:var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem);border-radius:var(--pep-border-radius-md, .25rem);margin-bottom:var(--pep-spacing-md, .75rem);box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}.disableFilterCont .disableCondition{display:flex;justify-content:space-between;align-items:center}.disableFilterCont pep-query-builder{margin-top:var(--pep-spacing-xs, .25rem);display:block}.block-wrapper{display:grid;width:100%;grid-template-columns:1fr auto auto auto;gap:var(--pep-spacing-sm, .5rem);padding-top:var(--pep-spacing-sm, .5rem);margin-bottom:var(--pep-spacing-sm, .5rem)}.block-wrapper pep-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}mat-expansion-panel{padding-inline:0;background:transparent!important;box-shadow:unset!important;padding-bottom:var(--pep-spacing-sm, .5rem)}mat-expansion-panel .mat-expansion-panel-header{display:grid!important;grid-template-columns:auto 1fr;padding:0}mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{color:hsl(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%))!important}mat-expansion-panel .mat-expansion-panel-header ::ng-deep .mat-expansion-indicator{display:flex;width:fit-content}mat-expansion-panel .mat-expansion-panel-header ::ng-deep .mat-expansion-indicator:after{color:hsl(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%))!important}mat-expansion-panel .mat-expansion-panel-header:hover{background:unset!important}mat-expansion-panel ::ng-deep .mat-expansion-panel-body{padding:0;display:flex;flex-direction:column;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border-radius:var(--pep-border-radius-md, .25rem)}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .expansion-content{width:100%;display:flex;flex-direction:row;place-content:space-between;padding:var(--pep-spacing-sm, .5rem)}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .expansion-content pep-checkbox{display:block}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .query-section-container{border:unset;box-shadow:unset}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.PepButtonComponent, selector: "pep-button", inputs: ["key", "value", "styleType", "styleStateType", "sizeType", "classNames", "disabled", "iconName", "iconPosition", "visible"], outputs: ["buttonClick"] }, { kind: "component", type: i3.PepCheckboxComponent, selector: "pep-checkbox", inputs: ["key", "value", "label", "id", "type", "mandatory", "disabled", "readonly", "xAlignment", "rowSpan", "additionalValue", "form", "isActive", "showTitle", "renderTitle", "layoutType", "visible"], outputs: ["valueChange", "validationChange"] }, { kind: "component", type: i4.PepQueryBuilderComponent, selector: "pep-query-builder", inputs: ["query", "fields", "variableFields", "maxDepth"], outputs: ["queryChange", "formValidationChange"] }, { kind: "component", type: i5.ShowIfBadgeComponent, selector: "pep-show-if-badge", inputs: ["showIf", "iconName", "backgroundColor"] }, { kind: "component", type: i6.PepTextboxComponent, selector: "pep-textbox", inputs: ["key", "value", "minFractionDigits", "maxFractionDigits", "accessory", "label", "placeholder", "type", "mandatory", "disabled", "readonly", "maxFieldCharacters", "hint", "textColor", "xAlignment", "rowSpan", "minValue", "maxValue", "visible", "form", "isActive", "showTitle", "renderTitle", "renderError", "renderSymbol", "layoutType", "parentFieldKey", "regex", "regexError", "isInFocus"], outputs: ["valueChange", "keyup", "validationChange"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
|
92
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FlowFieldComponent, decorators: [{
|
|
93
|
+
type: Component,
|
|
94
|
+
args: [{ selector: 'pep-generic-fields-flow-field', template: "<pep-show-if-badge [showIf]=\"!!data.outputData.query && block.Disabled\" [iconName]=\"'system_filter_2'\"></pep-show-if-badge>\n<div class=\"block-wrapper\">\n <pep-textbox [label]=\"'GENERIC_FIELDS_BUILDER.CHOSEN_BLOCK_NAME' | translate\" [(value)]=\"block.Name\" [class]=\"'pep-field-no-spacing'\" (valueChange)=\"onNameChange($event)\"></pep-textbox>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_edit\" [title]=\"'GENERIC_FIELDS_BUILDER.EDIT' | translate\" (buttonClick)=\"onEditBlock($event)\"></pep-button>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_copy\" [title]=\"'GENERIC_FIELDS_BUILDER.DUPLICATE' | translate\" (buttonClick)=\"onDuplicateBlock($event)\" [disabled]=\"disableDuplicate\"></pep-button>\n <pep-button styleType=\"weak\" sizeType=\"md\" iconPosition=\"end\" iconName=\"system_bin\" [title]=\"'GENERIC_FIELDS_BUILDER.DELETE' | translate\" (buttonClick)=\"onDeleteBlock($event)\"></pep-button>\n</div>\n<div class=\"disableFilterCont\">\n <div class=\"disableCondition\">\n <pep-checkbox\n [(value)]=\"block.Disabled\"\n [label]=\"'GENERIC_FIELDS_BUILDER.CHOSEN_BLOCK_DISABLED' | translate\"\n [class]=\"'checkbox-no-background'\"\n type=\"checkbox\"\n [renderTitle]=\"false\"\n (valueChange)=\"onDisableChange($event)\">\n </pep-checkbox>\n <pep-button\n sizeType=\"sm\"\n [disabled]=\"!block.Disabled\"\n [iconName]=\"(!showDisabledFilterBuilder ? 'arrow_down' : 'arrow_up')\"\n (buttonClick)=\"showFilterCondition()\">\n </pep-button>\n </div>\n <pep-query-builder [ngStyle]=\"{'display': showDisabledFilterBuilder ? 'block' : 'none'}\" \n [query]=\"data.query\" \n [fields]=\"data.fields\" \n (queryChange)=\"onQueryChange($event)\"\n (formValidationChange)=\"data.isValid=$event\">\n </pep-query-builder> \n</div>\n", styles: [":host{padding-inline:1rem;display:block}::ng-deep .show-if-badge{left:var(--pep-spacing-lg, 1rem);top:-.25rem}.disableFilterCont{padding:var(--pep-spacing-xs, .25rem) var(--pep-spacing-sm, .5rem);border-radius:var(--pep-border-radius-md, .25rem);margin-bottom:var(--pep-spacing-md, .75rem);box-shadow:var(--pep-shadow-sm-offset, 0 .25rem .5rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.24)}.disableFilterCont .disableCondition{display:flex;justify-content:space-between;align-items:center}.disableFilterCont pep-query-builder{margin-top:var(--pep-spacing-xs, .25rem);display:block}.block-wrapper{display:grid;width:100%;grid-template-columns:1fr auto auto auto;gap:var(--pep-spacing-sm, .5rem);padding-top:var(--pep-spacing-sm, .5rem);margin-bottom:var(--pep-spacing-sm, .5rem)}.block-wrapper pep-button{margin-top:var(--pep-form-field-title-height, 1.5rem)}mat-expansion-panel{padding-inline:0;background:transparent!important;box-shadow:unset!important;padding-bottom:var(--pep-spacing-sm, .5rem)}mat-expansion-panel .mat-expansion-panel-header{display:grid!important;grid-template-columns:auto 1fr;padding:0}mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{color:hsl(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%))!important}mat-expansion-panel .mat-expansion-panel-header ::ng-deep .mat-expansion-indicator{display:flex;width:fit-content}mat-expansion-panel .mat-expansion-panel-header ::ng-deep .mat-expansion-indicator:after{color:hsl(var(--pep-color-text-link-h, 207),var(--pep-color-text-link-s, 76%),var(--pep-color-text-link-l, 37%))!important}mat-expansion-panel .mat-expansion-panel-header:hover{background:unset!important}mat-expansion-panel ::ng-deep .mat-expansion-panel-body{padding:0;display:flex;flex-direction:column;background:hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),98%);box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.08);border:1px solid hsl(var(--pep-color-regular-h, 0),var(--pep-color-regular-s, 0%),calc(var(--pep-color-regular-l, 10%) + 30%));box-shadow:var(--pep-shadow-xs-offset, 0 .125rem .25rem 0) hsla(var(--pep-color-system-primary-h, 0),var(--pep-color-system-primary-s, 0%),var(--pep-color-system-primary-l, 10%),.16);border-radius:var(--pep-border-radius-md, .25rem)}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .expansion-content{width:100%;display:flex;flex-direction:row;place-content:space-between;padding:var(--pep-spacing-sm, .5rem)}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .expansion-content pep-checkbox{display:block}mat-expansion-panel ::ng-deep .mat-expansion-panel-body .query-section-container{border:unset;box-shadow:unset}\n"] }]
|
|
95
|
+
}], ctorParameters: function () { return []; }, propDecorators: { field: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], disableIfParams: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], usedSingleUseLogicBlockRefs: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], deleteBlockClicked: [{
|
|
102
|
+
type: Output
|
|
103
|
+
}], editBlockClicked: [{
|
|
104
|
+
type: Output
|
|
105
|
+
}], duplicateBlockClicked: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], fieldChanged: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWZpZWxkcy1idWlsZGVyL2Zsb3ctZmllbGQvZmxvdy1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY29tcG9zaXRlLWxpYi9nZW5lcmljLWZpZWxkcy1idWlsZGVyL2Zsb3ctZmllbGQvZmxvdy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQXlCekcsTUFBTSxPQUFPLGtCQUFrQjtJQTBCM0I7UUF6QlMsVUFBSyxHQUFxQixFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ2pELG9CQUFlLEdBQWdCLEVBQUUsQ0FBQztRQUNsQyxnQ0FBMkIsR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV0RSxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFFZix1QkFBa0IsR0FBbUMsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDMUYscUJBQWdCLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ3hGLDBCQUFxQixHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUU3RixpQkFBWSxHQUFtQyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQUV2Riw4QkFBeUIsR0FBRyxLQUFLLENBQUM7UUFDbEMsU0FBSSxHQUtQO1lBQ0EsS0FBSyxFQUFFLElBQW1EO1lBQzFELE1BQU0sRUFBRSxFQUFFO1lBQ1YsT0FBTyxFQUFFLElBQUk7WUFDYixVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1NBQzlCLENBQUM7UUFHRSxFQUFF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SUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN4RTtRQUVELElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1NBQzlCO0lBQ0wsQ0FBQzs7K0dBdEdRLGtCQUFrQjttR0FBbEIsa0JBQWtCLGlZQ3pCL0IsaWlFQStCQTsyRkROYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksK0JBQStCOzBFQUtoQyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBSUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBlcEJ1dHRvbkNsaWNrRXZlbnQgfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvbmd4LWxpYi9idXR0b24nO1xuaW1wb3J0IHsgSVBlcFF1ZXJ5QnVpbGRlckZpZWxkLCBJUGVwUXVlcnlJdGVtLCBJUGVwUXVlcnlTZWN0aW9uIH0gZnJvbSAnQHBlcHBlcmktYWRkb25zL25neC1saWIvcXVlcnktYnVpbGRlcic7XG5pbXBvcnQgeyBGbG93UGFyYW0gfSBmcm9tICdAcGVwcGVyaS1hZGRvbnMvcGFwaS1zZGsnO1xuXG5pbXBvcnQgeyBJUGVwR2VuZXJpY0ZpZWxkIH0gZnJvbSAnLi4vZ2VuZXJpYy1maWVsZHMtYnVpbGRlci5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdlbmVyaWNGbG93UmVsYXRpb24ge1xuICAgIEFkZG9uVVVJRD86IHN0cmluZztcbiAgICBOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElHZW5lcmljRmxvd0xvZ2ljQmxvY2sge1xuICAgIE5hbWU6IHN0cmluZztcbiAgICBEaXNhYmxlZDogYm9vbGVhbjtcbiAgICBEaXNhYmxlZENvbmRpdGlvbkZpbHRlcj86IElQZXBRdWVyeVNlY3Rpb24gfCBJUGVwUXVlcnlJdGVtO1xuICAgIENvbmZpZ3VyYXRpb24/OiBzdHJpbmc7XG4gICAgUmVsYXRpb24/OiBJR2VuZXJpY0Zsb3dSZWxhdGlvbjtcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwZXAtZ2VuZXJpYy1maWVsZHMtZmxvdy1maWVsZCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zsb3ctZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zsb3ctZmllbGQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGbG93RmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgZmllbGQ6IElQZXBHZW5lcmljRmllbGQgPSB7IGtleTogJycsIHRpdGxlOiAnJyB9O1xuICAgIEBJbnB1dCgpIGRpc2FibGVJZlBhcmFtczogRmxvd1BhcmFtW10gPSBbXTtcbiAgICBASW5wdXQoKSB1c2VkU2luZ2xlVXNlTG9naWNCbG9ja1JlZnM6IFNldDxzdHJpbmc+ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBkaXNhYmxlRHVwbGljYXRlID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgZGVsZXRlQmxvY2tDbGlja2VkOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRmllbGQ+KCk7XG4gICAgQE91dHB1dCgpIGVkaXRCbG9ja0NsaWNrZWQ6IEV2ZW50RW1pdHRlcjxJUGVwR2VuZXJpY0ZpZWxkPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZD4oKTtcbiAgICBAT3V0cHV0KCkgZHVwbGljYXRlQmxvY2tDbGlja2VkOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRmllbGQ+KCk7XG5cbiAgICBAT3V0cHV0KCkgZmllbGRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8SVBlcEdlbmVyaWNGaWVsZD4gPSBuZXcgRXZlbnRFbWl0dGVyPElQZXBHZW5lcmljRmllbGQ+KCk7XG5cbiAgICBwdWJsaWMgc2hvd0Rpc2FibGVkRmlsdGVyQnVpbGRlciA9IGZhbHNlO1xuICAgIHB1YmxpYyBkYXRhOiB7XG4gICAgICAgIHF1ZXJ5OiBJUGVwUXVlcnlTZWN0aW9uIHwgSVBlcFF1ZXJ5SXRlbTtcbiAgICAgICAgZmllbGRzOiBJUGVwUXVlcnlCdWlsZGVyRmllbGRbXTtcbiAgICAgICAgaXNWYWxpZDogYm9vbGVhbjtcbiAgICAgICAgb3V0cHV0RGF0YTogeyBxdWVyeTogSVBlcFF1ZXJ5U2VjdGlvbiB8IElQZXBRdWVyeUl0ZW0gfCBudWxsIH07XG4gICAgfSA9IHtcbiAgICAgICAgcXVlcnk6IG51bGwgYXMgdW5rbm93biBhcyBJUGVwUXVlcnlTZWN0aW9uIHwgSVBlcFF1ZXJ5SXRlbSxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgICAgaXNWYWxpZDogdHJ1ZSxcbiAgICAgICAgb3V0cHV0RGF0YTogeyBxdWVyeTogbnVsbCB9XG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvL1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldERpc2FibGVDb25kaXRpb24oKTtcbiAgICB9XG5cbiAgICBnZXQgYmxvY2soKTogSUdlbmVyaWNGbG93TG9naWNCbG9jayB7XG4gICAgICAgIHJldHVybiAodGhpcy5maWVsZD8uZHJhZ2dhYmxlSXRlbURhdGEgYXMgdW5rbm93biBhcyBJR2VuZXJpY0Zsb3dMb2dpY0Jsb2NrKSA/PyB7IE5hbWU6ICcnLCBEaXNhYmxlZDogZmFsc2UgfTtcbiAgICB9XG5cbiAgICBvbkRlbGV0ZUJsb2NrKGV2ZW50OiBJUGVwQnV0dG9uQ2xpY2tFdmVudCkge1xuICAgICAgICB0aGlzLmRlbGV0ZUJsb2NrQ2xpY2tlZC5lbWl0KHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIG9uRHVwbGljYXRlQmxvY2soZXZlbnQ6IElQZXBCdXR0b25DbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZHVwbGljYXRlQmxvY2tDbGlja2VkLmVtaXQodGhpcy5maWVsZCk7XG4gICAgfVxuXG4gICAgb25FZGl0QmxvY2soZXZlbnQ6IElQZXBCdXR0b25DbGlja0V2ZW50KSB7XG4gICAgICAgIHRoaXMuZWRpdEJsb2NrQ2xpY2tlZC5lbWl0KHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIHNldERpc2FibGVDb25kaXRpb24oKSB7XG4gICAgICAgIHRoaXMuZGF0YS5maWVsZHMgPSB0aGlzLmdldERpc2FibGVJZkZpZWxkcygpO1xuXG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gdGhpcy5ibG9jaz8uRGlzYWJsZWRDb25kaXRpb25GaWx0ZXIgfHwgbnVsbDtcbiAgICAgICAgdGhpcy5kYXRhLm91dHB1dERhdGEucXVlcnkgPSBxdWVyeTtcbiAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgICB0aGlzLmRhdGEucXVlcnkgPSBxdWVyeTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dGaWx0ZXJDb25kaXRpb24oKSB7XG4gICAgICAgIHRoaXMuc2hvd0Rpc2FibGVkRmlsdGVyQnVpbGRlciA9ICF0aGlzLnNob3dEaXNhYmxlZEZpbHRlckJ1aWxkZXI7XG4gICAgfVxuXG4gICAgb25EaXNhYmxlQ2hhbmdlKGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghZXZlbnQpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmJsb2NrLkRpc2FibGVkQ29uZGl0aW9uRmlsdGVyO1xuICAgICAgICAgICAgdGhpcy5zaG93RGlzYWJsZWRGaWx0ZXJCdWlsZGVyID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmZpZWxkQ2hhbmdlZC5lbWl0KHRoaXMuZmllbGQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25RdWVyeUNoYW5nZShldmVudDogSVBlcFF1ZXJ5U2VjdGlvbiB8IElQZXBRdWVyeUl0ZW0pIHtcbiAgICAgICAgdGhpcy5kYXRhLm91dHB1dERhdGEucXVlcnkgPSB0aGlzLmJsb2NrLkRpc2FibGVkQ29uZGl0aW9uRmlsdGVyID0gKGV2ZW50IHx8IG51bGwpO1xuICAgICAgICB0aGlzLmZpZWxkQ2hhbmdlZC5lbWl0KHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIG9uTmFtZUNoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYmxvY2suTmFtZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLmZpZWxkQ2hhbmdlZC5lbWl0KHRoaXMuZmllbGQpO1xuICAgIH1cblxuICAgIGdldERpc2FibGVJZkZpZWxkcygpOiBJUGVwUXVlcnlCdWlsZGVyRmllbGRbXSB7XG4gICAgICAgIHJldHVybiAodGhpcy5kaXNhYmxlSWZQYXJhbXMgPz8gW10pLm1hcCgocGFyYW0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgRmllbGRJRDogcGFyYW0uTmFtZSxcbiAgICAgICAgICAgICAgICBUaXRsZTogcGFyYW0uTmFtZSxcbiAgICAgICAgICAgICAgICBGaWVsZFR5cGU6IChwYXJhbSBhcyB7IFR5cGU/OiBzdHJpbmcgfSkuVHlwZSA/PyAnU3RyaW5nJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5ibG9jayAmJiB0aGlzLnVzZWRTaW5nbGVVc2VMb2dpY0Jsb2NrUmVmcykge1xuICAgICAgICAgICAgY29uc3QgeyBBZGRvblVVSUQsIE5hbWUgfSA9ICh0aGlzLmJsb2NrLlJlbGF0aW9uIGFzIGFueSkgfHwge307XG4gICAgICAgICAgICBjb25zdCByZWZLZXkgPSBgJHtBZGRvblVVSUR9fCR7TmFtZX1gO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlRHVwbGljYXRlID0gdGhpcy51c2VkU2luZ2xlVXNlTG9naWNCbG9ja1JlZnMuaGFzKHJlZktleSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY2hhbmdlc1snZmllbGQnXSkge1xuICAgICAgICAgICAgdGhpcy5zZXREaXNhYmxlQ29uZGl0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8cGVwLXNob3ctaWYtYmFkZ2UgW3Nob3dJZl09XCIhIWRhdGEub3V0cHV0RGF0YS5xdWVyeSAmJiBibG9jay5EaXNhYmxlZFwiIFtpY29uTmFtZV09XCInc3lzdGVtX2ZpbHRlcl8yJ1wiPjwvcGVwLXNob3ctaWYtYmFkZ2U+XG48ZGl2IGNsYXNzPVwiYmxvY2std3JhcHBlclwiPlxuICAgIDxwZXAtdGV4dGJveCBbbGFiZWxdPVwiJ0dFTkVSSUNfRklFTERTX0JVSUxERVIuQ0hPU0VOX0JMT0NLX05BTUUnIHwgdHJhbnNsYXRlXCIgWyh2YWx1ZSldPVwiYmxvY2suTmFtZVwiIFtjbGFzc109XCIncGVwLWZpZWxkLW5vLXNwYWNpbmcnXCIgKHZhbHVlQ2hhbmdlKT1cIm9uTmFtZUNoYW5nZSgkZXZlbnQpXCI+PC9wZXAtdGV4dGJveD5cbiAgICA8cGVwLWJ1dHRvbiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc2l6ZVR5cGU9XCJtZFwiIGljb25Qb3NpdGlvbj1cImVuZFwiIGljb25OYW1lPVwic3lzdGVtX2VkaXRcIiBbdGl0bGVdPVwiJ0dFTkVSSUNfRklFTERTX0JVSUxERVIuRURJVCcgfCB0cmFuc2xhdGVcIiAoYnV0dG9uQ2xpY2spPVwib25FZGl0QmxvY2soJGV2ZW50KVwiPjwvcGVwLWJ1dHRvbj5cbiAgICA8cGVwLWJ1dHRvbiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc2l6ZVR5cGU9XCJtZFwiIGljb25Qb3NpdGlvbj1cImVuZFwiIGljb25OYW1lPVwic3lzdGVtX2NvcHlcIiBbdGl0bGVdPVwiJ0dFTkVSSUNfRklFTERTX0JVSUxERVIuRFVQTElDQVRFJyB8IHRyYW5zbGF0ZVwiIChidXR0b25DbGljayk9XCJvbkR1cGxpY2F0ZUJsb2NrKCRldmVudClcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZUR1cGxpY2F0ZVwiPjwvcGVwLWJ1dHRvbj5cbiAgICA8cGVwLWJ1dHRvbiBzdHlsZVR5cGU9XCJ3ZWFrXCIgc2l6ZVR5cGU9XCJtZFwiIGljb25Qb3NpdGlvbj1cImVuZFwiIGljb25OYW1lPVwic3lzdGVtX2JpblwiIFt0aXRsZV09XCInR0VORVJJQ19GSUVMRFNfQlVJTERFUi5ERUxFVEUnIHwgdHJhbnNsYXRlXCIgKGJ1dHRvbkNsaWNrKT1cIm9uRGVsZXRlQmxvY2soJGV2ZW50KVwiPjwvcGVwLWJ1dHRvbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImRpc2FibGVGaWx0ZXJDb250XCI+XG4gICAgPGRpdiBjbGFzcz1cImRpc2FibGVDb25kaXRpb25cIj5cbiAgICAgICAgPHBlcC1jaGVja2JveFxuICAgICAgICAgICAgWyh2YWx1ZSldPVwiYmxvY2suRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidHRU5FUklDX0ZJRUxEU19CVUlMREVSLkNIT1NFTl9CTE9DS19ESVNBQkxFRCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2NsYXNzXT1cIidjaGVja2JveC1uby1iYWNrZ3JvdW5kJ1wiXG4gICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgW3JlbmRlclRpdGxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJvbkRpc2FibGVDaGFuZ2UoJGV2ZW50KVwiPlxuICAgICAgICA8L3BlcC1jaGVja2JveD5cbiAgICAgICAgPHBlcC1idXR0b25cbiAgICAgICAgICAgIHNpemVUeXBlPVwic21cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFibG9jay5EaXNhYmxlZFwiXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiKCFzaG93RGlzYWJsZWRGaWx0ZXJCdWlsZGVyID8gJ2Fycm93X2Rvd24nIDogJ2Fycm93X3VwJylcIlxuICAgICAgICAgICAgKGJ1dHRvbkNsaWNrKT1cInNob3dGaWx0ZXJDb25kaXRpb24oKVwiPlxuICAgICAgICA8L3BlcC1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPHBlcC1xdWVyeS1idWlsZGVyIFtuZ1N0eWxlXT1cInsnZGlzcGxheSc6IHNob3dEaXNhYmxlZEZpbHRlckJ1aWxkZXIgPyAnYmxvY2snIDogJ25vbmUnfVwiIFxuICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnldPVwiZGF0YS5xdWVyeVwiIFxuICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRzXT1cImRhdGEuZmllbGRzXCIgXG4gICAgICAgICAgICAgICAgICAgICAgIChxdWVyeUNoYW5nZSk9XCJvblF1ZXJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAoZm9ybVZhbGlkYXRpb25DaGFuZ2UpPVwiZGF0YS5pc1ZhbGlkPSRldmVudFwiPlxuICAgIDwvcGVwLXF1ZXJ5LWJ1aWxkZXI+IFxuPC9kaXY+XG4iXX0=
|