@valtimo/process-link 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -0
- package/esm2022/lib/components/choose-process-link-type/choose-process-link-type.component.mjs +38 -0
- package/esm2022/lib/components/choose-process-link-type/index.mjs +17 -0
- package/esm2022/lib/components/form-flow/form-flow.component.mjs +117 -0
- package/esm2022/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.mjs +107 -0
- package/esm2022/lib/components/form-flow-configuration-container/index.mjs +17 -0
- package/esm2022/lib/components/form-link-process-diagram/form-link-process-diagram.component.mjs +150 -0
- package/esm2022/lib/components/plugin-action-configuration/plugin-action-configuration.component.mjs +126 -0
- package/esm2022/lib/components/process-link/process-link.component.mjs +69 -0
- package/esm2022/lib/components/process-link-modal/process-link-modal.component.mjs +79 -0
- package/esm2022/lib/components/select-form/index.mjs +17 -0
- package/esm2022/lib/components/select-form/select-form.component.mjs +121 -0
- package/esm2022/lib/components/select-form-flow/index.mjs +17 -0
- package/esm2022/lib/components/select-form-flow/select-form-flow.component.mjs +120 -0
- package/esm2022/lib/components/select-plugin-action/select-plugin-action.component.mjs +75 -0
- package/esm2022/lib/components/select-plugin-configuration/select-plugin-configuration.component.mjs +75 -0
- package/esm2022/lib/constants/index.mjs +17 -0
- package/esm2022/lib/constants/injection-tokens.mjs +19 -0
- package/esm2022/lib/models/form-flow.model.mjs +17 -0
- package/esm2022/lib/models/form-link.model.mjs +17 -0
- package/esm2022/lib/models/index.mjs +19 -0
- package/esm2022/lib/models/process-link.model.mjs +17 -0
- package/esm2022/lib/process-link-routing.module.mjs +44 -0
- package/esm2022/lib/process-link.module.mjs +169 -0
- package/esm2022/lib/services/form-flow-component.service.mjs +44 -0
- package/esm2022/lib/services/form-flow.service.mjs +53 -0
- package/esm2022/lib/services/index.mjs +23 -0
- package/esm2022/lib/services/plugin-state.service.mjs +90 -0
- package/esm2022/lib/services/process-link-button.service.mjs +106 -0
- package/esm2022/lib/services/process-link-state.service.mjs +143 -0
- package/esm2022/lib/services/process-link-step.service.mjs +235 -0
- package/esm2022/lib/services/process-link.service.mjs +89 -0
- package/esm2022/public-api.mjs +31 -0
- package/esm2022/valtimo-process-link.mjs +5 -0
- package/fesm2022/valtimo-process-link.mjs +2119 -0
- package/fesm2022/valtimo-process-link.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts +11 -0
- package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts.map +1 -0
- package/lib/components/choose-process-link-type/index.d.ts +2 -0
- package/lib/components/choose-process-link-type/index.d.ts.map +1 -0
- package/lib/components/form-flow/form-flow.component.d.ts +33 -0
- package/lib/components/form-flow/form-flow.component.d.ts.map +1 -0
- package/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.d.ts +30 -0
- package/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.d.ts.map +1 -0
- package/lib/components/form-flow-configuration-container/index.d.ts +2 -0
- package/lib/components/form-flow-configuration-container/index.d.ts.map +1 -0
- package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts +34 -0
- package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts.map +1 -0
- package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts +33 -0
- package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts.map +1 -0
- package/lib/components/process-link/process-link.component.d.ts +14 -0
- package/lib/components/process-link/process-link.component.d.ts.map +1 -0
- package/lib/components/process-link-modal/process-link-modal.component.d.ts +30 -0
- package/lib/components/process-link-modal/process-link-modal.component.d.ts.map +1 -0
- package/lib/components/select-form/index.d.ts +2 -0
- package/lib/components/select-form/index.d.ts.map +1 -0
- package/lib/components/select-form/select-form.component.d.ts +29 -0
- package/lib/components/select-form/select-form.component.d.ts.map +1 -0
- package/lib/components/select-form-flow/index.d.ts +2 -0
- package/lib/components/select-form-flow/index.d.ts.map +1 -0
- package/lib/components/select-form-flow/select-form-flow.component.d.ts +28 -0
- package/lib/components/select-form-flow/select-form-flow.component.d.ts.map +1 -0
- package/lib/components/select-plugin-action/select-plugin-action.component.d.ts +29 -0
- package/lib/components/select-plugin-action/select-plugin-action.component.d.ts.map +1 -0
- package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts +29 -0
- package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts.map +1 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/injection-tokens.d.ts +5 -0
- package/lib/constants/injection-tokens.d.ts.map +1 -0
- package/lib/models/form-flow.model.d.ts +18 -0
- package/lib/models/form-flow.model.d.ts.map +1 -0
- package/lib/models/form-link.model.d.ts +46 -0
- package/lib/models/form-link.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +4 -0
- package/lib/models/index.d.ts.map +1 -0
- package/lib/models/process-link.model.d.ts +65 -0
- package/lib/models/process-link.model.d.ts.map +1 -0
- package/lib/process-link-routing.module.d.ts +8 -0
- package/lib/process-link-routing.module.d.ts.map +1 -0
- package/lib/process-link.module.d.ts +25 -0
- package/lib/process-link.module.d.ts.map +1 -0
- package/lib/services/form-flow-component.service.d.ts +13 -0
- package/lib/services/form-flow-component.service.d.ts.map +1 -0
- package/lib/services/form-flow.service.d.ts +20 -0
- package/lib/services/form-flow.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +8 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/plugin-state.service.d.ts +29 -0
- package/lib/services/plugin-state.service.d.ts.map +1 -0
- package/lib/services/process-link-button.service.d.ts +37 -0
- package/lib/services/process-link-button.service.d.ts.map +1 -0
- package/lib/services/process-link-state.service.d.ts +48 -0
- package/lib/services/process-link-state.service.d.ts.map +1 -0
- package/lib/services/process-link-step.service.d.ts +41 -0
- package/lib/services/process-link-step.service.d.ts.map +1 -0
- package/lib/services/process-link.service.d.ts +20 -0
- package/lib/services/process-link.service.d.ts.map +1 -0
- package/package.json +26 -0
- package/public-api.d.ts +13 -0
- package/public-api.d.ts.map +1 -0
- package/valtimo-process-link.d.ts.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# ProcessLink
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version
|
|
4
|
+
8.2.14.
|
|
5
|
+
|
|
6
|
+
## Code scaffolding
|
|
7
|
+
|
|
8
|
+
Run `ng generate component component-name --project process-link` to generate a new component. You
|
|
9
|
+
can also use
|
|
10
|
+
`ng generate directive|pipe|service|class|guard|interface|enum|module --project process-link`.
|
|
11
|
+
|
|
12
|
+
> Note: Don't forget to add `--project process-link` or else it will be added to the default project
|
|
13
|
+
> in your `angular.json` file.
|
|
14
|
+
|
|
15
|
+
## Build
|
|
16
|
+
|
|
17
|
+
Run `ng build process-link` to build the project. The build artifacts will be stored in the `dist/`
|
|
18
|
+
directory.
|
|
19
|
+
|
|
20
|
+
## Publishing
|
|
21
|
+
|
|
22
|
+
After building your library with `ng build process-link`, go to the dist folder
|
|
23
|
+
`cd dist/process-link` and run `npm publish`.
|
|
24
|
+
|
|
25
|
+
## Running unit tests
|
|
26
|
+
|
|
27
|
+
Run `ng test process-link` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
28
|
+
|
|
29
|
+
## Further help
|
|
30
|
+
|
|
31
|
+
To get more help on the Angular CLI use `ng help` or go check out the
|
|
32
|
+
[Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
|
package/esm2022/lib/components/choose-process-link-type/choose-process-link-type.component.mjs
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component } from '@angular/core';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "../../services";
|
|
19
|
+
import * as i2 from "@angular/common";
|
|
20
|
+
import * as i3 from "carbon-components-angular";
|
|
21
|
+
import * as i4 from "@valtimo/components";
|
|
22
|
+
import * as i5 from "@ngx-translate/core";
|
|
23
|
+
export class ChooseProcessLinkTypeComponent {
|
|
24
|
+
constructor(processLinkStateService) {
|
|
25
|
+
this.processLinkStateService = processLinkStateService;
|
|
26
|
+
this.availableProcessLinkTypes$ = this.processLinkStateService.availableProcessLinkTypes$;
|
|
27
|
+
}
|
|
28
|
+
selectProcessLinkType(processLinkTypeId) {
|
|
29
|
+
this.processLinkStateService.selectProcessLinkType(processLinkTypeId);
|
|
30
|
+
}
|
|
31
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ChooseProcessLinkTypeComponent, deps: [{ token: i1.ProcessLinkStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: ChooseProcessLinkTypeComponent, selector: "valtimo-choose-process-link-type", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[vTooltip]", inputs: ["vTooltip", "onBottom", "tooltipDisabled"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }] }); }
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ChooseProcessLinkTypeComponent, decorators: [{
|
|
35
|
+
type: Component,
|
|
36
|
+
args: [{ selector: 'valtimo-choose-process-link-type', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<ng-container\n *ngIf=\"{\n availableProcessLinkTypes: availableProcessLinkTypes$ | async\n } as obs\"\n>\n <p class=\"step-description\">\n {{ 'processLinkConfiguration.chooseProcessLinkTypeDescription' | translate }}\n </p>\n <div class=\"process-link-grid\">\n <div\n class=\"process-link-item\"\n *ngFor=\"let availableProcessLinkType of obs.availableProcessLinkTypes\"\n >\n <ng-container *ngIf=\"availableProcessLinkType.processLinkType as processLinkTypeId\">\n <button\n (click)=\"selectProcessLinkType(processLinkTypeId)\"\n cdsButton=\"secondary\"\n size=\"xl\"\n class=\"process-link-type-button\"\n [disabled]=\"!availableProcessLinkType.enabled\"\n [vTooltip]=\"'processLinkTypeDisabledTooltip.' + processLinkTypeId | translate\"\n [onBottom]=\"true\"\n [tooltipDisabled]=\"availableProcessLinkType.enabled\"\n >\n {{ 'processLinkType.' + processLinkTypeId | translate }}\n <svg\n *ngIf=\"processLinkTypeId === 'plugin'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"link\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"receipt\"\n size=\"16\"\n ></svg>\n <svg\n *ngIf=\"processLinkTypeId === 'form-flow'\"\n class=\"cds--btn__icon\"\n cdsIcon=\"flow--data\"\n size=\"16\"\n ></svg>\n </button>\n </ng-container>\n </div>\n </div>\n</ng-container>\n", styles: [".process-link-type-button{width:100%}.process-link-grid{margin-top:24px;display:flex;justify-content:flex-start;width:100%;flex-wrap:wrap;gap:8px}.process-link-item{flex-basis:calc(33.3% - 5.3333333333px)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"] }]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.ProcessLinkStateService }] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQVF4QyxNQUFNLE9BQU8sOEJBQThCO0lBSXpDLFlBQTZCLHVCQUFnRDtRQUFoRCw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBSDdELCtCQUEwQixHQUN4QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsMEJBQTBCLENBQUM7SUFFc0IsQ0FBQztJQUVqRixxQkFBcUIsQ0FBQyxpQkFBeUI7UUFDN0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDeEUsQ0FBQzs4R0FSVSw4QkFBOEI7a0dBQTlCLDhCQUE4Qix3RUN4QjNDLG93RUFnRUE7OzJGRHhDYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0Usa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQcm9jZXNzTGlua1N0YXRlU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWNob29zZS1wcm9jZXNzLWxpbmstdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaG9vc2UtcHJvY2Vzcy1saW5rLXR5cGUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hvb3NlUHJvY2Vzc0xpbmtUeXBlQ29tcG9uZW50IHtcbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkID1cbiAgICB0aGlzLnByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlLmF2YWlsYWJsZVByb2Nlc3NMaW5rVHlwZXMkO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0xpbmtTdGF0ZVNlcnZpY2U6IFByb2Nlc3NMaW5rU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIHNlbGVjdFByb2Nlc3NMaW5rVHlwZShwcm9jZXNzTGlua1R5cGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzTGlua1N0YXRlU2VydmljZS5zZWxlY3RQcm9jZXNzTGlua1R5cGUocHJvY2Vzc0xpbmtUeXBlSWQpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlczogYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlcyQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxwIGNsYXNzPVwic3RlcC1kZXNjcmlwdGlvblwiPlxuICAgIHt7ICdwcm9jZXNzTGlua0NvbmZpZ3VyYXRpb24uY2hvb3NlUHJvY2Vzc0xpbmtUeXBlRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gIDwvcD5cbiAgPGRpdiBjbGFzcz1cInByb2Nlc3MtbGluay1ncmlkXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJwcm9jZXNzLWxpbmstaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlIG9mIG9icy5hdmFpbGFibGVQcm9jZXNzTGlua1R5cGVzXCJcbiAgICA+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXZhaWxhYmxlUHJvY2Vzc0xpbmtUeXBlLnByb2Nlc3NMaW5rVHlwZSBhcyBwcm9jZXNzTGlua1R5cGVJZFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFByb2Nlc3NMaW5rVHlwZShwcm9jZXNzTGlua1R5cGVJZClcIlxuICAgICAgICAgIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiXG4gICAgICAgICAgc2l6ZT1cInhsXCJcbiAgICAgICAgICBjbGFzcz1cInByb2Nlc3MtbGluay10eXBlLWJ1dHRvblwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFhdmFpbGFibGVQcm9jZXNzTGlua1R5cGUuZW5hYmxlZFwiXG4gICAgICAgICAgW3ZUb29sdGlwXT1cIidwcm9jZXNzTGlua1R5cGVEaXNhYmxlZFRvb2x0aXAuJyArIHByb2Nlc3NMaW5rVHlwZUlkIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbb25Cb3R0b21dPVwidHJ1ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCJhdmFpbGFibGVQcm9jZXNzTGlua1R5cGUuZW5hYmxlZFwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAncHJvY2Vzc0xpbmtUeXBlLicgKyBwcm9jZXNzTGlua1R5cGVJZCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICpuZ0lmPVwicHJvY2Vzc0xpbmtUeXBlSWQgPT09ICdwbHVnaW4nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgY2RzSWNvbj1cImxpbmtcIlxuICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICA+PC9zdmc+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJwcm9jZXNzTGlua1R5cGVJZCA9PT0gJ2Zvcm0nXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIlxuICAgICAgICAgICAgY2RzSWNvbj1cInJlY2VpcHRcIlxuICAgICAgICAgICAgc2l6ZT1cIjE2XCJcbiAgICAgICAgICA+PC9zdmc+XG4gICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgKm5nSWY9XCJwcm9jZXNzTGlua1R5cGVJZCA9PT0gJ2Zvcm0tZmxvdydcIlxuICAgICAgICAgICAgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiXG4gICAgICAgICAgICBjZHNJY29uPVwiZmxvdy0tZGF0YVwiXG4gICAgICAgICAgICBzaXplPVwiMTZcIlxuICAgICAgICAgID48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export * from './choose-process-link-type.component';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL2NvbXBvbmVudHMvY2hvb3NlLXByb2Nlc3MtbGluay10eXBlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vY2hvb3NlLXByb2Nlc3MtbGluay10eXBlLmNvbXBvbmVudCc7XG4iXX0=
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject } from 'rxjs';
|
|
18
|
+
import { FormioOptionsImpl, } from '@valtimo/components';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "../../services";
|
|
21
|
+
import * as i2 from "@valtimo/components";
|
|
22
|
+
import * as i3 from "@angular/common";
|
|
23
|
+
import * as i4 from "../form-flow-configuration-container/form-flow-configuration-container.component";
|
|
24
|
+
export class FormFlowComponent {
|
|
25
|
+
constructor(formFlowService, modalService) {
|
|
26
|
+
this.formFlowService = formFlowService;
|
|
27
|
+
this.modalService = modalService;
|
|
28
|
+
this.formIoFormData = new BehaviorSubject(null);
|
|
29
|
+
this.formFlowComplete = new EventEmitter();
|
|
30
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
31
|
+
this.formFlowStepType$ = new BehaviorSubject(null);
|
|
32
|
+
this.FormFlowCustomComponentId$ = new BehaviorSubject('');
|
|
33
|
+
this.formioOptions = new FormioOptionsImpl();
|
|
34
|
+
this.formioOptions.disableAlerts = true;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.getFormFlowStep();
|
|
38
|
+
}
|
|
39
|
+
onChange(event) {
|
|
40
|
+
if (event?.data) {
|
|
41
|
+
this.formIoFormData.next(event.data);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
onSubmit(submission) {
|
|
45
|
+
this.disable();
|
|
46
|
+
if (submission.data) {
|
|
47
|
+
this.formIoFormData.next(submission.data);
|
|
48
|
+
}
|
|
49
|
+
if (submission.data.submit) {
|
|
50
|
+
this.formFlowService
|
|
51
|
+
.submitStep(this.formFlowInstanceId, this.formFlowStepInstanceId, this.formIoFormData.getValue())
|
|
52
|
+
.subscribe((result) => this.handleFormFlowStep(result), errors => {
|
|
53
|
+
this.form?.showErrors(errors);
|
|
54
|
+
this.enable();
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else if (submission.data['back']) {
|
|
58
|
+
this.formFlowService.back(this.formFlowInstanceId, submission.data).subscribe((result) => this.handleFormFlowStep(result), errors => {
|
|
59
|
+
this.form?.showErrors(errors);
|
|
60
|
+
this.enable();
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
saveData() {
|
|
65
|
+
const formIoFormDataValue = this.formIoFormData.getValue();
|
|
66
|
+
if (formIoFormDataValue && this.formFlowInstanceId) {
|
|
67
|
+
this.formFlowService.save(this.formFlowInstanceId, formIoFormDataValue).subscribe(() => null, errors => this.form.showErrors(errors));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getFormFlowStep() {
|
|
71
|
+
this.formFlowService
|
|
72
|
+
.getFormFlowStep(this.formFlowInstanceId)
|
|
73
|
+
.subscribe((result) => {
|
|
74
|
+
this.handleFormFlowStep(result);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
handleFormFlowStep(formFlowInstance) {
|
|
78
|
+
if (formFlowInstance.step === null) {
|
|
79
|
+
this.formFlowStepType$.next(null);
|
|
80
|
+
this.FormFlowCustomComponentId$.next('');
|
|
81
|
+
this.formFlowInstanceId = null;
|
|
82
|
+
this.formFlowStepInstanceId = null;
|
|
83
|
+
this.formFlowComplete.emit(null);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.modalService.scrollToTop();
|
|
87
|
+
this.formFlowStepType$.next(formFlowInstance.step.type);
|
|
88
|
+
this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');
|
|
89
|
+
this.formFlowInstanceId = formFlowInstance.id;
|
|
90
|
+
this.formFlowStepInstanceId = formFlowInstance.step.id;
|
|
91
|
+
this.formDefinition = formFlowInstance.step.typeProperties.definition;
|
|
92
|
+
}
|
|
93
|
+
this.enable();
|
|
94
|
+
}
|
|
95
|
+
disable() {
|
|
96
|
+
this.disabled$.next(true);
|
|
97
|
+
}
|
|
98
|
+
enable() {
|
|
99
|
+
this.disabled$.next(false);
|
|
100
|
+
}
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormFlowComponent, deps: [{ token: i1.FormFlowService }, { token: i2.ValtimoModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
102
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FormFlowComponent, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<div>\n <div body *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change"] }, { kind: "component", type: i4.FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormFlowComponent, decorators: [{
|
|
105
|
+
type: Component,
|
|
106
|
+
args: [{ selector: 'valtimo-form-flow', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<div>\n <div body *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n <div body *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n" }]
|
|
107
|
+
}], ctorParameters: () => [{ type: i1.FormFlowService }, { type: i2.ValtimoModalService }], propDecorators: { form: [{
|
|
108
|
+
type: ViewChild,
|
|
109
|
+
args: ['form']
|
|
110
|
+
}], formIoFormData: [{
|
|
111
|
+
type: Input
|
|
112
|
+
}], formFlowInstanceId: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], formFlowComplete: [{
|
|
115
|
+
type: Output
|
|
116
|
+
}] } });
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVyQyxPQUFPLEVBRUwsaUJBQWlCLEdBSWxCLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQVM3QixNQUFNLE9BQU8saUJBQWlCO0lBZTVCLFlBQ21CLGVBQWdDLEVBQ2hDLFlBQWlDO1FBRGpDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFmM0MsbUJBQWMsR0FBZ0MsSUFBSSxlQUFlLENBQU0sSUFBSSxDQUFDLENBQUM7UUFFNUUscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoQyxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDaEQsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3ZFLCtCQUEwQixHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBVzNFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLElBQUks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QjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7Rm9ybWlvRm9ybX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyJztcbmltcG9ydCB7XG4gIEZvcm1pb0NvbXBvbmVudCxcbiAgRm9ybWlvT3B0aW9uc0ltcGwsXG4gIEZvcm1pb1N1Ym1pc3Npb24sXG4gIFZhbHRpbW9Gb3JtaW9PcHRpb25zLFxuICBWYWx0aW1vTW9kYWxTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Rm9ybUZsb3dTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0Zvcm1GbG93SW5zdGFuY2UsIEZvcm1GbG93U3RlcFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZm9ybS1mbG93JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmxvdy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmxvdy5jb21wb25lbnQuY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1GbG93Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnZm9ybScpIGZvcm06IEZvcm1pb0NvbXBvbmVudDtcbiAgQElucHV0KCkgZm9ybUlvRm9ybURhdGE6IEJlaGF2aW9yU3ViamVjdDxhbnk+IHwgbnVsbCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgQElucHV0KCkgZm9ybUZsb3dJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIEBPdXRwdXQoKSBmb3JtRmxvd0NvbXBsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm1GbG93U3RlcFR5cGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtRmxvd1N0ZXBUeXBlIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBGb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG5cbiAgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIGZvcm1pb09wdGlvbnM6IFZhbHRpbW9Gb3JtaW9PcHRpb25zO1xuXG4gIHByaXZhdGUgZm9ybUZsb3dTdGVwSW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUZsb3dTZXJ2aWNlOiBGb3JtRmxvd1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IFZhbHRpbW9Nb2RhbFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0Rm9ybUZsb3dTdGVwKCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChldmVudD8uZGF0YSkge1xuICAgICAgdGhpcy5mb3JtSW9Gb3JtRGF0YS5uZXh0KGV2ZW50LmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBpZiAoc3VibWlzc2lvbi5kYXRhKSB7XG4gICAgICB0aGlzLmZvcm1Jb0Zvcm1EYXRhLm5leHQoc3VibWlzc2lvbi5kYXRhKTtcbiAgICB9XG4gICAgaWYgKHN1Ym1pc3Npb24uZGF0YS5zdWJtaXQpIHtcbiAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlXG4gICAgICAgIC5zdWJtaXRTdGVwKFxuICAgICAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkLFxuICAgICAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCxcbiAgICAgICAgICB0aGlzLmZvcm1Jb0Zvcm1EYXRhLmdldFZhbHVlKClcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgICAgZXJyb3JzID0+IHtcbiAgICAgICAgICAgIHRoaXMuZm9ybT8uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIGlmIChzdWJtaXNzaW9uLmRhdGFbJ2JhY2snXSkge1xuICAgICAgdGhpcy5mb3JtRmxvd1NlcnZpY2UuYmFjayh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCwgc3VibWlzc2lvbi5kYXRhKS5zdWJzY3JpYmUoXG4gICAgICAgIChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgIGVycm9ycyA9PiB7XG4gICAgICAgICAgdGhpcy5mb3JtPy5zaG93RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUlvRm9ybURhdGFWYWx1ZSA9IHRoaXMuZm9ybUlvRm9ybURhdGEuZ2V0VmFsdWUoKTtcbiAgICBpZiAoZm9ybUlvRm9ybURhdGFWYWx1ZSAmJiB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1NlcnZpY2Uuc2F2ZSh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCwgZm9ybUlvRm9ybURhdGFWYWx1ZSkuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiBudWxsLFxuICAgICAgICBlcnJvcnMgPT4gdGhpcy5mb3JtLnNob3dFcnJvcnMoZXJyb3JzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1GbG93U3RlcCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgLmdldEZvcm1GbG93U3RlcCh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1GbG93U3RlcChyZXN1bHQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZvcm1GbG93U3RlcChmb3JtRmxvd0luc3RhbmNlOiBGb3JtRmxvd0luc3RhbmNlKSB7XG4gICAgaWYgKGZvcm1GbG93SW5zdGFuY2Uuc3RlcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBUeXBlJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5Gb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gbnVsbDtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1GbG93Q29tcGxldGUuZW1pdChudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwVHlwZSQubmV4dChmb3JtRmxvd0luc3RhbmNlLnN0ZXAudHlwZSk7XG4gICAgICB0aGlzLkZvcm1GbG93Q3VzdG9tQ29tcG9uZW50SWQkLm5leHQoZm9ybUZsb3dJbnN0YW5jZT8uc3RlcD8udHlwZVByb3BlcnRpZXM/LmlkIHx8ICcnKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkID0gZm9ybUZsb3dJbnN0YW5jZS5pZDtcbiAgICAgIHRoaXMuZm9ybUZsb3dTdGVwSW5zdGFuY2VJZCA9IGZvcm1GbG93SW5zdGFuY2Uuc3RlcC5pZDtcbiAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBmb3JtRmxvd0luc3RhbmNlLnN0ZXAudHlwZVByb3BlcnRpZXMuZGVmaW5pdGlvbjtcbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2PlxuICA8ZGl2IGJvZHkgKm5nSWY9XCJmb3JtRGVmaW5pdGlvbiAmJiAoZm9ybUZsb3dTdGVwVHlwZSQgfCBhc3luYykgPT09ICdmb3JtJ1wiPlxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIFtvcHRpb25zXT1cImZvcm1pb09wdGlvbnNcIlxuICAgID48L3ZhbHRpbW8tZm9ybS1pbz5cbiAgPC9kaXY+XG4gIDxkaXYgYm9keSAqbmdJZj1cIihmb3JtRmxvd1N0ZXBUeXBlJCB8IGFzeW5jKSA9PT0gJ2N1c3RvbS1jb21wb25lbnQnXCI+XG4gICAgPHZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyXG4gICAgICBbY29tcG9uZW50SWRdPVwiRm9ybUZsb3dDdXN0b21Db21wb25lbnRJZCQgfCBhc3luY1wiXG4gICAgICBbZm9ybUZsb3dJbnN0YW5jZUlkXT1cImZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgKHN1Ym1pdEV2ZW50KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZUV2ZW50KT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
|
|
18
|
+
import { tap } from 'rxjs/operators';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
import * as i1 from "../../services";
|
|
21
|
+
export class FormFlowConfigurationContainerComponent {
|
|
22
|
+
set disabled(disabledValue) {
|
|
23
|
+
this._disabled$.next(disabledValue);
|
|
24
|
+
}
|
|
25
|
+
set componentId(value) {
|
|
26
|
+
this._componentId$.next(value);
|
|
27
|
+
}
|
|
28
|
+
set formFlowInstanceId(value) {
|
|
29
|
+
this._formFlowInstanceId$.next(value);
|
|
30
|
+
}
|
|
31
|
+
constructor(formFlowComponentService) {
|
|
32
|
+
this.formFlowComponentService = formFlowComponentService;
|
|
33
|
+
this.changeEvent = new EventEmitter();
|
|
34
|
+
this.submitEvent = new EventEmitter();
|
|
35
|
+
this._subscriptions = new Subscription();
|
|
36
|
+
this._componentRef$ = new BehaviorSubject(undefined);
|
|
37
|
+
this._disabled$ = new BehaviorSubject(false);
|
|
38
|
+
this._componentId$ = new BehaviorSubject('');
|
|
39
|
+
this._formFlowInstanceId$ = new BehaviorSubject('');
|
|
40
|
+
}
|
|
41
|
+
ngOnInit() {
|
|
42
|
+
this.openConfigurationComponentSubscription();
|
|
43
|
+
this.openComponentInstanceSubscription();
|
|
44
|
+
this.openDisabledSubscription();
|
|
45
|
+
}
|
|
46
|
+
ngOnDestroy() {
|
|
47
|
+
this._subscriptions.unsubscribe();
|
|
48
|
+
}
|
|
49
|
+
openConfigurationComponentSubscription() {
|
|
50
|
+
this._subscriptions.add(combineLatest([this.formFlowComponentService.supportedComponents$, this._componentId$])
|
|
51
|
+
.pipe(tap(([supportedComponents, componentId]) => {
|
|
52
|
+
const configurationComponent = supportedComponents.find(component => component.id === componentId);
|
|
53
|
+
this._dynamicContainer.clear();
|
|
54
|
+
if (configurationComponent) {
|
|
55
|
+
const componentRef = this._dynamicContainer.createComponent(configurationComponent.component);
|
|
56
|
+
this._componentRef$.next(componentRef);
|
|
57
|
+
}
|
|
58
|
+
}))
|
|
59
|
+
.subscribe());
|
|
60
|
+
}
|
|
61
|
+
openComponentInstanceSubscription() {
|
|
62
|
+
this._subscriptions.add(combineLatest([this._componentRef$, this._formFlowInstanceId$]).subscribe(([ref, formFlowInstanceId]) => {
|
|
63
|
+
const instance = ref?.instance;
|
|
64
|
+
this._submitSubscription?.unsubscribe();
|
|
65
|
+
this._changeSubscription?.unsubscribe();
|
|
66
|
+
if (instance) {
|
|
67
|
+
if (formFlowInstanceId) {
|
|
68
|
+
instance.formFlowInstanceId = formFlowInstanceId;
|
|
69
|
+
}
|
|
70
|
+
this._changeSubscription = instance.changeEvent.subscribe(change => {
|
|
71
|
+
this.changeEvent.emit(change);
|
|
72
|
+
});
|
|
73
|
+
this._submitSubscription = instance.submitEvent.subscribe(submit => {
|
|
74
|
+
this.submitEvent.emit(submit);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
openDisabledSubscription() {
|
|
80
|
+
this._subscriptions.add(combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {
|
|
81
|
+
const instance = ref?.instance;
|
|
82
|
+
if (instance) {
|
|
83
|
+
instance.disabled = disabled;
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
87
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormFlowConfigurationContainerComponent, deps: [{ token: i1.FormFlowComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: { disabled: "disabled", componentId: "componentId", formFlowInstanceId: "formFlowInstanceId" }, outputs: { changeEvent: "changeEvent", submitEvent: "submitEvent" }, viewQueries: [{ propertyName: "_dynamicContainer", first: true, predicate: ["formFlowConfigurationComponent"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<ng-template #formFlowConfigurationComponent></ng-template>\n" }); }
|
|
89
|
+
}
|
|
90
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormFlowConfigurationContainerComponent, decorators: [{
|
|
91
|
+
type: Component,
|
|
92
|
+
args: [{ selector: 'valtimo-form-flow-configuration-container', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<ng-template #formFlowConfigurationComponent></ng-template>\n" }]
|
|
93
|
+
}], ctorParameters: () => [{ type: i1.FormFlowComponentService }], propDecorators: { _dynamicContainer: [{
|
|
94
|
+
type: ViewChild,
|
|
95
|
+
args: ['formFlowConfigurationComponent', { static: true, read: ViewContainerRef }]
|
|
96
|
+
}], disabled: [{
|
|
97
|
+
type: Input
|
|
98
|
+
}], componentId: [{
|
|
99
|
+
type: Input
|
|
100
|
+
}], formFlowInstanceId: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], changeEvent: [{
|
|
103
|
+
type: Output
|
|
104
|
+
}], submitEvent: [{
|
|
105
|
+
type: Output
|
|
106
|
+
}] } });
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXIvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXIvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQVNuQyxNQUFNLE9BQU8sdUNBQXVDO0lBS2xELElBQW9CLFFBQVEsQ0FBQyxhQUFzQjtRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBb0IsV0FBVyxDQUFDLEtBQWE7UUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELElBQW9CLGtCQUFrQixDQUFDLEtBQWE7UUFDbEQsSUFBSSxDQUFDLG9CQUFv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QUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNsRixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1lBRS9CLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQXBHVSx1Q0FBdUM7a0dBQXZDLHVDQUF1Qyw4V0FHZ0IsZ0JBQWdCLDJDQ3hDcEYsK3NCQWlCQTs7MkZEb0JhLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDRSwyQ0FBMkM7NkZBT3BDLGlCQUFpQjtzQkFEakMsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUUvRCxRQUFRO3NCQUEzQixLQUFLO2dCQUdjLFdBQVc7c0JBQTlCLEtBQUs7Z0JBR2Msa0JBQWtCO3NCQUFyQyxLQUFLO2dCQUdXLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3RhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDaGFuZ2VFdmVudCwgRm9ybUZsb3dDdXN0b21Db21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Zvcm1GbG93Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtGb3JtaW9TdWJtaXNzaW9ufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZsb3dDb25maWd1cmF0aW9uQ29udGFpbmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEZvcm1GbG93Q3VzdG9tQ29tcG9uZW50XG57XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1GbG93Q29uZmlndXJhdGlvbkNvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkVmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChkaXNhYmxlZFZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGNvbXBvbmVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb21wb25lbnRJZCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBmb3JtRmxvd0luc3RhbmNlSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zvcm1GbG93SW5zdGFuY2VJZCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1pb1N1Ym1pc3Npb24+KCk7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9zdWJtaXRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50UmVmJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgQ29tcG9uZW50UmVmPEZvcm1GbG93Q3VzdG9tQ29tcG9uZW50PiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wb25lbnRJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtRmxvd0luc3RhbmNlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZvcm1GbG93Q29tcG9uZW50U2VydmljZTogRm9ybUZsb3dDb21wb25lbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Db25maWd1cmF0aW9uQ29tcG9uZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuQ29tcG9uZW50SW5zdGFuY2VTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5EaXNhYmxlZFN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbmZpZ3VyYXRpb25Db21wb25lbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZvcm1GbG93Q29tcG9uZW50U2VydmljZS5zdXBwb3J0ZWRDb21wb25lbnRzJCwgdGhpcy5fY29tcG9uZW50SWQkXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChbc3VwcG9ydGVkQ29tcG9uZW50cywgY29tcG9uZW50SWRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uQ29tcG9uZW50ID0gc3VwcG9ydGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICBjb21wb25lbnQgPT4gY29tcG9uZW50LmlkID09PSBjb21wb25lbnRJZFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9keW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uQ29tcG9uZW50LmNvbXBvbmVudFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYkLm5leHQoY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db21wb25lbnRJbnN0YW5jZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbXBvbmVudFJlZiQsIHRoaXMuX2Zvcm1GbG93SW5zdGFuY2VJZCRdKS5zdWJzY3JpYmUoXG4gICAgICAgIChbcmVmLCBmb3JtRmxvd0luc3RhbmNlSWRdKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWY/Lmluc3RhbmNlO1xuXG4gICAgICAgICAgdGhpcy5fc3VibWl0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGZvcm1GbG93SW5zdGFuY2VJZCkge1xuICAgICAgICAgICAgICBpbnN0YW5jZS5mb3JtRmxvd0luc3RhbmNlSWQgPSBmb3JtRmxvd0luc3RhbmNlSWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmNoYW5nZUV2ZW50LnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoY2hhbmdlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9zdWJtaXRTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5zdWJtaXRFdmVudC5zdWJzY3JpYmUoc3VibWl0ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRFdmVudC5lbWl0KHN1Ym1pdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRGlzYWJsZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb21wb25lbnRSZWYkLCB0aGlzLl9kaXNhYmxlZCRdKS5zdWJzY3JpYmUoKFtyZWYsIGRpc2FibGVkXSkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHJlZj8uaW5zdGFuY2U7XG5cbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjZm9ybUZsb3dDb25maWd1cmF0aW9uQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
export * from './form-flow-configuration-container.component';
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudCc7XG4iXX0=
|
package/esm2022/lib/components/form-link-process-diagram/form-link-process-diagram.component.mjs
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, EventEmitter, Output, ViewChild, } from '@angular/core';
|
|
17
|
+
import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
|
|
18
|
+
import { combineLatest } from 'rxjs';
|
|
19
|
+
import { map } from 'rxjs/operators';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@valtimo/process";
|
|
22
|
+
import * as i2 from "@angular/router";
|
|
23
|
+
import * as i3 from "@valtimo/components";
|
|
24
|
+
import * as i4 from "@angular/common";
|
|
25
|
+
import * as i5 from "@angular/forms";
|
|
26
|
+
import * as i6 from "carbon-components-angular";
|
|
27
|
+
export class FormLinkProcessDiagramComponent {
|
|
28
|
+
constructor(processService, route, pageTitleService) {
|
|
29
|
+
this.processService = processService;
|
|
30
|
+
this.route = route;
|
|
31
|
+
this.pageTitleService = pageTitleService;
|
|
32
|
+
this.bpmnElementModalOpen = new EventEmitter();
|
|
33
|
+
this.bpmnElementModalClose = new EventEmitter();
|
|
34
|
+
this.callbacksAdded = false;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
this.pageTitleService.disableReset();
|
|
38
|
+
combineLatest([this.route.queryParams, this.processService.getProcessDefinitions()])
|
|
39
|
+
.pipe(map(([queryParams, processDefinitions]) => ({ queryParams, processDefinitions })))
|
|
40
|
+
.subscribe(response => {
|
|
41
|
+
this.processDefinitions = response.processDefinitions;
|
|
42
|
+
if (response.queryParams.process) {
|
|
43
|
+
this.processDefinitionKey = response.queryParams.process;
|
|
44
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
45
|
+
this.bpmnElementModalOpen.emit({
|
|
46
|
+
element: {
|
|
47
|
+
id: 'start-event',
|
|
48
|
+
type: 'bpmn:StartEvent',
|
|
49
|
+
},
|
|
50
|
+
processDefinitionKey: this.processDefinitionKey,
|
|
51
|
+
processDefinitionId: this.processDefinitionId,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (!this.processDefinitionKey && response.processDefinitions.length !== 0) {
|
|
55
|
+
this.processDefinitionKey = response.processDefinitions[0].key;
|
|
56
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
this.bpmnJS = new BpmnJS();
|
|
60
|
+
this.bpmnJS.on('import.done', ({ error }) => {
|
|
61
|
+
if (!error) {
|
|
62
|
+
const canvas = this.bpmnJS.get('canvas');
|
|
63
|
+
const eventBus = this.bpmnJS.get('eventBus');
|
|
64
|
+
canvas.zoom('fit-viewport', 'auto');
|
|
65
|
+
if (this.processDefinitionVersions && !this.callbacksAdded) {
|
|
66
|
+
eventBus.on('element.click', e => {
|
|
67
|
+
let activityListenerType = e.element.businessObject.$type;
|
|
68
|
+
if (activityListenerType === 'bpmn:UserTask') {
|
|
69
|
+
activityListenerType += ':create';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
activityListenerType += ':start';
|
|
73
|
+
}
|
|
74
|
+
this.bpmnElementModalOpen.emit({
|
|
75
|
+
element: {
|
|
76
|
+
id: e.element.businessObject.id,
|
|
77
|
+
type: e.element.businessObject.$type,
|
|
78
|
+
activityListenerType,
|
|
79
|
+
name: e.element?.businessObject?.name,
|
|
80
|
+
},
|
|
81
|
+
processDefinitionKey: this.processDefinitionKey,
|
|
82
|
+
processDefinitionId: this.processDefinitionId,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
this.callbacksAdded = true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
ngOnDestroy() {
|
|
91
|
+
this.bpmnElementModalClose.emit();
|
|
92
|
+
if (this.bpmnJS) {
|
|
93
|
+
this.bpmnJS.destroy();
|
|
94
|
+
}
|
|
95
|
+
this.pageTitleService.enableReset();
|
|
96
|
+
}
|
|
97
|
+
loadProcessDefinition(processDefinitionKey) {
|
|
98
|
+
this.processService
|
|
99
|
+
.getProcessDefinition(processDefinitionKey)
|
|
100
|
+
.subscribe((processDefinition) => {
|
|
101
|
+
this.processDefinitionId = processDefinition.id;
|
|
102
|
+
this.version = processDefinition.version;
|
|
103
|
+
this.loadProcessDefinitionXml(processDefinition.id);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
loadProcessDefinitionVersions(processDefinitionKey) {
|
|
107
|
+
this.processService
|
|
108
|
+
.getProcessDefinitionVersions(processDefinitionKey)
|
|
109
|
+
.subscribe((processDefinitionVersions) => {
|
|
110
|
+
this.processDefinitionVersions = processDefinitionVersions;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
loadProcessDefinitionFromKey(processDefinitionKey) {
|
|
114
|
+
this.loadProcessDefinitionVersions(processDefinitionKey);
|
|
115
|
+
this.loadProcessDefinition(processDefinitionKey);
|
|
116
|
+
}
|
|
117
|
+
loadProcessDefinitionXml(processDefinitionId) {
|
|
118
|
+
this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {
|
|
119
|
+
this.processDiagram = response;
|
|
120
|
+
this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
|
|
121
|
+
this.bpmnJS.attachTo(this.el.nativeElement);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
setProcessDefinitionKey(processDefinitionKey) {
|
|
125
|
+
this.processDefinitionKey = processDefinitionKey;
|
|
126
|
+
this.loadProcessDefinitionFromKey(this.processDefinitionKey);
|
|
127
|
+
}
|
|
128
|
+
setProcessDefinitionVersion(version) {
|
|
129
|
+
const processDefinitionId = this.processDefinitionVersions.find(definition => definition.version === +version)?.id;
|
|
130
|
+
if (processDefinitionId) {
|
|
131
|
+
this.processDefinitionId = processDefinitionId;
|
|
132
|
+
this.loadProcessDefinitionXml(this.processDefinitionId);
|
|
133
|
+
}
|
|
134
|
+
this.version = +version;
|
|
135
|
+
}
|
|
136
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormLinkProcessDiagramComponent, deps: [{ token: i1.ProcessService }, { token: i2.ActivatedRoute }, { token: i3.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
137
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: FormLinkProcessDiagramComponent, selector: "valtimo-form-link-process-diagram", outputs: { bpmnElementModalOpen: "bpmnElementModalOpen", bpmnElementModalClose: "bpmnElementModalClose" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<div class=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i6.Select, selector: "cds-select, ibm-select", inputs: ["display", "label", "helperText", "invalidText", "warn", "warnText", "id", "size", "disabled", "skeleton", "invalid", "theme", "ariaLabel", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i6.Option, selector: "option" }] }); }
|
|
138
|
+
}
|
|
139
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: FormLinkProcessDiagramComponent, decorators: [{
|
|
140
|
+
type: Component,
|
|
141
|
+
args: [{ selector: 'valtimo-form-link-process-diagram', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (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 ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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<div class=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (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 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\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"] }]
|
|
142
|
+
}], ctorParameters: () => [{ type: i1.ProcessService }, { type: i2.ActivatedRoute }, { type: i3.PageTitleService }], propDecorators: { el: [{
|
|
143
|
+
type: ViewChild,
|
|
144
|
+
args: ['ref']
|
|
145
|
+
}], bpmnElementModalOpen: [{
|
|
146
|
+
type: Output
|
|
147
|
+
}], bpmnElementModalClose: [{
|
|
148
|
+
type: Output
|
|
149
|
+
}] } });
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS9mb3JtLWxpbmstcHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWxpbmstcHJvY2Vzcy1kaWFncmFtL2Zvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFHWixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sTUFBTSxNQUFNLHNEQUFzRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFuQyxNQUFNLE9BQU8sK0JBQStCO0lBZ0IxQyxZQUNtQixjQUE4QixFQUM5QixLQUFxQixFQUNyQixnQkFBa0M7UUFGbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFmcEMseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRdkUsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFPNUIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMs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a0dBQS9CLCtCQUErQiwrUUN0QzVDLDg2REFtREE7OzJGRGJhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSxtQ0FBbUM7K0lBT3BCLEVBQUU7c0JBQTFCLFNBQVM7dUJBQUMsS0FBSztnQkFDQyxvQkFBb0I7c0JBQXBDLE1BQU07Z0JBQ1UscUJBQXFCO3NCQUFyQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NEZWZpbml0aW9uLCBQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5cbmltcG9ydCBCcG1uSlMgZnJvbSAnYnBtbi1qcy9kaXN0L2JwbW4tbmF2aWdhdGVkLXZpZXdlci5wcm9kdWN0aW9uLm1pbi5qcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUxpbmtQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBicG1uSlM6IEJwbW5KUztcblxuICBAVmlld0NoaWxkKCdyZWYnKSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYnBtbkVsZW1lbnRNb2RhbE9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGJwbW5FbGVtZW50TW9kYWxDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbnM6IFByb2Nlc3NEZWZpbml0aW9uW107XG4gIHB1YmxpYyBwcm9jZXNzRGlhZ3JhbTogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uO1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uczogUHJvY2Vzc0RlZmluaXRpb25bXTtcbiAgcHVibGljIHZlcnNpb246IG51bWJlcjtcbiAgcHJpdmF0ZSBjYWxsYmFja3NBZGRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHByb2Nlc3NEZWZpbml0aW9uSWQhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZGlzYWJsZVJlc2V0KCk7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcywgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvbnMoKV0pXG4gICAgICAucGlwZShtYXAoKFtxdWVyeVBhcmFtcywgcHJvY2Vzc0RlZmluaXRpb25zXSkgPT4gKHtxdWVyeVBhcmFtcywgcHJvY2Vzc0RlZmluaXRpb25zfSkpKVxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25zID0gcmVzcG9uc2UucHJvY2Vzc0RlZmluaXRpb25zO1xuICAgICAgICBpZiAocmVzcG9uc2UucXVlcnlQYXJhbXMucHJvY2Vzcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSByZXNwb25zZS5xdWVyeVBhcmFtcy5wcm9jZXNzO1xuICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICAgICAgICB0aGlzLmJwbW5FbGVtZW50TW9kYWxPcGVuLmVtaXQoe1xuICAgICAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgICBpZDogJ3N0YXJ0LWV2ZW50JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2JwbW46U3RhcnRFdmVudCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5ICYmIHJlc3BvbnNlLnByb2Nlc3NEZWZpbml0aW9ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcmVzcG9uc2UucHJvY2Vzc0RlZmluaXRpb25zWzBdLmtleTtcbiAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuYnBtbkpTID0gbmV3IEJwbW5KUygpO1xuICAgIHRoaXMuYnBtbkpTLm9uKCdpbXBvcnQuZG9uZScsICh7ZXJyb3J9OiBhbnkpID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2V2ZW50QnVzJyk7XG4gICAgICAgIGNhbnZhcy56b29tKCdmaXQtdmlld3BvcnQnLCAnYXV0bycpO1xuXG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMgJiYgIXRoaXMuY2FsbGJhY2tzQWRkZWQpIHtcbiAgICAgICAgICBldmVudEJ1cy5vbignZWxlbWVudC5jbGljaycsIGUgPT4ge1xuICAgICAgICAgICAgbGV0IGFjdGl2aXR5TGlzdGVuZXJUeXBlID0gZS5lbGVtZW50LmJ1c2luZXNzT2JqZWN0LiR0eXBlO1xuICAgICAgICAgICAgaWYgKGFjdGl2aXR5TGlzdGVuZXJUeXBlID09PSAnYnBtbjpVc2VyVGFzaycpIHtcbiAgICAgICAgICAgICAgYWN0aXZpdHlMaXN0ZW5lclR5cGUgKz0gJzpjcmVhdGUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWN0aXZpdHlMaXN0ZW5lclR5cGUgKz0gJzpzdGFydCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYnBtbkVsZW1lbnRNb2RhbE9wZW4uZW1pdCh7XG4gICAgICAgICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgICAgICBpZDogZS5lbGVtZW50LmJ1c2luZXNzT2JqZWN0LmlkLFxuICAgICAgICAgICAgICAgIHR5cGU6IGUuZWxlbWVudC5idXNpbmVzc09iamVjdC4kdHlwZSxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eUxpc3RlbmVyVHlwZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBlLmVsZW1lbnQ/LmJ1c2luZXNzT2JqZWN0Py5uYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25JZDogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jYWxsYmFja3NBZGRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYnBtbkVsZW1lbnRNb2RhbENsb3NlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5icG1uSlMpIHtcbiAgICAgIHRoaXMuYnBtbkpTLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpXG4gICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRGVmaW5pdGlvbjogUHJvY2Vzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkID0gcHJvY2Vzc0RlZmluaXRpb24uaWQ7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHByb2Nlc3NEZWZpbml0aW9uLnZlcnNpb247XG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uLmlkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSlcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM6IFByb2Nlc3NEZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zID0gcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkocHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25YbWwocHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25LZXkocHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByb2Nlc3NEZWZpbml0aW9uSWQgPSB0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMuZmluZChcbiAgICAgIGRlZmluaXRpb24gPT4gZGVmaW5pdGlvbi52ZXJzaW9uID09PSArdmVyc2lvblxuICAgICk/LmlkO1xuXG4gICAgaWYgKHByb2Nlc3NEZWZpbml0aW9uSWQpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCA9IHByb2Nlc3NEZWZpbml0aW9uSWQ7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQpO1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9ICt2ZXJzaW9uO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICA8ZGl2ICNyZWYgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInAtNCB0ZXh0LWNlbnRlciBsZWdlbmRhLWhvbGRlclwiPlxuICA8c3Bhbj5DbGljayBvbiBhIFVzZXIgVGFzayB0byBzcGVjaWZ5IGEgZm9ybSBkZWZpbml0aW9uIGZvciB0aGF0IFVzZXIgVGFzay48L3NwYW4+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXIgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1saW5rLWRvc3NpZXItYWN0aW9uc1wiPlxuICAgICAgPGNkcy1zZWxlY3QgW2xhYmVsXT1cIidQcm9jZXNzJ1wiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25LZXkoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICA+PG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvbiBvZiBwcm9jZXNzRGVmaW5pdGlvbnNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvbi5rZXlcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvbktleSA9PT0gcHJvY2Vzc0RlZmluaXRpb24ua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uLm5hbWUgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L2Nkcy1zZWxlY3Q+XG4gICAgICA8Y2RzLXNlbGVjdCBbbGFiZWxdPVwiJ1ZlcnNpb24nXCIgKGNoYW5nZSk9XCJzZXRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb24oJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwicHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uLnZlcnNpb24gPT09IHZlcnNpb25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uLnZlcnNpb24gfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L2Nkcy1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|