@valtimo/components 11.3.0 → 11.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/form-io/form-io.component.mjs +16 -18
- package/esm2022/lib/components/form-io/services/form-io-local-storage.service.mjs +68 -0
- package/fesm2022/valtimo-components.mjs +77 -16
- package/fesm2022/valtimo-components.mjs.map +1 -1
- package/lib/components/form-io/form-io.component.d.ts +4 -4
- package/lib/components/form-io/form-io.component.d.ts.map +1 -1
- package/lib/components/form-io/services/form-io-local-storage.service.d.ts +15 -0
- package/lib/components/form-io/services/form-io-local-storage.service.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { Component, EventEmitter, HostListener, Input, Output, } from '@angular/core';
|
|
17
|
-
import { Formio
|
|
17
|
+
import { Formio } from '@formio/angular';
|
|
18
18
|
import jwt_decode from 'jwt-decode';
|
|
19
19
|
import { BehaviorSubject, combineLatest, Subscription, timer } from 'rxjs';
|
|
20
20
|
import { distinctUntilChanged, map, switchMap, take } from 'rxjs/operators';
|
|
21
|
+
import { FormIoLocalStorageService } from './services/form-io-local-storage.service';
|
|
21
22
|
import * as i0 from "@angular/core";
|
|
22
23
|
import * as i1 from "@valtimo/security";
|
|
23
24
|
import * as i2 from "ngx-logger";
|
|
@@ -25,8 +26,9 @@ import * as i3 from "./services/form-io-state.service";
|
|
|
25
26
|
import * as i4 from "@angular/router";
|
|
26
27
|
import * as i5 from "@ngx-translate/core";
|
|
27
28
|
import * as i6 from "../../services/valtimo-modal.service";
|
|
28
|
-
import * as i7 from "
|
|
29
|
-
import * as i8 from "@
|
|
29
|
+
import * as i7 from "./services/form-io-local-storage.service";
|
|
30
|
+
import * as i8 from "@angular/common";
|
|
31
|
+
import * as i9 from "@formio/angular";
|
|
30
32
|
export class FormioComponent {
|
|
31
33
|
set options(optionsValue) {
|
|
32
34
|
this.options$.next(optionsValue);
|
|
@@ -41,15 +43,16 @@ export class FormioComponent {
|
|
|
41
43
|
this.readOnly$.next(readOnlyValue);
|
|
42
44
|
}
|
|
43
45
|
handleBeforeUnload() {
|
|
44
|
-
this.clearTokenFromLocalStorage();
|
|
46
|
+
this.localStorageService.clearTokenFromLocalStorage();
|
|
45
47
|
}
|
|
46
|
-
constructor(userProviderService, logger, stateService, route, translateService, modalService) {
|
|
48
|
+
constructor(userProviderService, logger, stateService, route, translateService, modalService, localStorageService) {
|
|
47
49
|
this.userProviderService = userProviderService;
|
|
48
50
|
this.logger = logger;
|
|
49
51
|
this.stateService = stateService;
|
|
50
52
|
this.route = route;
|
|
51
53
|
this.translateService = translateService;
|
|
52
54
|
this.modalService = modalService;
|
|
55
|
+
this.localStorageService = localStorageService;
|
|
53
56
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
54
57
|
this.submit = new EventEmitter();
|
|
55
58
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
@@ -60,7 +63,6 @@ export class FormioComponent {
|
|
|
60
63
|
this.options$ = new BehaviorSubject(undefined);
|
|
61
64
|
this.readOnly$ = new BehaviorSubject(false);
|
|
62
65
|
this.errors$ = new BehaviorSubject([]);
|
|
63
|
-
this.tokenSetInLocalStorage$ = new BehaviorSubject(false);
|
|
64
66
|
this.currentLanguage$ = this.translateService.stream('key').pipe(map(() => this.translateService.currentLang), distinctUntilChanged());
|
|
65
67
|
this.formioOptions$ = combineLatest([
|
|
66
68
|
this.currentLanguage$,
|
|
@@ -80,9 +82,9 @@ export class FormioComponent {
|
|
|
80
82
|
language,
|
|
81
83
|
};
|
|
82
84
|
}));
|
|
85
|
+
this.tokenSetInLocalStorage$ = this.localStorageService.tokenSetInLocalStorage$;
|
|
83
86
|
this._subscriptions = new Subscription();
|
|
84
87
|
this._tokenTimerSubscription = new Subscription();
|
|
85
|
-
this._FORMIO_TOKEN_LOCAL_STORAGE_KEY = 'formioToken';
|
|
86
88
|
}
|
|
87
89
|
ngOnInit() {
|
|
88
90
|
Formio.setProjectUrl(location.origin);
|
|
@@ -104,7 +106,7 @@ export class FormioComponent {
|
|
|
104
106
|
this.unsubscribeFormRefresh();
|
|
105
107
|
this._tokenRefreshTimerSubscription?.unsubscribe();
|
|
106
108
|
this._subscriptions.unsubscribe();
|
|
107
|
-
this.clearTokenFromLocalStorage();
|
|
109
|
+
this.localStorageService.clearTokenFromLocalStorage();
|
|
108
110
|
}
|
|
109
111
|
showErrors(errors) {
|
|
110
112
|
this.errors$.next(errors);
|
|
@@ -150,9 +152,8 @@ export class FormioComponent {
|
|
|
150
152
|
setToken(token) {
|
|
151
153
|
Formio.setUser(jwt_decode(token));
|
|
152
154
|
Formio.setToken(token);
|
|
153
|
-
localStorage.setItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY, token);
|
|
154
155
|
this.setTimerForTokenRefresh(token);
|
|
155
|
-
this.
|
|
156
|
+
this.localStorageService.setTokenInLocalStorage(token);
|
|
156
157
|
this.logger.debug('New token set for form.io.');
|
|
157
158
|
}
|
|
158
159
|
setTimerForTokenRefresh(token) {
|
|
@@ -191,16 +192,13 @@ export class FormioComponent {
|
|
|
191
192
|
}
|
|
192
193
|
}));
|
|
193
194
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, deps: [{ token: i1.UserProviderService }, { token: i2.NGXLogger }, { token: i3.FormIoStateService }, { token: i4.ActivatedRoute }, { token: i5.TranslateService }, { token: i6.ValtimoModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
198
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioComponent, selector: "valtimo-form-io", inputs: { options: "options", submission: "submission", form: "form", readOnly: "readOnly", formRefresh$: "formRefresh$" }, outputs: { submit: "submit", change: "change" }, host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.FormioComponent, selector: "formio" }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }] }); }
|
|
195
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, deps: [{ token: i1.UserProviderService }, { token: i2.NGXLogger }, { token: i3.FormIoStateService }, { token: i4.ActivatedRoute }, { token: i5.TranslateService }, { token: i6.ValtimoModalService }, { token: i7.FormIoLocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
196
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioComponent, selector: "valtimo-form-io", inputs: { options: "options", submission: "submission", form: "form", readOnly: "readOnly", formRefresh$: "formRefresh$" }, outputs: { submit: "submit", change: "change" }, host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, providers: [FormIoLocalStorageService], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FormioComponent, selector: "formio" }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }] }); }
|
|
199
197
|
}
|
|
200
198
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, decorators: [{
|
|
201
199
|
type: Component,
|
|
202
|
-
args: [{ selector: 'valtimo-form-io', template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n" }]
|
|
203
|
-
}], ctorParameters: function () { return [{ type: i1.UserProviderService }, { type: i2.NGXLogger }, { type: i3.FormIoStateService }, { type: i4.ActivatedRoute }, { type: i5.TranslateService }, { type: i6.ValtimoModalService }]; }, propDecorators: { options: [{
|
|
200
|
+
args: [{ selector: 'valtimo-form-io', providers: [FormIoLocalStorageService], template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n" }]
|
|
201
|
+
}], ctorParameters: function () { return [{ type: i1.UserProviderService }, { type: i2.NGXLogger }, { type: i3.FormIoStateService }, { type: i4.ActivatedRoute }, { type: i5.TranslateService }, { type: i6.ValtimoModalService }, { type: i7.FormIoLocalStorageService }]; }, propDecorators: { options: [{
|
|
204
202
|
type: Input
|
|
205
203
|
}], submission: [{
|
|
206
204
|
type: Input
|
|
@@ -218,4 +216,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
218
216
|
type: HostListener,
|
|
219
217
|
args: ['window:beforeunload', ['$event']]
|
|
220
218
|
}] } });
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCxNQUFNLEdBSVAsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLFVBQVUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQXVCLFlBQVksRUFBRSxLQUFLLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDOUYsT0FBTyxFQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFVMUUsTUFBTSxPQUFPLGVBQWU7SUFDMUIsSUFBYSxPQUFPLENBQUMsWUFBa0M7UUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQWEsVUFBVSxDQUFDLGVBQWlDO1FBQ3ZELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFhLElBQUksQ0FBQyxTQUFpQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FB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QUksQ0FBQyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM3QztJQUNILENBQUM7SUFFTyxxQkFBcUI7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNuQyxNQUFNLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQztZQUM3RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1lBRXJDLElBQUksc0JBQXNCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQzthQUNyRTtZQUVELElBQUksVUFBVSxFQUFFO2dCQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNoRSxDQUFDOytHQTdOVSxlQUFlO21HQUFmLGVBQWUsdVVDbEQ1Qiwwa0RBZ0RBOzs0RkRFYSxlQUFlO2tCQUwzQixTQUFTOytCQUNFLGlCQUFpQjtpUUFLZCxPQUFPO3NCQUFuQixLQUFLO2dCQUdPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR08sSUFBSTtzQkFBaEIsS0FBSztnQkFHTyxRQUFRO3NCQUFwQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFHQyxrQkFBa0I7c0JBRHpCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VmFsdGltb0Zvcm1pb09wdGlvbnN9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1ZhbHRpbW9Nb2RhbFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3ZhbHRpbW8tbW9kYWwuc2VydmljZSc7XG5pbXBvcnQge1VzZXJQcm92aWRlclNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL3NlY3VyaXR5JztcbmltcG9ydCB7XG4gIEZvcm1pbyxcbiAgRm9ybWlvQ29tcG9uZW50IGFzIEZvcm1Jb1NvdXJjZUNvbXBvbmVudCxcbiAgRm9ybWlvU3VibWlzc2lvbixcbiAgRm9ybWlvVXRpbHMsXG59IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge0Zvcm1pb1JlZnJlc2hWYWx1ZX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyL2Zvcm1pby5jb21tb24nO1xuaW1wb3J0IGp3dF9kZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtSW9TdGF0ZVNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvZm9ybS1pby1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0taW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1pby5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0taW8uY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtaW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uc1ZhbHVlOiBWYWx0aW1vRm9ybWlvT3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyQubmV4dChvcHRpb25zVmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBzdWJtaXNzaW9uKHN1Ym1pc3Npb25WYWx1ZTogRm9ybWlvU3VibWlzc2lvbikge1xuICAgIHRoaXMuc3VibWlzc2lvbiQubmV4dChzdWJtaXNzaW9uVmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHNldCBmb3JtKGZvcm1WYWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5mb3JtJC5uZXh0KGZvcm1WYWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHJlYWRPbmx5KHJlYWRPbmx5VmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJlYWRPbmx5JC5uZXh0KHJlYWRPbmx5VmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIGZvcm1SZWZyZXNoJCE6IFN1YmplY3Q8Rm9ybWlvUmVmcmVzaFZhbHVlPjtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxuICBwcml2YXRlIGhhbmRsZUJlZm9yZVVubG9hZCgpIHtcbiAgICB0aGlzLmNsZWFyVG9rZW5Gcm9tTG9jYWxTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1pb1JlZnJlc2hWYWx1ZT4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgc3VibWlzc2lvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1pb1N1Ym1pc3Npb24+KHt9KTtcbiAgcHVibGljIHJlYWRvbmx5IGZvcm0kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxvYmplY3Q+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VmFsdGltb0Zvcm1pb09wdGlvbnM+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSByZWFkT25seSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGVycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PHN0cmluZz4+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2V0SW5Mb2NhbFN0b3JhZ2UkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRMYW5ndWFnZSQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKS5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWlvT3B0aW9ucyQ6IE9ic2VydmFibGU8VmFsdGltb0Zvcm1pb09wdGlvbnM+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UkLFxuICAgIHRoaXMub3B0aW9ucyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGFuZ3VhZ2UsIG9wdGlvbnNdKSA9PiB7XG4gICAgICBjb25zdCBmb3JtaW9UcmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZm9ybWlvVHJhbnNsYXRpb25zJyk7XG4gICAgICByZXR1cm4gdHlwZW9mIGZvcm1pb1RyYW5zbGF0aW9ucyA9PT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgICBbbGFuZ3VhZ2VdOiB0aGlzLnN0YXRlU2VydmljZS5mbGF0dGVuVHJhbnNsYXRpb25zT2JqZWN0KGZvcm1pb1RyYW5zbGF0aW9ucyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICB9O1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSBfdG9rZW5SZWZyZXNoVGltZXJTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgX2Zvcm1SZWZyZXNoU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlblRpbWVyU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX0ZPUk1JT19UT0tFTl9MT0NBTF9TVE9SQUdFX0tFWSA9ICdmb3JtaW9Ub2tlbic7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyUHJvdmlkZXJTZXJ2aWNlOiBVc2VyUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0ZVNlcnZpY2U6IEZvcm1Jb1N0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IFZhbHRpbW9Nb2RhbFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBGb3JtaW8uc2V0UHJvamVjdFVybChsb2NhdGlvbi5vcmlnaW4pO1xuICAgIEZvcm1pby5hdXRoVXJsID0gbG9jYXRpb24ub3JpZ2luO1xuXG4gICAgdGhpcy5vcGVuUm91dGVTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmVycm9ycyQubmV4dChbXSk7XG4gICAgdGhpcy5zZXRJbml0aWFsVG9rZW4oKTtcbiAgICB0aGlzLnN1YnNjcmliZUZvcm1SZWZyZXNoKCk7XG4gICAgdGhpcy5vcGVuUmVsb2FkRm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlblJlbG9hZFN1Ym1pc3Npb25TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXM/LmZvcm1EZWZpbml0aW9uUmVmcmVzaCQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGb3JtUmVmcmVzaCgpO1xuICAgICAgdGhpcy5zdWJzY3JpYmVGb3JtUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm9ybVJlZnJlc2goKTtcbiAgICB0aGlzLl90b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5jbGVhclRva2VuRnJvbUxvY2FsU3RvcmFnZSgpO1xuICB9XG5cbiAgcHVibGljIHNob3dFcnJvcnMoZXJyb3JzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzJC5uZXh0KGVycm9ycyk7XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQoc3VibWlzc2lvbjogRm9ybWlvU3VibWlzc2lvbik6IHZvaWQge1xuICAgIHRoaXMuZXJyb3JzJC5uZXh0KFtdKTtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KHN1Ym1pc3Npb24pO1xuICB9XG5cbiAgcHVibGljIGZvcm1SZWFkeShmb3JtOiBGb3JtSW9Tb3VyY2VDb21wb25lbnQpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlU2VydmljZS5jdXJyZW50Rm9ybSA9IGZvcm07XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2Uob2JqZWN0OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmNoYW5nZS5lbWl0KG9iamVjdCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHByZXZQYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJlbG9hZEZvcm1TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLmZvcm0kLnN1YnNjcmliZShmb3JtID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBmb3JtLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJlbG9hZFN1Ym1pc3Npb25TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnN1Ym1pc3Npb24kLnN1YnNjcmliZShzdWJtaXNzaW9uID0+IHtcbiAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHtcbiAgICAgICAgICBzdWJtaXNzaW9uLFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uuc2Nyb2xsVG9Ub3AoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFRva2VuKCk6IHZvaWQge1xuICAgIHRoaXMudXNlclByb3ZpZGVyU2VydmljZS5nZXRUb2tlbigpLnRoZW4oKHRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuc2V0VG9rZW4odG9rZW4pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUb2tlbih0b2tlbjogc3RyaW5nKTogdm9pZCB7XG4gICAgRm9ybWlvLnNldFVzZXIoand0X2RlY29kZSh0b2tlbikpO1xuICAgIEZvcm1pby5zZXRUb2tlbih0b2tlbik7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fRk9STUlPX1RPS0VOX0xPQ0FMX1NUT1JBR0VfS0VZLCB0b2tlbik7XG4gICAgdGhpcy5zZXRUaW1lckZvclRva2VuUmVmcmVzaCh0b2tlbik7XG4gICAgdGhpcy50b2tlblNldEluTG9jYWxTdG9yYWdlJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ05ldyB0b2tlbiBzZXQgZm9yIGZvcm0uaW8uJyk7XG4gIH1cblxuICBwcml2YXRlIHNldFRpbWVyRm9yVG9rZW5SZWZyZXNoKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0b2tlbkV4cCA9IChqd3RfZGVjb2RlKHRva2VuKSBhcyBhbnkpLmV4cCAqIDEwMDA7XG4gICAgY29uc3QgZXhwaXJ5VGltZSA9IHRva2VuRXhwIC0gRGF0ZS5ub3coKSAtIDEwMDA7XG5cbiAgICB0aGlzLl90b2tlblRpbWVyU3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRpbWVyKGV4cGlyeVRpbWUpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UudXBkYXRlVG9rZW4oLTEpKSxcbiAgICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmdldFRva2VuKCkpLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChyZWZyZXNoZWRUb2tlbjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZXRUb2tlbihyZWZyZXNoZWRUb2tlbik7XG4gICAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBUaW1lciBmb3IgZm9ybS5pbyB0b2tlbiByZWZyZXNoIHNldCBmb3I6ICR7ZXhwaXJ5VGltZX1tcy5gKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlRm9ybVJlZnJlc2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZm9ybVJlZnJlc2gkKSB7XG4gICAgICB0aGlzLl9mb3JtUmVmcmVzaFN1YnNjcmlwdGlvbiA9IHRoaXMuZm9ybVJlZnJlc2gkLnN1YnNjcmliZShyZWZyZXNoVmFsdWUgPT4ge1xuICAgICAgICBpZiAocmVmcmVzaFZhbHVlKSB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHJlZnJlc2hWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVGb3JtUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZm9ybVJlZnJlc2hTdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuX2Zvcm1SZWZyZXNoU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUm91dGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnJvdXRlLnBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnREZWZpbml0aW9uTmFtZSA9IHBhcmFtcy5kb2N1bWVudERlZmluaXRpb25OYW1lO1xuICAgICAgICBjb25zdCBkb2N1bWVudElkID0gcGFyYW1zLmRvY3VtZW50SWQ7XG5cbiAgICAgICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlU2VydmljZS5zZXREb2N1bWVudERlZmluaXRpb25OYW1lKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvY3VtZW50SWQpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlU2VydmljZS5zZXREb2N1bWVudElkKGRvY3VtZW50SWQpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVG9rZW5Gcm9tTG9jYWxTdG9yYWdlKCk6IHZvaWQge1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX0ZPUk1JT19UT0tFTl9MT0NBTF9TVE9SQUdFX0tFWSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdlxuICAqbmdJZj1cIntcbiAgICBjdXJyZW50TGFuZ3VhZ2U6IGN1cnJlbnRMYW5ndWFnZSQgfCBhc3luYyxcbiAgICBmb3JtaW9PcHRpb25zOiBmb3JtaW9PcHRpb25zJCB8IGFzeW5jLFxuICAgIHN1Ym1pc3Npb246IHN1Ym1pc3Npb24kIHwgYXN5bmMsXG4gICAgcmVhZE9ubHk6IHJlYWRPbmx5JCB8IGFzeW5jLFxuICAgIGZvcm06IGZvcm0kIHwgYXN5bmMsXG4gICAgZXJyb3JzOiBlcnJvcnMkIHwgYXN5bmMsXG4gICAgdG9rZW5TZXRJbkxvY2FsU3RvcmFnZTogdG9rZW5TZXRJbkxvY2FsU3RvcmFnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxkaXYgKm5nSWY9XCJvYnMuZXJyb3JzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBwdC01IHBiLTUgbWItMlwiPlxuICAgIDxvbD5cbiAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2Ygb2JzLmVycm9yc1wiPlxuICAgICAgICB7eyBlcnJvciB9fVxuICAgICAgPC9saT5cbiAgICA8L29sPlxuICA8L2Rpdj5cbiAgPGZvcm1pb1xuICAgICpuZ0lmPVwib2JzLmZvcm1pb09wdGlvbnMgJiYgb2JzLmZvcm0gJiYgb2JzLnRva2VuU2V0SW5Mb2NhbFN0b3JhZ2VcIlxuICAgIFtzdWJtaXNzaW9uXT1cIm9icy5zdWJtaXNzaW9uXCJcbiAgICBbZm9ybV09XCJvYnMuZm9ybVwiXG4gICAgW3JlZnJlc2hdPVwicmVmcmVzaEZvcm1cIlxuICAgIFtvcHRpb25zXT1cIm9icy5mb3JtaW9PcHRpb25zXCJcbiAgICBbcmVhZE9ubHldPVwib2JzLnJlYWRPbmx5XCJcbiAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgIChyZWFkeSk9XCJmb3JtUmVhZHkoJGV2ZW50KVwiXG4gICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAobmV4dFBhZ2UpPVwibmV4dFBhZ2UoKVwiXG4gICAgKHByZXZQYWdlKT1cInByZXZQYWdlKClcIlxuICA+PC9mb3JtaW8+XG48L2Rpdj5cbiJdfQ==
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vZm9ybS1pby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBQyxNQUFNLEVBQTZELE1BQU0saUJBQWlCLENBQUM7QUFFbkcsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFDO0FBRXBDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUF1QixZQUFZLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzlGLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSTFFLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7Ozs7OztBQVFuRixNQUFNLE9BQU8sZUFBZTtJQUMxQixJQUFhLE9BQU8sQ0FBQyxZQUFrQztRQUNyRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBYSxVQUFVLENBQUMsZUFBaUM7UUFDdkQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUNELElBQWEsSUFBSSxDQUFDLFNBQWlCO1FB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LElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUM7WUFDN0QsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztZQUVyQyxJQUFJLHNCQUFzQixFQUFFO2dCQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLHNCQUFzQixDQUFDLENBQUM7YUFDckU7WUFFRCxJQUFJLFVBQVUsRUFBRTtnQkFDZCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUM3QztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXhOVSxlQUFlO21HQUFmLGVBQWUscVNBRmYsQ0FBQyx5QkFBeUIsQ0FBQywrQ0M3Q3hDLDBrREFnREE7OzRGRERhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsaUJBQWlCLGFBR2hCLENBQUMseUJBQXlCLENBQUM7eVNBR3pCLE9BQU87c0JBQW5CLEtBQUs7Z0JBR08sVUFBVTtzQkFBdEIsS0FBSztnQkFHTyxJQUFJO3NCQUFoQixLQUFLO2dCQUdPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHSSxNQUFNO3NCQUFmLE1BQU07Z0JBRUcsTUFBTTtzQkFBZixNQUFNO2dCQUdDLGtCQUFrQjtzQkFEekIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtWYWx0aW1vRm9ybWlvT3B0aW9uc30gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7VmFsdGltb01vZGFsU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvdmFsdGltby1tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtGb3JtaW8sIEZvcm1pb0NvbXBvbmVudCBhcyBGb3JtSW9Tb3VyY2VDb21wb25lbnQsIEZvcm1pb1N1Ym1pc3Npb259IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge0Zvcm1pb1JlZnJlc2hWYWx1ZX0gZnJvbSAnQGZvcm1pby9hbmd1bGFyL2Zvcm1pby5jb21tb24nO1xuaW1wb3J0IGp3dF9kZWNvZGUgZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2Rpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtSW9TdGF0ZVNlcnZpY2V9IGZyb20gJy4vc2VydmljZXMvZm9ybS1pby1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtGb3JtSW9Mb2NhbFN0b3JhZ2VTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzL2Zvcm0taW8tbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLWlvJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0taW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWlvLmNvbXBvbmVudC5jc3MnXSxcbiAgcHJvdmlkZXJzOiBbRm9ybUlvTG9jYWxTdG9yYWdlU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1pb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zVmFsdWU6IFZhbHRpbW9Gb3JtaW9PcHRpb25zKSB7XG4gICAgdGhpcy5vcHRpb25zJC5uZXh0KG9wdGlvbnNWYWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IHN1Ym1pc3Npb24oc3VibWlzc2lvblZhbHVlOiBGb3JtaW9TdWJtaXNzaW9uKSB7XG4gICAgdGhpcy5zdWJtaXNzaW9uJC5uZXh0KHN1Ym1pc3Npb25WYWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgc2V0IGZvcm0oZm9ybVZhbHVlOiBvYmplY3QpIHtcbiAgICB0aGlzLmZvcm0kLm5leHQoZm9ybVZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBzZXQgcmVhZE9ubHkocmVhZE9ubHlWYWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMucmVhZE9ubHkkLm5leHQocmVhZE9ubHlWYWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgZm9ybVJlZnJlc2gkITogU3ViamVjdDxGb3JtaW9SZWZyZXNoVmFsdWU+O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICBAT3V0cHV0KCkgY2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OmJlZm9yZXVubG9hZCcsIFsnJGV2ZW50J10pXG4gIHByaXZhdGUgaGFuZGxlQmVmb3JlVW5sb2FkKCkge1xuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5jbGVhclRva2VuRnJvbUxvY2FsU3RvcmFnZSgpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hGb3JtID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtaW9SZWZyZXNoVmFsdWU+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym1pc3Npb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb3JtaW9TdWJtaXNzaW9uPih7fSk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0Pih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbHRpbW9Gb3JtaW9PcHRpb25zPih1bmRlZmluZWQpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVhZE9ubHkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBlcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxzdHJpbmc+PihbXSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRMYW5ndWFnZSQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKS5waXBlKFxuICAgIG1hcCgoKSA9PiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmcpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybWlvT3B0aW9ucyQ6IE9ic2VydmFibGU8VmFsdGltb0Zvcm1pb09wdGlvbnM+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UkLFxuICAgIHRoaXMub3B0aW9ucyQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbbGFuZ3VhZ2UsIG9wdGlvbnNdKSA9PiB7XG4gICAgICBjb25zdCBmb3JtaW9UcmFuc2xhdGlvbnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnZm9ybWlvVHJhbnNsYXRpb25zJyk7XG4gICAgICByZXR1cm4gdHlwZW9mIGZvcm1pb1RyYW5zbGF0aW9ucyA9PT0gJ29iamVjdCdcbiAgICAgICAgPyB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgICBbbGFuZ3VhZ2VdOiB0aGlzLnN0YXRlU2VydmljZS5mbGF0dGVuVHJhbnNsYXRpb25zT2JqZWN0KGZvcm1pb1RyYW5zbGF0aW9ucyksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFuZ3VhZ2UsXG4gICAgICAgICAgfVxuICAgICAgICA6IHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBsYW5ndWFnZSxcbiAgICAgICAgICB9O1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2V0SW5Mb2NhbFN0b3JhZ2UkID0gdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnRva2VuU2V0SW5Mb2NhbFN0b3JhZ2UkO1xuXG4gIHByaXZhdGUgX3Rva2VuUmVmcmVzaFRpbWVyU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9mb3JtUmVmcmVzaFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5UaW1lclN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IE5HWExvZ2dlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YXRlU2VydmljZTogRm9ybUlvU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogVmFsdGltb01vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsU3RvcmFnZVNlcnZpY2U6IEZvcm1Jb0xvY2FsU3RvcmFnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBGb3JtaW8uc2V0UHJvamVjdFVybChsb2NhdGlvbi5vcmlnaW4pO1xuICAgIEZvcm1pby5hdXRoVXJsID0gbG9jYXRpb24ub3JpZ2luO1xuXG4gICAgdGhpcy5vcGVuUm91dGVTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmVycm9ycyQubmV4dChbXSk7XG4gICAgdGhpcy5zZXRJbml0aWFsVG9rZW4oKTtcbiAgICB0aGlzLnN1YnNjcmliZUZvcm1SZWZyZXNoKCk7XG4gICAgdGhpcy5vcGVuUmVsb2FkRm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlblJlbG9hZFN1Ym1pc3Npb25TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXM/LmZvcm1EZWZpbml0aW9uUmVmcmVzaCQpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmVGb3JtUmVmcmVzaCgpO1xuICAgICAgdGhpcy5zdWJzY3JpYmVGb3JtUmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlRm9ybVJlZnJlc2goKTtcbiAgICB0aGlzLl90b2tlblJlZnJlc2hUaW1lclN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLmNsZWFyVG9rZW5Gcm9tTG9jYWxTdG9yYWdlKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd0Vycm9ycyhlcnJvcnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMkLm5leHQoZXJyb3JzKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvcnMkLm5leHQoW10pO1xuICAgIHRoaXMuc3VibWl0LmVtaXQoc3VibWlzc2lvbik7XG4gIH1cblxuICBwdWJsaWMgZm9ybVJlYWR5KGZvcm06IEZvcm1Jb1NvdXJjZUNvbXBvbmVudCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTZXJ2aWNlLmN1cnJlbnRGb3JtID0gZm9ybTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoYW5nZShvYmplY3Q6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuY2hhbmdlLmVtaXQob2JqZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgcHJldlBhZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUmVsb2FkRm9ybVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuZm9ybSQuc3Vic2NyaWJlKGZvcm0gPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICAgIGZvcm0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUmVsb2FkU3VibWlzc2lvblN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3VibWlzc2lvbiQuc3Vic2NyaWJlKHN1Ym1pc3Npb24gPT4ge1xuICAgICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQoe1xuICAgICAgICAgIHN1Ym1pc3Npb24sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5zY3JvbGxUb1RvcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsVG9rZW4oKTogdm9pZCB7XG4gICAgdGhpcy51c2VyUHJvdmlkZXJTZXJ2aWNlLmdldFRva2VuKCkudGhlbigodG9rZW46IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5zZXRUb2tlbih0b2tlbik7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFRva2VuKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBGb3JtaW8uc2V0VXNlcihqd3RfZGVjb2RlKHRva2VuKSk7XG4gICAgRm9ybWlvLnNldFRva2VuKHRva2VuKTtcbiAgICB0aGlzLnNldFRpbWVyRm9yVG9rZW5SZWZyZXNoKHRva2VuKTtcbiAgICB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2Uuc2V0VG9rZW5JbkxvY2FsU3RvcmFnZSh0b2tlbik7XG5cbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTmV3IHRva2VuIHNldCBmb3IgZm9ybS5pby4nKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VGltZXJGb3JUb2tlblJlZnJlc2godG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRva2VuRXhwID0gKGp3dF9kZWNvZGUodG9rZW4pIGFzIGFueSkuZXhwICogMTAwMDtcbiAgICBjb25zdCBleHBpcnlUaW1lID0gdG9rZW5FeHAgLSBEYXRlLm5vdygpIC0gMTAwMDtcblxuICAgIHRoaXMuX3Rva2VuVGltZXJTdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGltZXIoZXhwaXJ5VGltZSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMudXNlclByb3ZpZGVyU2VydmljZS51cGRhdGVUb2tlbigtMSkpLFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VG9rZW4oKSksXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHJlZnJlc2hlZFRva2VuOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICB0aGlzLnNldFRva2VuKHJlZnJlc2hlZFRva2VuKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYFRpbWVyIGZvciBmb3JtLmlvIHRva2VuIHJlZnJlc2ggc2V0IGZvcjogJHtleHBpcnlUaW1lfW1zLmApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVGb3JtUmVmcmVzaCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtUmVmcmVzaCQpIHtcbiAgICAgIHRoaXMuX2Zvcm1SZWZyZXNoU3Vic2NyaXB0aW9uID0gdGhpcy5mb3JtUmVmcmVzaCQuc3Vic2NyaWJlKHJlZnJlc2hWYWx1ZSA9PiB7XG4gICAgICAgIGlmIChyZWZyZXNoVmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtLmVtaXQocmVmcmVzaFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1bnN1YnNjcmliZUZvcm1SZWZyZXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9mb3JtUmVmcmVzaFN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fZm9ybVJlZnJlc2hTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5Sb3V0ZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgICBjb25zdCBkb2N1bWVudERlZmluaXRpb25OYW1lID0gcGFyYW1zLmRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SWQgPSBwYXJhbXMuZG9jdW1lbnRJZDtcblxuICAgICAgICBpZiAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSkge1xuICAgICAgICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNldERvY3VtZW50RGVmaW5pdGlvbk5hbWUoZG9jdW1lbnREZWZpbml0aW9uTmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZG9jdW1lbnRJZCkge1xuICAgICAgICAgIHRoaXMuc3RhdGVTZXJ2aWNlLnNldERvY3VtZW50SWQoZG9jdW1lbnRJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2XG4gICpuZ0lmPVwie1xuICAgIGN1cnJlbnRMYW5ndWFnZTogY3VycmVudExhbmd1YWdlJCB8IGFzeW5jLFxuICAgIGZvcm1pb09wdGlvbnM6IGZvcm1pb09wdGlvbnMkIHwgYXN5bmMsXG4gICAgc3VibWlzc2lvbjogc3VibWlzc2lvbiQgfCBhc3luYyxcbiAgICByZWFkT25seTogcmVhZE9ubHkkIHwgYXN5bmMsXG4gICAgZm9ybTogZm9ybSQgfCBhc3luYyxcbiAgICBlcnJvcnM6IGVycm9ycyQgfCBhc3luYyxcbiAgICB0b2tlblNldEluTG9jYWxTdG9yYWdlOiB0b2tlblNldEluTG9jYWxTdG9yYWdlJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPGRpdiAqbmdJZj1cIm9icy5lcnJvcnMubGVuZ3RoID4gMFwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIHB0LTUgcGItNSBtYi0yXCI+XG4gICAgPG9sPlxuICAgICAgPGxpICpuZ0Zvcj1cImxldCBlcnJvciBvZiBvYnMuZXJyb3JzXCI+XG4gICAgICAgIHt7IGVycm9yIH19XG4gICAgICA8L2xpPlxuICAgIDwvb2w+XG4gIDwvZGl2PlxuICA8Zm9ybWlvXG4gICAgKm5nSWY9XCJvYnMuZm9ybWlvT3B0aW9ucyAmJiBvYnMuZm9ybSAmJiBvYnMudG9rZW5TZXRJbkxvY2FsU3RvcmFnZVwiXG4gICAgW3N1Ym1pc3Npb25dPVwib2JzLnN1Ym1pc3Npb25cIlxuICAgIFtmb3JtXT1cIm9icy5mb3JtXCJcbiAgICBbcmVmcmVzaF09XCJyZWZyZXNoRm9ybVwiXG4gICAgW29wdGlvbnNdPVwib2JzLmZvcm1pb09wdGlvbnNcIlxuICAgIFtyZWFkT25seV09XCJvYnMucmVhZE9ubHlcIlxuICAgIChzdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiXG4gICAgKHJlYWR5KT1cImZvcm1SZWFkeSgkZXZlbnQpXCJcbiAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgIChuZXh0UGFnZSk9XCJuZXh0UGFnZSgpXCJcbiAgICAocHJldlBhZ2UpPVwicHJldlBhZ2UoKVwiXG4gID48L2Zvcm1pbz5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,68 @@
|
|
|
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 { Injectable } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject } from 'rxjs';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
export class FormIoLocalStorageService {
|
|
20
|
+
constructor() {
|
|
21
|
+
this._FORMIO_TOKEN_LOCAL_STORAGE_KEY = 'formioToken';
|
|
22
|
+
this._tokenSetInLocalStorage$ = new BehaviorSubject(false);
|
|
23
|
+
}
|
|
24
|
+
get tokenSetInLocalStorage$() {
|
|
25
|
+
return this._tokenSetInLocalStorage$.asObservable();
|
|
26
|
+
}
|
|
27
|
+
setTokenInLocalStorage(token) {
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
localStorage.setItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY, token);
|
|
30
|
+
this.checkIfTokenExistsInLocalStorage();
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
clearTokenFromLocalStorage() {
|
|
34
|
+
localStorage.removeItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY);
|
|
35
|
+
this.checkIfTokenIsRemovedFromLocalStorage();
|
|
36
|
+
}
|
|
37
|
+
getTokenFromLocalStorage() {
|
|
38
|
+
return localStorage.getItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY);
|
|
39
|
+
}
|
|
40
|
+
checkIfTokenExistsInLocalStorage() {
|
|
41
|
+
const maxChecks = 100;
|
|
42
|
+
let checks = 0;
|
|
43
|
+
if (this.getTokenFromLocalStorage()) {
|
|
44
|
+
this._tokenSetInLocalStorage$.next(true);
|
|
45
|
+
}
|
|
46
|
+
else if (checks <= maxChecks) {
|
|
47
|
+
checks++;
|
|
48
|
+
this.checkIfTokenExistsInLocalStorage();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
checkIfTokenIsRemovedFromLocalStorage() {
|
|
52
|
+
const maxChecks = 100;
|
|
53
|
+
let checks = 0;
|
|
54
|
+
if (this.getTokenFromLocalStorage() && checks <= maxChecks) {
|
|
55
|
+
checks++;
|
|
56
|
+
this.checkIfTokenIsRemovedFromLocalStorage();
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this._tokenSetInLocalStorage$.next(false);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
63
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService, decorators: [{
|
|
66
|
+
type: Injectable
|
|
67
|
+
}] });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pby1sb2NhbC1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2NvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW8vc2VydmljZXMvZm9ybS1pby1sb2NhbC1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7O0FBR2pELE1BQU0sT0FBTyx5QkFBeUI7SUFEdEM7UUFFbUIsb0NBQStCLEdBQUcsYUFBYSxDQUFDO1FBQ2hELDZCQUF3QixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0tBNkNqRjtJQTNDQyxJQUFXLHVCQUF1QjtRQUNoQyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRU0sc0JBQXNCLENBQUMsS0FBYTtRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sMEJBQTBCO1FBQy9CLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLHFDQUFxQyxFQUFFLENBQUM7SUFDL0MsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLGdDQUFnQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDdEIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWYsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRTtZQUNuQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO2FBQU0sSUFBSSxNQUFNLElBQUksU0FBUyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLENBQUM7U0FDekM7SUFDSCxDQUFDO0lBRU8scUNBQXFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUN0QixJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFZixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDMUQsTUFBTSxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMscUNBQXFDLEVBQUUsQ0FBQztTQUM5QzthQUFNO1lBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7K0dBOUNVLHlCQUF5QjttSEFBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1Jb0xvY2FsU3RvcmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF9GT1JNSU9fVE9LRU5fTE9DQUxfU1RPUkFHRV9LRVkgPSAnZm9ybWlvVG9rZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlblNldEluTG9jYWxTdG9yYWdlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5TZXRJbkxvY2FsU3RvcmFnZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuU2V0SW5Mb2NhbFN0b3JhZ2UkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFRva2VuSW5Mb2NhbFN0b3JhZ2UodG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fRk9STUlPX1RPS0VOX0xPQ0FMX1NUT1JBR0VfS0VZLCB0b2tlbik7XG4gICAgICB0aGlzLmNoZWNrSWZUb2tlbkV4aXN0c0luTG9jYWxTdG9yYWdlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJUb2tlbkZyb21Mb2NhbFN0b3JhZ2UoKTogdm9pZCB7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fRk9STUlPX1RPS0VOX0xPQ0FMX1NUT1JBR0VfS0VZKTtcbiAgICB0aGlzLmNoZWNrSWZUb2tlbklzUmVtb3ZlZEZyb21Mb2NhbFN0b3JhZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VG9rZW5Gcm9tTG9jYWxTdG9yYWdlKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9GT1JNSU9fVE9LRU5fTE9DQUxfU1RPUkFHRV9LRVkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmVG9rZW5FeGlzdHNJbkxvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXhDaGVja3MgPSAxMDA7XG4gICAgbGV0IGNoZWNrcyA9IDA7XG5cbiAgICBpZiAodGhpcy5nZXRUb2tlbkZyb21Mb2NhbFN0b3JhZ2UoKSkge1xuICAgICAgdGhpcy5fdG9rZW5TZXRJbkxvY2FsU3RvcmFnZSQubmV4dCh0cnVlKTtcbiAgICB9IGVsc2UgaWYgKGNoZWNrcyA8PSBtYXhDaGVja3MpIHtcbiAgICAgIGNoZWNrcysrO1xuICAgICAgdGhpcy5jaGVja0lmVG9rZW5FeGlzdHNJbkxvY2FsU3RvcmFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tJZlRva2VuSXNSZW1vdmVkRnJvbUxvY2FsU3RvcmFnZSgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXhDaGVja3MgPSAxMDA7XG4gICAgbGV0IGNoZWNrcyA9IDA7XG5cbiAgICBpZiAodGhpcy5nZXRUb2tlbkZyb21Mb2NhbFN0b3JhZ2UoKSAmJiBjaGVja3MgPD0gbWF4Q2hlY2tzKSB7XG4gICAgICBjaGVja3MrKztcbiAgICAgIHRoaXMuY2hlY2tJZlRva2VuSXNSZW1vdmVkRnJvbUxvY2FsU3RvcmFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90b2tlblNldEluTG9jYWxTdG9yYWdlJC5uZXh0KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -37,7 +37,7 @@ import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
|
|
|
37
37
|
import heatmap from 'heatmap.js-fixed/build/heatmap.js';
|
|
38
38
|
import * as i1$6 from '@valtimo/resource';
|
|
39
39
|
import { S3Resource, ResourceModule } from '@valtimo/resource';
|
|
40
|
-
import * as
|
|
40
|
+
import * as i9 from '@formio/angular';
|
|
41
41
|
import { Formio, Components, FormioModule, FormioAppConfig, createCustomFormioComponent, registerCustomFormioComponentWithClass, registerCustomFormioComponent } from '@formio/angular';
|
|
42
42
|
import jwt_decode from 'jwt-decode';
|
|
43
43
|
import Dropzone from 'dropzone';
|
|
@@ -5829,6 +5829,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
5829
5829
|
}]
|
|
5830
5830
|
}] });
|
|
5831
5831
|
|
|
5832
|
+
/*
|
|
5833
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
5834
|
+
*
|
|
5835
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5836
|
+
* you may not use this file except in compliance with the License.
|
|
5837
|
+
* You may obtain a copy of the License at
|
|
5838
|
+
*
|
|
5839
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
5840
|
+
*
|
|
5841
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
5842
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
5843
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
5844
|
+
* See the License for the specific language governing permissions and
|
|
5845
|
+
* limitations under the License.
|
|
5846
|
+
*/
|
|
5847
|
+
class FormIoLocalStorageService {
|
|
5848
|
+
constructor() {
|
|
5849
|
+
this._FORMIO_TOKEN_LOCAL_STORAGE_KEY = 'formioToken';
|
|
5850
|
+
this._tokenSetInLocalStorage$ = new BehaviorSubject(false);
|
|
5851
|
+
}
|
|
5852
|
+
get tokenSetInLocalStorage$() {
|
|
5853
|
+
return this._tokenSetInLocalStorage$.asObservable();
|
|
5854
|
+
}
|
|
5855
|
+
setTokenInLocalStorage(token) {
|
|
5856
|
+
setTimeout(() => {
|
|
5857
|
+
localStorage.setItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY, token);
|
|
5858
|
+
this.checkIfTokenExistsInLocalStorage();
|
|
5859
|
+
});
|
|
5860
|
+
}
|
|
5861
|
+
clearTokenFromLocalStorage() {
|
|
5862
|
+
localStorage.removeItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY);
|
|
5863
|
+
this.checkIfTokenIsRemovedFromLocalStorage();
|
|
5864
|
+
}
|
|
5865
|
+
getTokenFromLocalStorage() {
|
|
5866
|
+
return localStorage.getItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY);
|
|
5867
|
+
}
|
|
5868
|
+
checkIfTokenExistsInLocalStorage() {
|
|
5869
|
+
const maxChecks = 100;
|
|
5870
|
+
let checks = 0;
|
|
5871
|
+
if (this.getTokenFromLocalStorage()) {
|
|
5872
|
+
this._tokenSetInLocalStorage$.next(true);
|
|
5873
|
+
}
|
|
5874
|
+
else if (checks <= maxChecks) {
|
|
5875
|
+
checks++;
|
|
5876
|
+
this.checkIfTokenExistsInLocalStorage();
|
|
5877
|
+
}
|
|
5878
|
+
}
|
|
5879
|
+
checkIfTokenIsRemovedFromLocalStorage() {
|
|
5880
|
+
const maxChecks = 100;
|
|
5881
|
+
let checks = 0;
|
|
5882
|
+
if (this.getTokenFromLocalStorage() && checks <= maxChecks) {
|
|
5883
|
+
checks++;
|
|
5884
|
+
this.checkIfTokenIsRemovedFromLocalStorage();
|
|
5885
|
+
}
|
|
5886
|
+
else {
|
|
5887
|
+
this._tokenSetInLocalStorage$.next(false);
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5891
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService }); }
|
|
5892
|
+
}
|
|
5893
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormIoLocalStorageService, decorators: [{
|
|
5894
|
+
type: Injectable
|
|
5895
|
+
}] });
|
|
5896
|
+
|
|
5832
5897
|
/*
|
|
5833
5898
|
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
5834
5899
|
*
|
|
@@ -5924,15 +5989,16 @@ class FormioComponent {
|
|
|
5924
5989
|
this.readOnly$.next(readOnlyValue);
|
|
5925
5990
|
}
|
|
5926
5991
|
handleBeforeUnload() {
|
|
5927
|
-
this.clearTokenFromLocalStorage();
|
|
5992
|
+
this.localStorageService.clearTokenFromLocalStorage();
|
|
5928
5993
|
}
|
|
5929
|
-
constructor(userProviderService, logger, stateService, route, translateService, modalService) {
|
|
5994
|
+
constructor(userProviderService, logger, stateService, route, translateService, modalService, localStorageService) {
|
|
5930
5995
|
this.userProviderService = userProviderService;
|
|
5931
5996
|
this.logger = logger;
|
|
5932
5997
|
this.stateService = stateService;
|
|
5933
5998
|
this.route = route;
|
|
5934
5999
|
this.translateService = translateService;
|
|
5935
6000
|
this.modalService = modalService;
|
|
6001
|
+
this.localStorageService = localStorageService;
|
|
5936
6002
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
5937
6003
|
this.submit = new EventEmitter();
|
|
5938
6004
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
@@ -5943,7 +6009,6 @@ class FormioComponent {
|
|
|
5943
6009
|
this.options$ = new BehaviorSubject(undefined);
|
|
5944
6010
|
this.readOnly$ = new BehaviorSubject(false);
|
|
5945
6011
|
this.errors$ = new BehaviorSubject([]);
|
|
5946
|
-
this.tokenSetInLocalStorage$ = new BehaviorSubject(false);
|
|
5947
6012
|
this.currentLanguage$ = this.translateService.stream('key').pipe(map$1(() => this.translateService.currentLang), distinctUntilChanged());
|
|
5948
6013
|
this.formioOptions$ = combineLatest([
|
|
5949
6014
|
this.currentLanguage$,
|
|
@@ -5963,9 +6028,9 @@ class FormioComponent {
|
|
|
5963
6028
|
language,
|
|
5964
6029
|
};
|
|
5965
6030
|
}));
|
|
6031
|
+
this.tokenSetInLocalStorage$ = this.localStorageService.tokenSetInLocalStorage$;
|
|
5966
6032
|
this._subscriptions = new Subscription();
|
|
5967
6033
|
this._tokenTimerSubscription = new Subscription();
|
|
5968
|
-
this._FORMIO_TOKEN_LOCAL_STORAGE_KEY = 'formioToken';
|
|
5969
6034
|
}
|
|
5970
6035
|
ngOnInit() {
|
|
5971
6036
|
Formio.setProjectUrl(location.origin);
|
|
@@ -5987,7 +6052,7 @@ class FormioComponent {
|
|
|
5987
6052
|
this.unsubscribeFormRefresh();
|
|
5988
6053
|
this._tokenRefreshTimerSubscription?.unsubscribe();
|
|
5989
6054
|
this._subscriptions.unsubscribe();
|
|
5990
|
-
this.clearTokenFromLocalStorage();
|
|
6055
|
+
this.localStorageService.clearTokenFromLocalStorage();
|
|
5991
6056
|
}
|
|
5992
6057
|
showErrors(errors) {
|
|
5993
6058
|
this.errors$.next(errors);
|
|
@@ -6033,9 +6098,8 @@ class FormioComponent {
|
|
|
6033
6098
|
setToken(token) {
|
|
6034
6099
|
Formio.setUser(jwt_decode(token));
|
|
6035
6100
|
Formio.setToken(token);
|
|
6036
|
-
localStorage.setItem(this._FORMIO_TOKEN_LOCAL_STORAGE_KEY, token);
|
|
6037
6101
|
this.setTimerForTokenRefresh(token);
|
|
6038
|
-
this.
|
|
6102
|
+
this.localStorageService.setTokenInLocalStorage(token);
|
|
6039
6103
|
this.logger.debug('New token set for form.io.');
|
|
6040
6104
|
}
|
|
6041
6105
|
setTimerForTokenRefresh(token) {
|
|
@@ -6074,16 +6138,13 @@ class FormioComponent {
|
|
|
6074
6138
|
}
|
|
6075
6139
|
}));
|
|
6076
6140
|
}
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
}
|
|
6080
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, deps: [{ token: i8.UserProviderService }, { token: i2$4.NGXLogger }, { token: FormIoStateService }, { token: i1$5.ActivatedRoute }, { token: i1.TranslateService }, { token: ValtimoModalService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6081
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioComponent, selector: "valtimo-form-io", inputs: { options: "options", submission: "submission", form: "form", readOnly: "readOnly", formRefresh$: "formRefresh$" }, outputs: { submit: "submit", change: "change" }, host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8$2.FormioComponent, selector: "formio" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
6141
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, deps: [{ token: i8.UserProviderService }, { token: i2$4.NGXLogger }, { token: FormIoStateService }, { token: i1$5.ActivatedRoute }, { token: i1.TranslateService }, { token: ValtimoModalService }, { token: FormIoLocalStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6142
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioComponent, selector: "valtimo-form-io", inputs: { options: "options", submission: "submission", form: "form", readOnly: "readOnly", formRefresh$: "formRefresh$" }, outputs: { submit: "submit", change: "change" }, host: { listeners: { "window:beforeunload": "handleBeforeUnload($event)" } }, providers: [FormIoLocalStorageService], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i9.FormioComponent, selector: "formio" }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
6082
6143
|
}
|
|
6083
6144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioComponent, decorators: [{
|
|
6084
6145
|
type: Component,
|
|
6085
|
-
args: [{ selector: 'valtimo-form-io', template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n" }]
|
|
6086
|
-
}], ctorParameters: function () { return [{ type: i8.UserProviderService }, { type: i2$4.NGXLogger }, { type: FormIoStateService }, { type: i1$5.ActivatedRoute }, { type: i1.TranslateService }, { type: ValtimoModalService }]; }, propDecorators: { options: [{
|
|
6146
|
+
args: [{ selector: 'valtimo-form-io', providers: [FormIoLocalStorageService], template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"{\n currentLanguage: currentLanguage$ | async,\n formioOptions: formioOptions$ | async,\n submission: submission$ | async,\n readOnly: readOnly$ | async,\n form: form$ | async,\n errors: errors$ | async,\n tokenSetInLocalStorage: tokenSetInLocalStorage$ | async\n } as obs\"\n>\n <div *ngIf=\"obs.errors.length > 0\" class=\"alert alert-danger pt-5 pb-5 mb-2\">\n <ol>\n <li *ngFor=\"let error of obs.errors\">\n {{ error }}\n </li>\n </ol>\n </div>\n <formio\n *ngIf=\"obs.formioOptions && obs.form && obs.tokenSetInLocalStorage\"\n [submission]=\"obs.submission\"\n [form]=\"obs.form\"\n [refresh]=\"refreshForm\"\n [options]=\"obs.formioOptions\"\n [readOnly]=\"obs.readOnly\"\n (submit)=\"onSubmit($event)\"\n (ready)=\"formReady($event)\"\n (change)=\"onChange($event)\"\n (nextPage)=\"nextPage()\"\n (prevPage)=\"prevPage()\"\n ></formio>\n</div>\n" }]
|
|
6147
|
+
}], ctorParameters: function () { return [{ type: i8.UserProviderService }, { type: i2$4.NGXLogger }, { type: FormIoStateService }, { type: i1$5.ActivatedRoute }, { type: i1.TranslateService }, { type: ValtimoModalService }, { type: FormIoLocalStorageService }]; }, propDecorators: { options: [{
|
|
6087
6148
|
type: Input
|
|
6088
6149
|
}], submission: [{
|
|
6089
6150
|
type: Input
|
|
@@ -6155,7 +6216,7 @@ class FormioBuilderComponent {
|
|
|
6155
6216
|
this.change.emit(event);
|
|
6156
6217
|
}
|
|
6157
6218
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioBuilderComponent, deps: [{ token: i1.TranslateService }, { token: FormIoStateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6158
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioBuilderComponent, selector: "valtimo-form-io-builder", inputs: { form: "form" }, outputs: { change: "change" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 <form-builder\n [form]=\"form\"\n [rebuild]=\"triggerRebuild\"\n [options]=\"formioOptions$ | async\"\n (change)=\"onChange($event)\"\n ></form-builder>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type:
|
|
6219
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FormioBuilderComponent, selector: "valtimo-form-io-builder", inputs: { form: "form" }, outputs: { change: "change" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 <form-builder\n [form]=\"form\"\n [rebuild]=\"triggerRebuild\"\n [options]=\"formioOptions$ | async\"\n (change)=\"onChange($event)\"\n ></form-builder>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i9.FormBuilderComponent, selector: "form-builder", inputs: ["form", "options", "formbuilder", "noeval", "refresh", "rebuild"], outputs: ["change"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }] }); }
|
|
6159
6220
|
}
|
|
6160
6221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FormioBuilderComponent, decorators: [{
|
|
6161
6222
|
type: Component,
|