@valtimo/dossier 11.3.2 → 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/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +7 -7
- package/esm2022/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +47 -12
- package/esm2022/lib/components/dossier-detail/tab/audit/audit.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/tab/documents/documents.component.mjs +52 -16
- package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/tab/not-found/not-found.component.mjs +28 -0
- package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +14 -9
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +8 -12
- package/esm2022/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.mjs +8 -9
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +7 -7
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +78 -53
- package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +7 -7
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +18 -16
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +9 -9
- package/esm2022/lib/components/dossier-update/dossier-update.component.mjs +7 -7
- package/esm2022/lib/components/note-modal/note-modal.component.mjs +7 -7
- package/esm2022/lib/constants/case-status.constants.mjs +26 -0
- package/esm2022/lib/constants/case-tab-token.mjs +2 -2
- package/esm2022/lib/constants/dossier-list.constants.mjs +39 -0
- package/esm2022/lib/constants/index.mjs +18 -1
- package/esm2022/lib/constants/tab.mjs +2 -6
- package/esm2022/lib/dossier-routing.module.mjs +6 -6
- package/esm2022/lib/dossier.module.mjs +32 -29
- package/esm2022/lib/models/candidate-user.model.mjs +2 -2
- package/esm2022/lib/models/dossier-detail-tab.model.mjs +2 -4
- package/esm2022/lib/models/dossier-parameters.model.mjs +2 -2
- package/esm2022/lib/models/index.mjs +2 -3
- package/esm2022/lib/models/notes.model.mjs +2 -2
- package/esm2022/lib/models/search.model.mjs +2 -2
- package/esm2022/lib/models/tab-api.model.mjs +2 -2
- package/esm2022/lib/models/tabs.model.mjs +2 -2
- package/esm2022/lib/permissions/dossier-detail.permissions.mjs +2 -2
- package/esm2022/lib/permissions/index.mjs +2 -2
- package/esm2022/lib/pipes/index.mjs +2 -2
- package/esm2022/lib/pipes/tab-translate/index.mjs +2 -2
- package/esm2022/lib/pipes/tab-translate/tab-translate-pipe.module.mjs +6 -6
- package/esm2022/lib/pipes/tab-translate/tab-translate.pipe.mjs +6 -6
- package/esm2022/lib/services/dossier-bulk-assign.service.mjs +5 -5
- package/esm2022/lib/services/dossier-column.service.mjs +7 -7
- package/esm2022/lib/services/dossier-list-assignee.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-pagination.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-search.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-status.service.mjs +62 -0
- package/esm2022/lib/services/dossier-list.service.mjs +6 -6
- package/esm2022/lib/services/dossier-parameter.service.mjs +44 -18
- package/esm2022/lib/services/dossier-tab-api.service.mjs +20 -5
- package/esm2022/lib/services/dossier-tab.service.mjs +19 -11
- package/esm2022/lib/services/dossier.service.mjs +6 -6
- package/esm2022/lib/services/index.mjs +4 -3
- package/esm2022/lib/services/notes.service.mjs +6 -6
- package/esm2022/lib/services/start-modal.service.mjs +23 -8
- package/esm2022/public_api.mjs +2 -4
- package/fesm2022/valtimo-dossier.mjs +603 -797
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +13 -3
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/documents/documents.component.d.ts +16 -6
- package/lib/components/dossier-detail/tab/documents/documents.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/not-found/not-found.component.d.ts +6 -0
- package/lib/components/dossier-detail/tab/not-found/not-found.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/notes/notes.component.d.ts +2 -1
- package/lib/components/dossier-detail/tab/notes/notes.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts +1 -2
- package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +1 -1
- package/lib/components/dossier-list/dossier-list.component.d.ts +14 -15
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +2 -3
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/case-status.constants.d.ts +5 -0
- package/lib/constants/case-status.constants.d.ts.map +1 -0
- package/lib/constants/dossier-list.constants.d.ts +7 -0
- package/lib/constants/dossier-list.constants.d.ts.map +1 -0
- package/lib/constants/index.d.ts +2 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/constants/tab.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +23 -26
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/models/dossier-detail-tab.model.d.ts +0 -2
- package/lib/models/dossier-detail-tab.model.d.ts.map +1 -1
- package/lib/models/dossier-parameters.model.d.ts +1 -0
- package/lib/models/dossier-parameters.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +0 -1
- package/lib/models/index.d.ts.map +1 -1
- package/lib/services/dossier-list-status.service.d.ts +21 -0
- package/lib/services/dossier-list-status.service.d.ts.map +1 -0
- package/lib/services/dossier-list.service.d.ts +1 -1
- package/lib/services/dossier-list.service.d.ts.map +1 -1
- package/lib/services/dossier-parameter.service.d.ts +4 -2
- package/lib/services/dossier-parameter.service.d.ts.map +1 -1
- package/lib/services/dossier-tab-api.service.d.ts.map +1 -1
- package/lib/services/dossier-tab.service.d.ts +4 -3
- package/lib/services/dossier-tab.service.d.ts.map +1 -1
- package/lib/services/index.d.ts +2 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/start-modal.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/public_api.d.ts +0 -2
- package/public_api.d.ts.map +1 -1
- package/esm2022/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.mjs +0 -86
- package/esm2022/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +0 -144
- package/esm2022/lib/components/dossier-detail/tab/object-type/object-type.component.mjs +0 -121
- package/esm2022/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +0 -112
- package/esm2022/lib/models/zaakobjecten.model.mjs +0 -17
- package/esm2022/lib/services/file-sort.service.mjs +0 -39
- package/esm2022/lib/services/zaakobjecten.service.mjs +0 -44
- package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts +0 -30
- package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts +0 -55
- package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts +0 -32
- package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts +0 -32
- package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +0 -1
- package/lib/models/zaakobjecten.model.d.ts +0 -26
- package/lib/models/zaakobjecten.model.d.ts.map +0 -1
- package/lib/services/file-sort.service.d.ts +0 -11
- package/lib/services/file-sort.service.d.ts.map +0 -1
- package/lib/services/zaakobjecten.service.d.ts +0 -17
- package/lib/services/zaakobjecten.service.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnDestroy } from '@angular/core';
|
|
2
2
|
import { DossierParameters } from '../models';
|
|
3
|
-
import { Observable
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
4
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
5
5
|
import { AssigneeFilter, SearchFieldValues } from '@valtimo/config';
|
|
6
6
|
import { Pagination } from '@valtimo/components';
|
|
@@ -15,13 +15,15 @@ export declare class DossierParameterService implements OnDestroy {
|
|
|
15
15
|
get querySearchParams$(): Observable<SearchFieldValues>;
|
|
16
16
|
get queryPaginationParams$(): Observable<Pagination | null>;
|
|
17
17
|
get queryAssigneeParam$(): Observable<AssigneeFilter>;
|
|
18
|
-
|
|
18
|
+
get queryStatusParams$(): Observable<string[] | null>;
|
|
19
|
+
private _dossierParametersSubscription;
|
|
19
20
|
constructor(router: Router, route: ActivatedRoute);
|
|
20
21
|
ngOnDestroy(): void;
|
|
21
22
|
setSearchFieldValues(searchFieldValues: SearchFieldValues): void;
|
|
22
23
|
setSearchParameters(searchParameters: SearchFieldValues): void;
|
|
23
24
|
setPaginationParameters(pagination: Pagination): void;
|
|
24
25
|
setAssigneeParameter(assigneeFilter: AssigneeFilter): void;
|
|
26
|
+
setStatusParameter(statusKeyParameters: string[]): void;
|
|
25
27
|
clearSearchFieldValues(): void;
|
|
26
28
|
clearParameters(): void;
|
|
27
29
|
private openDossierParametersSubscription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dossier-parameter.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-parameter.service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,SAAS,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAKL,UAAU,
|
|
1
|
+
{"version":3,"file":"dossier-parameter.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-parameter.service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,SAAS,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,EAKL,UAAU,EAGX,MAAM,MAAM,CAAC;AACd,OAAO,EAAC,cAAc,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAa,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;;AAE/C,qBACa,uBAAwB,YAAW,SAAS;IAmFrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAnFxB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqD;IACzF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8C;IAElF,IAAW,kBAAkB,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAE7D;IAED,IAAW,kBAAkB,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAE7D;IAED,IAAW,kBAAkB,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAY7D;IAED,IAAW,sBAAsB,IAAI,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,CA0BjE;IAED,IAAW,mBAAmB,IAAI,UAAU,CAAC,cAAc,CAAC,CAU3D;IAED,IAAW,kBAAkB,IAAI,UAAU,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAY3D;IAED,OAAO,CAAC,8BAA8B,CAAgB;gBAGnC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc;IAKjC,WAAW,IAAI,IAAI;IAInB,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI;IAIhE,mBAAmB,CAAC,gBAAgB,EAAE,iBAAiB,GAAG,IAAI;IAgB9D,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAkBrD,oBAAoB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAS1D,kBAAkB,CAAC,mBAAmB,EAAE,MAAM,EAAE,GAAG,IAAI;IAgBvD,sBAAsB,IAAI,IAAI;IAI9B,eAAe,IAAI,IAAI;IAK9B,OAAO,CAAC,iCAAiC;IAMzC,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;yCAtLjB,uBAAuB;6CAAvB,uBAAuB;CA0MnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dossier-tab-api.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-tab-api.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dossier-tab-api.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-tab-api.service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,aAAa,EAAO,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;;AAErC,qBAGa,oBAAoB;IAI7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAoD;gBAG1E,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,UAAU;IAG5B,cAAc,CAAC,sBAAsB,KAAA,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;yCARjE,oBAAoB;6CAApB,oBAAoB;CAahC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnDestroy } from '@angular/core';
|
|
1
|
+
import { OnDestroy, Type } from '@angular/core';
|
|
2
2
|
import { CaseTabConfig, TabImpl } from '../models';
|
|
3
3
|
import { ConfigService } from '@valtimo/config';
|
|
4
4
|
import { ActivatedRoute } from '@angular/router';
|
|
@@ -8,6 +8,7 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
export declare class DossierTabService implements OnDestroy {
|
|
9
9
|
private readonly tabMap;
|
|
10
10
|
private readonly caseTabConfig;
|
|
11
|
+
private readonly zgwObjectTypeComponent;
|
|
11
12
|
private readonly configService;
|
|
12
13
|
private readonly route;
|
|
13
14
|
private readonly dossierTabApiService;
|
|
@@ -16,7 +17,7 @@ export declare class DossierTabService implements OnDestroy {
|
|
|
16
17
|
private readonly _tabs$;
|
|
17
18
|
private readonly _subscriptions;
|
|
18
19
|
get tabs$(): Observable<Array<TabImpl>>;
|
|
19
|
-
constructor(tabMap: Map<string, object>, caseTabConfig: CaseTabConfig, configService: ConfigService, route: ActivatedRoute, dossierTabApiService: DossierTabApiService);
|
|
20
|
+
constructor(tabMap: Map<string, object>, caseTabConfig: CaseTabConfig, zgwObjectTypeComponent: Type<any>, configService: ConfigService, route: ActivatedRoute, dossierTabApiService: DossierTabApiService);
|
|
20
21
|
ngOnDestroy(): void;
|
|
21
22
|
private getConfigurableTabs;
|
|
22
23
|
private getAllEnvironmentTabs;
|
|
@@ -25,7 +26,7 @@ export declare class DossierTabService implements OnDestroy {
|
|
|
25
26
|
private setApiTabs;
|
|
26
27
|
private filterTab;
|
|
27
28
|
private mapTab;
|
|
28
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DossierTabService, [null, { optional: true; }, null, null, null]>;
|
|
29
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DossierTabService, [null, { optional: true; }, { optional: true; }, null, null, null]>;
|
|
29
30
|
static ɵprov: i0.ɵɵInjectableDeclaration<DossierTabService>;
|
|
30
31
|
}
|
|
31
32
|
//# sourceMappingURL=dossier-tab.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dossier-tab.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-tab.service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,SAAS,
|
|
1
|
+
{"version":3,"file":"dossier-tab.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/dossier-tab.service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,SAAS,EAAY,IAAI,EAAC,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAyB,aAAa,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAC,aAAa,EAAkC,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAA+B,UAAU,EAAe,MAAM,MAAM,CAAC;;AAI5E,qBACa,iBAAkB,YAAW,SAAS;IAc9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACJ,OAAO,CAAC,QAAQ,CAAC,aAAa;IAGlE,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IApBvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAGvC;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoD;IAC3E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IAErD,IAAW,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAE7C;gBAGmC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAgB,EACvB,aAAa,EAAE,aAAa,EAGhE,sBAAsB,EAAE,IAAI,CAAC,GAAG,CAAC,EACjC,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,cAAc,EACrB,oBAAoB,EAAE,oBAAoB;IAOtD,WAAW;IAIlB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,sCAAsC;IAY9C,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,MAAM;yCAvGH,iBAAiB;6CAAjB,iBAAiB;CAqI7B"}
|
package/lib/services/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export * from './dossier-bulk-assign.service';
|
|
2
2
|
export * from './dossier-column.service';
|
|
3
|
-
export * from './zaakobjecten.service';
|
|
4
3
|
export * from './dossier-parameter.service';
|
|
5
4
|
export * from './dossier-list.service';
|
|
6
5
|
export * from './dossier-list-assignee.service';
|
|
@@ -9,4 +8,6 @@ export * from './dossier-list-search.service';
|
|
|
9
8
|
export * from './dossier-tab.service';
|
|
10
9
|
export * from './dossier.service';
|
|
11
10
|
export * from './dossier-tab-api.service';
|
|
11
|
+
export * from './dossier-list-status.service';
|
|
12
|
+
export * from './start-modal.service';
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/index.ts"],"names":[],"mappings":"AAgBA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/index.ts"],"names":[],"mappings":"AAgBA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-modal.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/start-modal.service.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"start-modal.service.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/dossier/src/lib/services/start-modal.service.ts"],"names":[],"mappings":";AAkBA,qBAGa,iBAAiB;IAC5B,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;yCAD/C,iBAAiB;6CAAjB,iBAAiB;CAuB7B"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@valtimo/dossier",
|
|
3
3
|
"license": "EUPL-1.2",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "12.0.0",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": "^
|
|
7
|
-
"@angular/core": "^
|
|
6
|
+
"@angular/common": "^17.2.2",
|
|
7
|
+
"@angular/core": "^17.2.2"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"ngx-csv": "0.3.2",
|
|
11
|
-
"ngx-toastr": "
|
|
12
|
-
"moment": "2.
|
|
11
|
+
"ngx-toastr": "18.0.0",
|
|
12
|
+
"moment": "2.30.1",
|
|
13
13
|
"@ngx-translate/core": "15.0.0",
|
|
14
14
|
"@ngx-translate/http-loader": "8.0.0",
|
|
15
15
|
"tslib": "2.6.2"
|
package/public_api.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
export * from './lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component';
|
|
2
2
|
export * from './lib/components/dossier-detail/dossier-detail.component';
|
|
3
3
|
export * from './lib/components/dossier-detail/tab/audit/audit.component';
|
|
4
|
-
export * from './lib/components/dossier-detail/tab/contact-moments/contact-moments.component';
|
|
5
4
|
export * from './lib/components/dossier-detail/tab/documents/documents.component';
|
|
6
5
|
export * from './lib/components/dossier-detail/tab/notes/notes.component';
|
|
7
6
|
export * from './lib/components/dossier-detail/tab/progress/progress.component';
|
|
8
7
|
export * from './lib/components/dossier-detail/tab/summary/summary.component';
|
|
9
|
-
export * from './lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component';
|
|
10
8
|
export * from './lib/components/dossier-list/dossier-list.component';
|
|
11
9
|
export * from './lib/constants';
|
|
12
10
|
export * from './lib/dossier.module';
|
package/public_api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../../projects/valtimo/dossier/src/public_api.ts"],"names":[],"mappings":"AAoBA,cAAc,gFAAgF,CAAC;AAC/F,cAAc,0DAA0D,CAAC;AACzE,cAAc,2DAA2D,CAAC;AAC1E,cAAc
|
|
1
|
+
{"version":3,"file":"public_api.d.ts","sourceRoot":"","sources":["../../../projects/valtimo/dossier/src/public_api.ts"],"names":[],"mappings":"AAoBA,cAAc,gFAAgF,CAAC;AAC/F,cAAc,0DAA0D,CAAC;AACzE,cAAc,2DAA2D,CAAC;AAC1E,cAAc,mEAAmE,CAAC;AAClF,cAAc,2DAA2D,CAAC;AAC1E,cAAc,iEAAiE,CAAC;AAChF,cAAc,+DAA+D,CAAC;AAC9E,cAAc,sDAAsD,CAAC;AACrE,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
|
package/esm2022/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.mjs
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2023 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, ViewChild } from '@angular/core';
|
|
17
|
-
import moment from 'moment';
|
|
18
|
-
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
19
|
-
import { TimelineItemImpl } from '@valtimo/components';
|
|
20
|
-
import { map, switchMap, take } from 'rxjs/operators';
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "@valtimo/contact-moment";
|
|
23
|
-
import * as i2 from "@valtimo/components";
|
|
24
|
-
import * as i3 from "@ngx-translate/core";
|
|
25
|
-
import * as i4 from "@angular/common";
|
|
26
|
-
import * as i5 from "@angular/forms";
|
|
27
|
-
moment.locale(localStorage.getItem('langKey') || '');
|
|
28
|
-
export class DossierDetailTabContactMomentsComponent {
|
|
29
|
-
constructor(contactMomentService, alertService, translateService) {
|
|
30
|
-
this.contactMomentService = contactMomentService;
|
|
31
|
-
this.alertService = alertService;
|
|
32
|
-
this.translateService = translateService;
|
|
33
|
-
this.refetchContactMoments$ = new BehaviorSubject('');
|
|
34
|
-
this.contactMoments$ = this.refetchContactMoments$.pipe(switchMap(() => this.contactMomentService.getContactMoments()), map(contactMoments => contactMoments.map(contactMoment => {
|
|
35
|
-
const registratieDatum = moment(contactMoment.registratiedatum);
|
|
36
|
-
return new TimelineItemImpl(registratieDatum.format('DD MMM YYYY'), registratieDatum.format('HH:mm'), contactMoment.medewerkerIdentificatie.achternaam, contactMoment.kanaal, contactMoment.tekst, null);
|
|
37
|
-
})));
|
|
38
|
-
this.text$ = new BehaviorSubject('');
|
|
39
|
-
this.channel$ = new BehaviorSubject('MAIL');
|
|
40
|
-
this.requestData$ = combineLatest([this.text$, this.channel$]);
|
|
41
|
-
this.valid$ = this.requestData$.pipe(map(([text, channel]) => !!(text && channel)));
|
|
42
|
-
this.disabled$ = new BehaviorSubject(false);
|
|
43
|
-
}
|
|
44
|
-
textChange(text) {
|
|
45
|
-
this.text$.next(text);
|
|
46
|
-
}
|
|
47
|
-
buttonClick() {
|
|
48
|
-
this.modal.show();
|
|
49
|
-
}
|
|
50
|
-
saveNote() {
|
|
51
|
-
this.disable();
|
|
52
|
-
this.requestData$.pipe(take(1)).subscribe(([text, channel]) => {
|
|
53
|
-
this.contactMomentService.saveContactMoment({ kanaal: channel, tekst: text }).subscribe(() => {
|
|
54
|
-
this.alertService.success(this.translateService.instant('dossier.contactMoments.saveSuccess'));
|
|
55
|
-
this.enable();
|
|
56
|
-
this.clear();
|
|
57
|
-
this.modal.hide();
|
|
58
|
-
this.refetchContactMoments();
|
|
59
|
-
}, () => {
|
|
60
|
-
this.enable();
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
disable() {
|
|
65
|
-
this.disabled$.next(true);
|
|
66
|
-
}
|
|
67
|
-
enable() {
|
|
68
|
-
this.disabled$.next(false);
|
|
69
|
-
}
|
|
70
|
-
clear() {
|
|
71
|
-
this.text$.next('');
|
|
72
|
-
}
|
|
73
|
-
refetchContactMoments() {
|
|
74
|
-
this.refetchContactMoments$.next('');
|
|
75
|
-
}
|
|
76
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabContactMomentsComponent, deps: [{ token: i1.ContactMomentService }, { token: i2.AlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabContactMomentsComponent, selector: "valtimo-dossier-detail-tab-contact-moments", viewQueries: [{ propertyName: "modal", first: true, predicate: ["contactMomentsNoteModal"], descendants: 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 class=\"contact-moments-container\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n <ng-container *ngTemplateOutlet=\"moments\"></ng-container>\n</div>\n\n<valtimo-modal\n #contactMomentsNoteModal\n [title]=\"'dossier.contactMoments.popupTitle' | translate\"\n [showFooter]=\"true\"\n [elementId]=\"'contact-moments-modal'\"\n>\n <div class=\"mt-2\" body>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n</valtimo-modal>\n\n<ng-template #body>\n <form>\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"body\">\n {{ 'dossier.contactMoments.noteText' | translate }}\n </label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <textarea\n [disabled]=\"disabled$ | async\"\n class=\"form-control\"\n id=\"body\"\n name=\"body\"\n [ngModel]=\"text$ | async\"\n (ngModelChange)=\"textChange($event)\"\n ></textarea>\n </div>\n </div>\n </form>\n</ng-template>\n\n<ng-template #footer>\n <button\n *ngIf=\"(disabled$ | async) === false; else loading\"\n class=\"btn btn-primary\"\n [disabled]=\"(valid$ | async) === false || (disabled$ | async)\"\n (click)=\"saveNote()\"\n >\n {{ 'dossier.contactMoments.saveButtonText' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-spinner [noMarginTop]=\"true\"></valtimo-spinner>\n</ng-template>\n\n<ng-template #buttons>\n <div class=\"btn-group mt-m3px mb-3 button-container\">\n <button class=\"btn btn-primary btn-space\" (click)=\"buttonClick()\">\n <i class=\"icon mdi mdi-note-plus\"></i>\n {{ 'dossier.contactMoments.makeNoteButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #moments>\n <div *ngIf=\"contactMoments$ | async as contactMoments; else loading\">\n <valtimo-timeline [items]=\"contactMoments\"></valtimo-timeline>\n </div>\n</ng-template>\n", styles: ["/*!\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 */.contact-moments-container{display:flex;flex-direction:column}.button-container{display:inline;align-self:flex-end}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.TimelineComponent, selector: "valtimo-timeline", inputs: ["items", "actions"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i2.ModalComponent, selector: "valtimo-modal", inputs: ["elementId", "title", "subtitle", "templateBelowSubtitle", "showFooter"] }, { kind: "component", type: i2.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
78
|
-
}
|
|
79
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabContactMomentsComponent, decorators: [{
|
|
80
|
-
type: Component,
|
|
81
|
-
args: [{ selector: 'valtimo-dossier-detail-tab-contact-moments', 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 class=\"contact-moments-container\">\n <ng-container *ngTemplateOutlet=\"buttons\"></ng-container>\n <ng-container *ngTemplateOutlet=\"moments\"></ng-container>\n</div>\n\n<valtimo-modal\n #contactMomentsNoteModal\n [title]=\"'dossier.contactMoments.popupTitle' | translate\"\n [showFooter]=\"true\"\n [elementId]=\"'contact-moments-modal'\"\n>\n <div class=\"mt-2\" body>\n <ng-container *ngTemplateOutlet=\"body\"></ng-container>\n </div>\n <div footer>\n <ng-container *ngTemplateOutlet=\"footer\"></ng-container>\n </div>\n</valtimo-modal>\n\n<ng-template #body>\n <form>\n <div class=\"form-group row\">\n <label class=\"col-12 col-sm-3 col-form-label text-sm-right\" for=\"body\">\n {{ 'dossier.contactMoments.noteText' | translate }}\n </label>\n <div class=\"col-12 col-sm-8 col-lg-6\">\n <textarea\n [disabled]=\"disabled$ | async\"\n class=\"form-control\"\n id=\"body\"\n name=\"body\"\n [ngModel]=\"text$ | async\"\n (ngModelChange)=\"textChange($event)\"\n ></textarea>\n </div>\n </div>\n </form>\n</ng-template>\n\n<ng-template #footer>\n <button\n *ngIf=\"(disabled$ | async) === false; else loading\"\n class=\"btn btn-primary\"\n [disabled]=\"(valid$ | async) === false || (disabled$ | async)\"\n (click)=\"saveNote()\"\n >\n {{ 'dossier.contactMoments.saveButtonText' | translate }}\n </button>\n</ng-template>\n\n<ng-template #loading>\n <valtimo-spinner [noMarginTop]=\"true\"></valtimo-spinner>\n</ng-template>\n\n<ng-template #buttons>\n <div class=\"btn-group mt-m3px mb-3 button-container\">\n <button class=\"btn btn-primary btn-space\" (click)=\"buttonClick()\">\n <i class=\"icon mdi mdi-note-plus\"></i>\n {{ 'dossier.contactMoments.makeNoteButton' | translate }}\n </button>\n </div>\n</ng-template>\n\n<ng-template #moments>\n <div *ngIf=\"contactMoments$ | async as contactMoments; else loading\">\n <valtimo-timeline [items]=\"contactMoments\"></valtimo-timeline>\n </div>\n</ng-template>\n", styles: ["/*!\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 */.contact-moments-container{display:flex;flex-direction:column}.button-container{display:inline;align-self:flex-end}\n"] }]
|
|
82
|
-
}], ctorParameters: function () { return [{ type: i1.ContactMomentService }, { type: i2.AlertService }, { type: i3.TranslateService }]; }, propDecorators: { modal: [{
|
|
83
|
-
type: ViewChild,
|
|
84
|
-
args: ['contactMomentsNoteModal']
|
|
85
|
-
}] } });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1tb21lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL2NvbnRhY3QtbW9tZW50cy9jb250YWN0LW1vbWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvY29udGFjdC1tb21lbnRzL2NvbnRhY3QtbW9tZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBc0IsTUFBTSxNQUFNLENBQUM7QUFDekUsT0FBTyxFQUErQixnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ25GLE9BQU8sRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7O0FBSXBELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQU9yRCxNQUFNLE9BQU8sdUNBQXVDO0lBNkJsRCxZQUNtQixvQkFBMEMsRUFDMUMsWUFBMEIsRUFDMUIsZ0JBQWtDO1FBRmxDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTdCNUMsMkJBQXNCLEdB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SSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBOUVVLHVDQUF1QzttR0FBdkMsdUNBQXVDLG9NQ2hDcEQsaXNGQW9GQTs7NEZEcERhLHVDQUF1QztrQkFMbkQsU0FBUzsrQkFDRSw0Q0FBNEM7cUtBS2hCLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21wb25lbnQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbnRhY3RNb21lbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb250YWN0LW1vbWVudCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge01vZGFsQ29tcG9uZW50LCBUaW1lbGluZUl0ZW0sIFRpbWVsaW5lSXRlbUltcGx9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHttYXAsIHN3aXRjaE1hcCwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBbGVydFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxubW9tZW50LmxvY2FsZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ0tleScpIHx8ICcnKTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItY29udGFjdC1tb21lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbnRhY3QtbW9tZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbnRhY3QtbW9tZW50cy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiQ29udGFjdE1vbWVudHNDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdjb250YWN0TW9tZW50c05vdGVNb2RhbCcpIG1vZGFsOiBNb2RhbENvbXBvbmVudDtcblxuICByZWFkb25seSByZWZldGNoQ29udGFjdE1vbWVudHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG4gIHJlYWRvbmx5IGNvbnRhY3RNb21lbnRzJDogT2JzZXJ2YWJsZTxBcnJheTxUaW1lbGluZUl0ZW0+PiA9IHRoaXMucmVmZXRjaENvbnRhY3RNb21lbnRzJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmNvbnRhY3RNb21lbnRTZXJ2aWNlLmdldENvbnRhY3RNb21lbnRzKCkpLFxuICAgIG1hcChjb250YWN0TW9tZW50cyA9PlxuICAgICAgY29udGFjdE1vbWVudHMubWFwKGNvbnRhY3RNb21lbnQgPT4ge1xuICAgICAgICBjb25zdCByZWdpc3RyYXRpZURhdHVtID0gbW9tZW50KGNvbnRhY3RNb21lbnQucmVnaXN0cmF0aWVkYXR1bSk7XG4gICAgICAgIHJldHVybiBuZXcgVGltZWxpbmVJdGVtSW1wbChcbiAgICAgICAgICByZWdpc3RyYXRpZURhdHVtLmZvcm1hdCgnREQgTU1NIFlZWVknKSxcbiAgICAgICAgICByZWdpc3RyYXRpZURhdHVtLmZvcm1hdCgnSEg6bW0nKSxcbiAgICAgICAgICBjb250YWN0TW9tZW50Lm1lZGV3ZXJrZXJJZGVudGlmaWNhdGllLmFjaHRlcm5hYW0sXG4gICAgICAgICAgY29udGFjdE1vbWVudC5rYW5hYWwsXG4gICAgICAgICAgY29udGFjdE1vbWVudC50ZWtzdCxcbiAgICAgICAgICBudWxsXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgIClcbiAgKTtcblxuICByZWFkb25seSB0ZXh0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNoYW5uZWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCdNQUlMJyk7XG4gIHJlYWRvbmx5IHJlcXVlc3REYXRhJDogT2JzZXJ2YWJsZTxBcnJheTxzdHJpbmc+PiA9IGNvbWJpbmVMYXRlc3QoW3RoaXMudGV4dCQsIHRoaXMuY2hhbm5lbCRdKTtcbiAgcmVhZG9ubHkgdmFsaWQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5yZXF1ZXN0RGF0YSQucGlwZShcbiAgICBtYXAoKFt0ZXh0LCBjaGFubmVsXSkgPT4gISEodGV4dCAmJiBjaGFubmVsKSlcbiAgKTtcbiAgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250YWN0TW9tZW50U2VydmljZTogQ29udGFjdE1vbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHRleHRDaGFuZ2UodGV4dDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50ZXh0JC5uZXh0KHRleHQpO1xuICB9XG5cbiAgYnV0dG9uQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5tb2RhbC5zaG93KCk7XG4gIH1cblxuICBzYXZlTm90ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMucmVxdWVzdERhdGEkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKChbdGV4dCwgY2hhbm5lbF0pID0+IHtcbiAgICAgIHRoaXMuY29udGFjdE1vbWVudFNlcnZpY2Uuc2F2ZUNvbnRhY3RNb21lbnQoe2thbmFhbDogY2hhbm5lbCwgdGVrc3Q6IHRleHR9KS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rvc3NpZXIuY29udGFjdE1vbWVudHMuc2F2ZVN1Y2Nlc3MnKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy5tb2RhbC5oaWRlKCk7XG4gICAgICAgICAgdGhpcy5yZWZldGNoQ29udGFjdE1vbWVudHMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLnRleHQkLm5leHQoJycpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWZldGNoQ29udGFjdE1vbWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZldGNoQ29udGFjdE1vbWVudHMkLm5leHQoJycpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjb250YWN0LW1vbWVudHMtY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zXCI+PC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb21lbnRzXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPHZhbHRpbW8tbW9kYWxcbiAgI2NvbnRhY3RNb21lbnRzTm90ZU1vZGFsXG4gIFt0aXRsZV09XCInZG9zc2llci5jb250YWN0TW9tZW50cy5wb3B1cFRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gIFtzaG93Rm9vdGVyXT1cInRydWVcIlxuICBbZWxlbWVudElkXT1cIidjb250YWN0LW1vbWVudHMtbW9kYWwnXCJcbj5cbiAgPGRpdiBjbGFzcz1cIm10LTJcIiBib2R5PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib2R5XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8ZGl2IGZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC92YWx0aW1vLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2JvZHk+XG4gIDxmb3JtPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHJvd1wiPlxuICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLTEyIGNvbC1zbS0zIGNvbC1mb3JtLWxhYmVsIHRleHQtc20tcmlnaHRcIiBmb3I9XCJib2R5XCI+XG4gICAgICAgIHt7ICdkb3NzaWVyLmNvbnRhY3RNb21lbnRzLm5vdGVUZXh0JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTggY29sLWxnLTZcIj5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJib2R5XCJcbiAgICAgICAgICBuYW1lPVwiYm9keVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwidGV4dCQgfCBhc3luY1wiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidGV4dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb290ZXI+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cIihkaXNhYmxlZCQgfCBhc3luYykgPT09IGZhbHNlOyBlbHNlIGxvYWRpbmdcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiKHZhbGlkJCB8IGFzeW5jKSA9PT0gZmFsc2UgfHwgKGRpc2FibGVkJCB8IGFzeW5jKVwiXG4gICAgKGNsaWNrKT1cInNhdmVOb3RlKClcIlxuICA+XG4gICAge3sgJ2Rvc3NpZXIuY29udGFjdE1vbWVudHMuc2F2ZUJ1dHRvblRleHQnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8dmFsdGltby1zcGlubmVyIFtub01hcmdpblRvcF09XCJ0cnVlXCI+PC92YWx0aW1vLXNwaW5uZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbnM+XG4gIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbXQtbTNweCBtYi0zIGJ1dHRvbi1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zcGFjZVwiIChjbGljayk9XCJidXR0b25DbGljaygpXCI+XG4gICAgICA8aSBjbGFzcz1cImljb24gbWRpIG1kaS1ub3RlLXBsdXNcIj48L2k+XG4gICAgICAmbmJzcDt7eyAnZG9zc2llci5jb250YWN0TW9tZW50cy5tYWtlTm90ZUJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vbWVudHM+XG4gIDxkaXYgKm5nSWY9XCJjb250YWN0TW9tZW50cyQgfCBhc3luYyBhcyBjb250YWN0TW9tZW50czsgZWxzZSBsb2FkaW5nXCI+XG4gICAgPHZhbHRpbW8tdGltZWxpbmUgW2l0ZW1zXT1cImNvbnRhY3RNb21lbnRzXCI+PC92YWx0aW1vLXRpbWVsaW5lPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2023 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 { catchError, map, switchMap, take, tap } from 'rxjs/operators';
|
|
18
|
-
import { BehaviorSubject, combineLatest, of, Subject } from 'rxjs';
|
|
19
|
-
import moment from 'moment';
|
|
20
|
-
import * as i0 from "@angular/core";
|
|
21
|
-
import * as i1 from "@angular/router";
|
|
22
|
-
import * as i2 from "@valtimo/document";
|
|
23
|
-
import * as i3 from "@valtimo/resource";
|
|
24
|
-
import * as i4 from "@ngx-translate/core";
|
|
25
|
-
import * as i5 from "@valtimo/config";
|
|
26
|
-
import * as i6 from "@valtimo/security";
|
|
27
|
-
import * as i7 from "../../../../services/file-sort.service";
|
|
28
|
-
import * as i8 from "@angular/common";
|
|
29
|
-
import * as i9 from "@valtimo/components";
|
|
30
|
-
import * as i10 from "carbon-components-angular";
|
|
31
|
-
export class DossierDetailTabDocumentenApiDocumentsComponent {
|
|
32
|
-
constructor(route, documentService, uploadProviderService, downloadService, translateService, configService, userProviderService, fileSortService) {
|
|
33
|
-
this.route = route;
|
|
34
|
-
this.documentService = documentService;
|
|
35
|
-
this.uploadProviderService = uploadProviderService;
|
|
36
|
-
this.downloadService = downloadService;
|
|
37
|
-
this.translateService = translateService;
|
|
38
|
-
this.configService = configService;
|
|
39
|
-
this.userProviderService = userProviderService;
|
|
40
|
-
this.fileSortService = fileSortService;
|
|
41
|
-
this.maxFileSize = this.configService?.config?.caseFileSizeUploadLimitMB || 5;
|
|
42
|
-
this.acceptedFiles = this.configService?.config?.caseFileUploadAcceptedFiles || null;
|
|
43
|
-
this.fields = [
|
|
44
|
-
{ key: 'fileName', label: 'File name' },
|
|
45
|
-
{ key: 'sizeInBytes', label: 'Size in bytes' },
|
|
46
|
-
{ key: 'createdOn', label: 'Created on' },
|
|
47
|
-
{ key: 'createdBy', label: 'Created by' },
|
|
48
|
-
];
|
|
49
|
-
this.uploadProcessLinkedSet = false;
|
|
50
|
-
this.uploading$ = new BehaviorSubject(false);
|
|
51
|
-
this.showModal$ = new Subject();
|
|
52
|
-
this.hideModal$ = new Subject();
|
|
53
|
-
this.modalDisabled$ = new BehaviorSubject(false);
|
|
54
|
-
this.fileToBeUploaded$ = new BehaviorSubject(null);
|
|
55
|
-
this.loading$ = new BehaviorSubject(true);
|
|
56
|
-
this.refetch$ = new BehaviorSubject(null);
|
|
57
|
-
this.relatedFiles$ = this.refetch$.pipe(switchMap(() => combineLatest([
|
|
58
|
-
this.documentService.getZakenApiDocuments(this.documentId),
|
|
59
|
-
this.translateService.stream('key'),
|
|
60
|
-
])), map(([relatedFiles]) => {
|
|
61
|
-
const translatedFiles = relatedFiles?.map(file => ({
|
|
62
|
-
...file,
|
|
63
|
-
createdBy: file.createdBy || this.translateService.instant('list.automaticallyGenerated'),
|
|
64
|
-
}));
|
|
65
|
-
return translatedFiles || [];
|
|
66
|
-
}), map(relatedFiles => this.fileSortService.sortRelatedFilesByDateDescending(relatedFiles)), map(relatedFiles => {
|
|
67
|
-
moment.locale(this.translateService.currentLang);
|
|
68
|
-
return relatedFiles.map(file => ({
|
|
69
|
-
...file,
|
|
70
|
-
createdOn: moment(new Date(file.createdOn)).format('L'),
|
|
71
|
-
}));
|
|
72
|
-
}), tap(() => this.loading$.next(false)), catchError(() => {
|
|
73
|
-
this.showZaakLinkWarning = true;
|
|
74
|
-
return of([]);
|
|
75
|
-
}));
|
|
76
|
-
this.downloadingFileIndexes$ = new BehaviorSubject([]);
|
|
77
|
-
const snapshot = this.route.snapshot.paramMap;
|
|
78
|
-
this.documentId = snapshot.get('documentId') || '';
|
|
79
|
-
this.documentDefinitionName = snapshot.get('documentDefinitionName') || '';
|
|
80
|
-
this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;
|
|
81
|
-
}
|
|
82
|
-
ngOnInit() {
|
|
83
|
-
this.refetchDocuments();
|
|
84
|
-
this.setUploadProcessLinked();
|
|
85
|
-
this.isUserAdmin();
|
|
86
|
-
}
|
|
87
|
-
fileSelected(file) {
|
|
88
|
-
this.fileToBeUploaded$.next(file);
|
|
89
|
-
this.showModal$.next(null);
|
|
90
|
-
}
|
|
91
|
-
downloadDocument(relatedFile, index) {
|
|
92
|
-
this.downloadingFileIndexes$.pipe(take(1)).subscribe(indexes => {
|
|
93
|
-
this.downloadingFileIndexes$.next([...indexes, index]);
|
|
94
|
-
const finished$ = this.downloadService.downloadFile(`${this.valtimoEndpointUri}v1/documenten-api/${relatedFile.pluginConfigurationId}/files/${relatedFile.fileId}/download`, relatedFile.fileName);
|
|
95
|
-
finished$.pipe(take(1)).subscribe(() => {
|
|
96
|
-
this.downloadingFileIndexes$.next(this.downloadingFileIndexes$.getValue().filter(downloadIndex => downloadIndex !== index));
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
metadataSet(metadata) {
|
|
101
|
-
this.uploading$.next(true);
|
|
102
|
-
this.hideModal$.next(null);
|
|
103
|
-
this.fileToBeUploaded$
|
|
104
|
-
.pipe(take(1))
|
|
105
|
-
.pipe(tap(file => {
|
|
106
|
-
this.uploadProviderService
|
|
107
|
-
.uploadFileWithMetadata(file, this.documentId, metadata)
|
|
108
|
-
.subscribe(() => {
|
|
109
|
-
this.refetchDocuments();
|
|
110
|
-
this.uploading$.next(false);
|
|
111
|
-
this.fileToBeUploaded$.next(null);
|
|
112
|
-
});
|
|
113
|
-
}))
|
|
114
|
-
.subscribe();
|
|
115
|
-
}
|
|
116
|
-
indexesIncludeIndex(indexes, index) {
|
|
117
|
-
return indexes.includes(index);
|
|
118
|
-
}
|
|
119
|
-
isUserAdmin() {
|
|
120
|
-
this.userProviderService.getUserSubject().subscribe(userIdentity => {
|
|
121
|
-
this.isAdmin = userIdentity.roles.includes('ROLE_ADMIN');
|
|
122
|
-
}, () => {
|
|
123
|
-
this.isAdmin = false;
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
refetchDocuments() {
|
|
127
|
-
this.refetch$.next(null);
|
|
128
|
-
}
|
|
129
|
-
setUploadProcessLinked() {
|
|
130
|
-
this.uploadProviderService.checkUploadProcessLink(this.documentDefinitionName).subscribe(linked => {
|
|
131
|
-
this.uploadProcessLinked = linked;
|
|
132
|
-
this.uploadProcessLinkedSet = true;
|
|
133
|
-
}, () => {
|
|
134
|
-
this.uploadProcessLinkedSet = true;
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DocumentService }, { token: i3.UploadProviderService }, { token: i3.DownloadService }, { token: i4.TranslateService }, { token: i5.ConfigService }, { token: i6.UserProviderService }, { token: i7.FileSortService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierDetailTabDocumentenApiDocumentsComponent, selector: "valtimo-dossier-detail-tab-documenten-api-documents", 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<ng-container *ngIf=\"{loading: loading$ | async} as obs\">\n <div *ngIf=\"uploadProcessLinkedSet && !uploadProcessLinked\">\n <div\n *ngIf=\"isAdmin\"\n [translate]=\"'dossier.documenten.noProcessLinked.adminRole'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n <div\n *ngIf=\"!isAdmin\"\n [translate]=\"'dossier.documenten.noProcessLinked.regularUser'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n </div>\n <div *ngIf=\"showZaakLinkWarning\">\n <div\n [translate]=\"'dossier.documenten.noZaakFound'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n </div>\n\n <valtimo-dropzone\n *ngIf=\"!obs.loading\"\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [camera]=\"false\"\n [disabled]=\"\n !uploadProcessLinkedSet || !uploadProcessLinked || obs.loading || showZaakLinkWarning\n \"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [maxFiles]=\"1\"\n [showMaxFileSize]=\"true\"\n [uploading]=\"uploading$ | async\"\n ></valtimo-dropzone>\n\n <valtimo-widget>\n <valtimo-list\n [ngClass]=\"{hidden: obs.loading}\"\n [fields]=\"fields\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [items]=\"relatedFiles$ | async\"\n [viewMode]=\"true\"\n [lastColumnTemplate]=\"downloadButton\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this dossier' | translate }}\n </h5>\n </div>\n </valtimo-list>\n <ng-container *ngTemplateOutlet=\"loading; context: {loading: obs.loading}\"></ng-container>\n </valtimo-widget>\n</ng-container>\n\n<valtimo-documenten-api-metadata-modal\n (metadata)=\"metadataSet($event)\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [hide$]=\"hideModal$\"\n [show$]=\"showModal$\"\n></valtimo-documenten-api-metadata-modal>\n\n<ng-template #loading let-loading=\"loading\">\n <div *ngIf=\"loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n class=\"download-button-container\"\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate\n }}<svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\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 */.hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.download-button-container{display:flex;width:100%;flex-direction:row;justify-content:flex-end;align-items:center;min-height:32px}\n"], dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i9.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i9.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i9.DropzoneComponent, selector: "valtimo-dropzone", inputs: ["title", "hideTitle", "subtitle", "externalError$", "maxFileSize", "showMaxFileSize", "acceptedFiles", "clear$", "disabled", "hideFilePreview", "uploading", "camera", "maxFiles"], outputs: ["fileSelected"] }, { kind: "component", type: i9.DocumentenApiMetadataModalComponent, selector: "valtimo-documenten-api-metadata-modal", inputs: ["show$", "hide$", "disabled$", "file$", "documentTitle", "disableDocumentTitle", "filename", "disableFilename", "author", "disableAuthor", "status", "disableStatus", "language", "disableLanguage", "documentType", "disableDocumentType", "description", "disableDescription", "confidentialityLevel", "disableConfidentialityLevel"], outputs: ["metadata"] }, { kind: "component", type: i10.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "directive", type: i10.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i10.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i8.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
|
|
139
|
-
}
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierDetailTabDocumentenApiDocumentsComponent, decorators: [{
|
|
141
|
-
type: Component,
|
|
142
|
-
args: [{ selector: 'valtimo-dossier-detail-tab-documenten-api-documents', 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<ng-container *ngIf=\"{loading: loading$ | async} as obs\">\n <div *ngIf=\"uploadProcessLinkedSet && !uploadProcessLinked\">\n <div\n *ngIf=\"isAdmin\"\n [translate]=\"'dossier.documenten.noProcessLinked.adminRole'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n <div\n *ngIf=\"!isAdmin\"\n [translate]=\"'dossier.documenten.noProcessLinked.regularUser'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n </div>\n <div *ngIf=\"showZaakLinkWarning\">\n <div\n [translate]=\"'dossier.documenten.noZaakFound'\"\n class=\"bg-warning text-black mb-2 p-3 text-center\"\n ></div>\n </div>\n\n <valtimo-dropzone\n *ngIf=\"!obs.loading\"\n (fileSelected)=\"fileSelected($event)\"\n [acceptedFiles]=\"acceptedFiles\"\n [camera]=\"false\"\n [disabled]=\"\n !uploadProcessLinkedSet || !uploadProcessLinked || obs.loading || showZaakLinkWarning\n \"\n [hideFilePreview]=\"true\"\n [hideTitle]=\"true\"\n [maxFileSize]=\"maxFileSize\"\n [maxFiles]=\"1\"\n [showMaxFileSize]=\"true\"\n [uploading]=\"uploading$ | async\"\n ></valtimo-dropzone>\n\n <valtimo-widget>\n <valtimo-list\n [ngClass]=\"{hidden: obs.loading}\"\n [fields]=\"fields\"\n [header]=\"true\"\n [isSearchable]=\"true\"\n [items]=\"relatedFiles$ | async\"\n [viewMode]=\"true\"\n [lastColumnTemplate]=\"downloadButton\"\n >\n <div header>\n <h3 class=\"list-header-title\">{{ 'Related documents' | translate }}</h3>\n <h5 class=\"list-header-description\">\n {{ 'Overview of all documents in this dossier' | translate }}\n </h5>\n </div>\n </valtimo-list>\n <ng-container *ngTemplateOutlet=\"loading; context: {loading: obs.loading}\"></ng-container>\n </valtimo-widget>\n</ng-container>\n\n<valtimo-documenten-api-metadata-modal\n (metadata)=\"metadataSet($event)\"\n [disabled$]=\"modalDisabled$\"\n [file$]=\"fileToBeUploaded$\"\n [hide$]=\"hideModal$\"\n [show$]=\"showModal$\"\n></valtimo-documenten-api-metadata-modal>\n\n<ng-template #loading let-loading=\"loading\">\n <div *ngIf=\"loading\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-template>\n\n<ng-template #downloadButton let-index=\"index\" let-item=\"item\">\n <div\n class=\"download-button-container\"\n *ngIf=\"{isDownloading: indexesIncludeIndex(downloadingFileIndexes$ | async, index)} as vars\"\n >\n <button\n *ngIf=\"!vars.isDownloading\"\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"downloadDocument(item, index)\"\n >\n {{ 'interface.download' | translate\n }}<svg class=\"cds--btn__icon\" cdsIcon=\"download\" size=\"16\"></svg>\n </button>\n <cds-loading size=\"sm\" *ngIf=\"vars.isDownloading\"></cds-loading>\n </div>\n</ng-template>\n", styles: ["/*!\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 */.hidden{display:none}.loading-container{padding:var(--cds-grid-margin);display:flex;align-items:center;justify-content:center}.download-button-container{display:flex;width:100%;flex-direction:row;justify-content:flex-end;align-items:center;min-height:32px}\n"] }]
|
|
143
|
-
}], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.DocumentService }, { type: i3.UploadProviderService }, { type: i3.DownloadService }, { type: i4.TranslateService }, { type: i5.ConfigService }, { type: i6.UserProviderService }, { type: i7.FileSortService }]; } });
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy9kb2N1bWVudGVuLWFwaS1kb2N1bWVudHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFJaEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRSxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTTdFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7O0FBTzVCLE1BQU0sT0FBTywrQ0FBK0M7SUEyRDFELFlBQ21CLEtBQXFCLEVBQ3JCLGVBQWdDLEVBQ2hDLHFCQUE0QyxFQUM1QyxlQUFnQyxFQUNoQyxnQkFBa0MsRUFDbEMsYUFBNEIsRUFDNUIsbUJBQXdDLEVBQ3hDLGVBQWdDO1FBUGhDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBaEVuQyxnQkFBVyxHQUFXLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixJQUFJLENBQUMsQ0FBQztRQUNqRixrQkFBYSxHQUMzQixJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSwyQkFBMkIsSUFBSSxJQUFJLENBQUM7UUFDM0QsV0FBTSxHQUFHO1lBQ2QsRUFBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUM7WUFDckMsRUFBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUM7WUFDNUMsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUM7WUFDdkMsRUFBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUM7U0FDeEMsQ0FBQztRQUtLLDJCQUFzQixHQUFHLEtBQUssQ0FBQztRQUU3QixlQUFVLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDakQsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDakMsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDakMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUMzRCxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDdEMsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFPLElBQUksQ0FBQyxDQUFDO1FBRXJELGtCQUFhLEdBQTJDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUMvRSxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1lBQzFELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FDSCxFQUNELEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUNyQixNQUFNLGVBQWUsR0FBRyxZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDakQsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUM7YUFDMUYsQ0FBQyxDQUFDLENBQUM7WUFFSixPQUFPLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQ0FBZ0MsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUN4RixHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDakIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFakQsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDL0IsR0FBRyxJQUFJO2dCQUNQLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQzthQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNwQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztZQUNoQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRU8sNEJBQXVCLEdBQUcsSUFBSSxlQUFlLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBWXhFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFDeEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQixDQUFDLFdBQXdCLEVBQUUsS0FBYTtRQUN0RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUM3RCxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUV2RCxNQUFNLFNBQVMsR0FBcUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQ25FLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixxQkFBcUIsV0FBVyxDQUFDLHFCQUFxQixVQUFVLFdBQVcsQ0FBQyxNQUFNLFdBQVcsRUFDdkgsV0FBVyxDQUFDLFFBQVEsQ0FDckIsQ0FBQztZQUVGLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDckMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FDL0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsQ0FDekYsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQStCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUI7YUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLElBQUksQ0FDSCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDVCxJQUFJLENBQUMscUJBQXFCO2lCQUN2QixzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7aUJBQ3ZELFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQ0g7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBc0IsRUFBRSxLQUFhO1FBQ3ZELE9BQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxDQUNqRCxZQUFZLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxFQUNELEdBQUcsRUFBRTtZQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxTQUFTLENBQ3RGLE1BQU0sQ0FBQyxFQUFFO1lBQ1AsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztZQUNsQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLENBQUMsRUFDRCxHQUFHLEVBQUU7WUFDSCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQzsrR0F4SlUsK0NBQStDO21HQUEvQywrQ0FBK0MsMkZDbEM1RCxrK0dBd0dBOzs0RkR0RWEsK0NBQStDO2tCQUwzRCxTQUFTOytCQUNFLHFEQUFxRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RG9jdW1lbnRTZXJ2aWNlLCBSZWxhdGVkRmlsZSwgUmVsYXRlZEZpbGVMaXN0SXRlbX0gZnJvbSAnQHZhbHRpbW8vZG9jdW1lbnQnO1xuaW1wb3J0IHtEb3dubG9hZFNlcnZpY2UsIFVwbG9hZFByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcmVzb3VyY2UnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBtYXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9jdW1lbnRlbkFwaU1ldGFkYXRhfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VXNlclByb3ZpZGVyU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtGaWxlU29ydFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2ZpbGUtc29ydC5zZXJ2aWNlJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLWRldGFpbC10YWItZG9jdW1lbnRlbi1hcGktZG9jdW1lbnRzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWRvY3VtZW50cy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyRGV0YWlsVGFiRG9jdW1lbnRlbkFwaURvY3VtZW50c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBtYXhGaWxlU2l6ZTogbnVtYmVyID0gdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VGaWxlU2l6ZVVwbG9hZExpbWl0TUIgfHwgNTtcbiAgcHVibGljIHJlYWRvbmx5IGFjY2VwdGVkRmlsZXM6IHN0cmluZyA9XG4gICAgdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmNhc2VGaWxlVXBsb2FkQWNjZXB0ZWRGaWxlcyB8fCBudWxsO1xuICBwdWJsaWMgZmllbGRzID0gW1xuICAgIHtrZXk6ICdmaWxlTmFtZScsIGxhYmVsOiAnRmlsZSBuYW1lJ30sXG4gICAge2tleTogJ3NpemVJbkJ5dGVzJywgbGFiZWw6ICdTaXplIGluIGJ5dGVzJ30sXG4gICAge2tleTogJ2NyZWF0ZWRPbicsIGxhYmVsOiAnQ3JlYXRlZCBvbid9LFxuICAgIHtrZXk6ICdjcmVhdGVkQnknLCBsYWJlbDogJ0NyZWF0ZWQgYnknfSxcbiAgXTtcbiAgcHJpdmF0ZSByZWFkb25seSB2YWx0aW1vRW5kcG9pbnRVcmkhOiBzdHJpbmc7XG5cbiAgcHVibGljIHNob3daYWFrTGlua1dhcm5pbmc6IGJvb2xlYW47XG4gIHB1YmxpYyBpc0FkbWluOiBib29sZWFuO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IGZhbHNlO1xuICBwdWJsaWMgdXBsb2FkUHJvY2Vzc0xpbmtlZCE6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHVwbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc2hvd01vZGFsJCA9IG5ldyBTdWJqZWN0PG51bGw+KCk7XG4gIHJlYWRvbmx5IGhpZGVNb2RhbCQgPSBuZXcgU3ViamVjdDxudWxsPigpO1xuICByZWFkb25seSBtb2RhbERpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBmaWxlVG9CZVVwbG9hZGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsZSB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmZXRjaCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWxhdGVkRmlsZXMkOiBPYnNlcnZhYmxlPEFycmF5PFJlbGF0ZWRGaWxlTGlzdEl0ZW0+PiA9IHRoaXMucmVmZXRjaCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKCkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmRvY3VtZW50U2VydmljZS5nZXRaYWtlbkFwaURvY3VtZW50cyh0aGlzLmRvY3VtZW50SWQpLFxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICAgIF0pXG4gICAgKSxcbiAgICBtYXAoKFtyZWxhdGVkRmlsZXNdKSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkRmlsZXMgPSByZWxhdGVkRmlsZXM/Lm1hcChmaWxlID0+ICh7XG4gICAgICAgIC4uLmZpbGUsXG4gICAgICAgIGNyZWF0ZWRCeTogZmlsZS5jcmVhdGVkQnkgfHwgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2xpc3QuYXV0b21hdGljYWxseUdlbmVyYXRlZCcpLFxuICAgICAgfSkpO1xuXG4gICAgICByZXR1cm4gdHJhbnNsYXRlZEZpbGVzIHx8IFtdO1xuICAgIH0pLFxuICAgIG1hcChyZWxhdGVkRmlsZXMgPT4gdGhpcy5maWxlU29ydFNlcnZpY2Uuc29ydFJlbGF0ZWRGaWxlc0J5RGF0ZURlc2NlbmRpbmcocmVsYXRlZEZpbGVzKSksXG4gICAgbWFwKHJlbGF0ZWRGaWxlcyA9PiB7XG4gICAgICBtb21lbnQubG9jYWxlKHRoaXMudHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyk7XG5cbiAgICAgIHJldHVybiByZWxhdGVkRmlsZXMubWFwKGZpbGUgPT4gKHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgY3JlYXRlZE9uOiBtb21lbnQobmV3IERhdGUoZmlsZS5jcmVhdGVkT24pKS5mb3JtYXQoJ0wnKSxcbiAgICAgIH0pKTtcbiAgICB9KSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKSksXG4gICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICB0aGlzLnNob3daYWFrTGlua1dhcm5pbmcgPSB0cnVlO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9KVxuICApO1xuXG4gIHJlYWRvbmx5IGRvd25sb2FkaW5nRmlsZUluZGV4ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTxudW1iZXI+PihbXSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudFNlcnZpY2U6IERvY3VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVwbG9hZFByb3ZpZGVyU2VydmljZTogVXBsb2FkUHJvdmlkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG93bmxvYWRTZXJ2aWNlOiBEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQcm92aWRlclNlcnZpY2U6IFVzZXJQcm92aWRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmaWxlU29ydFNlcnZpY2U6IEZpbGVTb3J0U2VydmljZVxuICApIHtcbiAgICBjb25zdCBzbmFwc2hvdCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXA7XG4gICAgdGhpcy5kb2N1bWVudElkID0gc25hcHNob3QuZ2V0KCdkb2N1bWVudElkJykgfHwgJyc7XG4gICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lID0gc25hcHNob3QuZ2V0KCdkb2N1bWVudERlZmluaXRpb25OYW1lJykgfHwgJyc7XG4gICAgdGhpcy52YWx0aW1vRW5kcG9pbnRVcmkgPSBjb25maWdTZXJ2aWNlLmNvbmZpZy52YWx0aW1vQXBpLmVuZHBvaW50VXJpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZldGNoRG9jdW1lbnRzKCk7XG4gICAgdGhpcy5zZXRVcGxvYWRQcm9jZXNzTGlua2VkKCk7XG4gICAgdGhpcy5pc1VzZXJBZG1pbigpO1xuICB9XG5cbiAgZmlsZVNlbGVjdGVkKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQoZmlsZSk7XG4gICAgdGhpcy5zaG93TW9kYWwkLm5leHQobnVsbCk7XG4gIH1cblxuICBkb3dubG9hZERvY3VtZW50KHJlbGF0ZWRGaWxlOiBSZWxhdGVkRmlsZSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuZG93bmxvYWRpbmdGaWxlSW5kZXhlcyQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoaW5kZXhlcyA9PiB7XG4gICAgICB0aGlzLmRvd25sb2FkaW5nRmlsZUluZGV4ZXMkLm5leHQoWy4uLmluZGV4ZXMsIGluZGV4XSk7XG5cbiAgICAgIGNvbnN0IGZpbmlzaGVkJDogT2JzZXJ2YWJsZTxudWxsPiA9IHRoaXMuZG93bmxvYWRTZXJ2aWNlLmRvd25sb2FkRmlsZShcbiAgICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvZG9jdW1lbnRlbi1hcGkvJHtyZWxhdGVkRmlsZS5wbHVnaW5Db25maWd1cmF0aW9uSWR9L2ZpbGVzLyR7cmVsYXRlZEZpbGUuZmlsZUlkfS9kb3dubG9hZGAsXG4gICAgICAgIHJlbGF0ZWRGaWxlLmZpbGVOYW1lXG4gICAgICApO1xuXG4gICAgICBmaW5pc2hlZCQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmRvd25sb2FkaW5nRmlsZUluZGV4ZXMkLm5leHQoXG4gICAgICAgICAgdGhpcy5kb3dubG9hZGluZ0ZpbGVJbmRleGVzJC5nZXRWYWx1ZSgpLmZpbHRlcihkb3dubG9hZEluZGV4ID0+IGRvd25sb2FkSW5kZXggIT09IGluZGV4KVxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBtZXRhZGF0YVNldChtZXRhZGF0YTogRG9jdW1lbnRlbkFwaU1ldGFkYXRhKTogdm9pZCB7XG4gICAgdGhpcy51cGxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5oaWRlTW9kYWwkLm5leHQobnVsbCk7XG5cbiAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChmaWxlID0+IHtcbiAgICAgICAgICB0aGlzLnVwbG9hZFByb3ZpZGVyU2VydmljZVxuICAgICAgICAgICAgLnVwbG9hZEZpbGVXaXRoTWV0YWRhdGEoZmlsZSwgdGhpcy5kb2N1bWVudElkLCBtZXRhZGF0YSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLnJlZmV0Y2hEb2N1bWVudHMoKTtcbiAgICAgICAgICAgICAgdGhpcy51cGxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICB0aGlzLmZpbGVUb0JlVXBsb2FkZWQkLm5leHQobnVsbCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGluZGV4ZXNJbmNsdWRlSW5kZXgoaW5kZXhlczogQXJyYXk8bnVtYmVyPiwgaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpbmRleGVzLmluY2x1ZGVzKGluZGV4KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1VzZXJBZG1pbigpIHtcbiAgICB0aGlzLnVzZXJQcm92aWRlclNlcnZpY2UuZ2V0VXNlclN1YmplY3QoKS5zdWJzY3JpYmUoXG4gICAgICB1c2VySWRlbnRpdHkgPT4ge1xuICAgICAgICB0aGlzLmlzQWRtaW4gPSB1c2VySWRlbnRpdHkucm9sZXMuaW5jbHVkZXMoJ1JPTEVfQURNSU4nKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNBZG1pbiA9IGZhbHNlO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlZmV0Y2hEb2N1bWVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5yZWZldGNoJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRVcGxvYWRQcm9jZXNzTGlua2VkKCk6IHZvaWQge1xuICAgIHRoaXMudXBsb2FkUHJvdmlkZXJTZXJ2aWNlLmNoZWNrVXBsb2FkUHJvY2Vzc0xpbmsodGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lKS5zdWJzY3JpYmUoXG4gICAgICBsaW5rZWQgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWQgPSBsaW5rZWQ7XG4gICAgICAgIHRoaXMudXBsb2FkUHJvY2Vzc0xpbmtlZFNldCA9IHRydWU7XG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIntsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPGRpdiAqbmdJZj1cInVwbG9hZFByb2Nlc3NMaW5rZWRTZXQgJiYgIXVwbG9hZFByb2Nlc3NMaW5rZWRcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cImlzQWRtaW5cIlxuICAgICAgW3RyYW5zbGF0ZV09XCInZG9zc2llci5kb2N1bWVudGVuLm5vUHJvY2Vzc0xpbmtlZC5hZG1pblJvbGUnXCJcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTIgcC0zIHRleHQtY2VudGVyXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCIhaXNBZG1pblwiXG4gICAgICBbdHJhbnNsYXRlXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9Qcm9jZXNzTGlua2VkLnJlZ3VsYXJVc2VyJ1wiXG4gICAgICBjbGFzcz1cImJnLXdhcm5pbmcgdGV4dC1ibGFjayBtYi0yIHAtMyB0ZXh0LWNlbnRlclwiXG4gICAgPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInNob3daYWFrTGlua1dhcm5pbmdcIj5cbiAgICA8ZGl2XG4gICAgICBbdHJhbnNsYXRlXT1cIidkb3NzaWVyLmRvY3VtZW50ZW4ubm9aYWFrRm91bmQnXCJcbiAgICAgIGNsYXNzPVwiYmctd2FybmluZyB0ZXh0LWJsYWNrIG1iLTIgcC0zIHRleHQtY2VudGVyXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDx2YWx0aW1vLWRyb3B6b25lXG4gICAgKm5nSWY9XCIhb2JzLmxvYWRpbmdcIlxuICAgIChmaWxlU2VsZWN0ZWQpPVwiZmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgIFthY2NlcHRlZEZpbGVzXT1cImFjY2VwdGVkRmlsZXNcIlxuICAgIFtjYW1lcmFdPVwiZmFsc2VcIlxuICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICF1cGxvYWRQcm9jZXNzTGlua2VkU2V0IHx8ICF1cGxvYWRQcm9jZXNzTGlua2VkIHx8IG9icy5sb2FkaW5nIHx8IHNob3daYWFrTGlua1dhcm5pbmdcbiAgICBcIlxuICAgIFtoaWRlRmlsZVByZXZpZXddPVwidHJ1ZVwiXG4gICAgW2hpZGVUaXRsZV09XCJ0cnVlXCJcbiAgICBbbWF4RmlsZVNpemVdPVwibWF4RmlsZVNpemVcIlxuICAgIFttYXhGaWxlc109XCIxXCJcbiAgICBbc2hvd01heEZpbGVTaXplXT1cInRydWVcIlxuICAgIFt1cGxvYWRpbmddPVwidXBsb2FkaW5nJCB8IGFzeW5jXCJcbiAgPjwvdmFsdGltby1kcm9wem9uZT5cblxuICA8dmFsdGltby13aWRnZXQ+XG4gICAgPHZhbHRpbW8tbGlzdFxuICAgICAgW25nQ2xhc3NdPVwie2hpZGRlbjogb2JzLmxvYWRpbmd9XCJcbiAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgIFtoZWFkZXJdPVwidHJ1ZVwiXG4gICAgICBbaXNTZWFyY2hhYmxlXT1cInRydWVcIlxuICAgICAgW2l0ZW1zXT1cInJlbGF0ZWRGaWxlcyQgfCBhc3luY1wiXG4gICAgICBbdmlld01vZGVdPVwidHJ1ZVwiXG4gICAgICBbbGFzdENvbHVtblRlbXBsYXRlXT1cImRvd25sb2FkQnV0dG9uXCJcbiAgICA+XG4gICAgICA8ZGl2IGhlYWRlcj5cbiAgICAgICAgPGgzIGNsYXNzPVwibGlzdC1oZWFkZXItdGl0bGVcIj57eyAnUmVsYXRlZCBkb2N1bWVudHMnIHwgdHJhbnNsYXRlIH19PC9oMz5cbiAgICAgICAgPGg1IGNsYXNzPVwibGlzdC1oZWFkZXItZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICB7eyAnT3ZlcnZpZXcgb2YgYWxsIGRvY3VtZW50cyBpbiB0aGlzIGRvc3NpZXInIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvaDU+XG4gICAgICA8L2Rpdj5cbiAgICA8L3ZhbHRpbW8tbGlzdD5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZzsgY29udGV4dDoge2xvYWRpbmc6IG9icy5sb2FkaW5nfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3ZhbHRpbW8td2lkZ2V0PlxuPC9uZy1jb250YWluZXI+XG5cbjx2YWx0aW1vLWRvY3VtZW50ZW4tYXBpLW1ldGFkYXRhLW1vZGFsXG4gIChtZXRhZGF0YSk9XCJtZXRhZGF0YVNldCgkZXZlbnQpXCJcbiAgW2Rpc2FibGVkJF09XCJtb2RhbERpc2FibGVkJFwiXG4gIFtmaWxlJF09XCJmaWxlVG9CZVVwbG9hZGVkJFwiXG4gIFtoaWRlJF09XCJoaWRlTW9kYWwkXCJcbiAgW3Nob3ckXT1cInNob3dNb2RhbCRcIlxuPjwvdmFsdGltby1kb2N1bWVudGVuLWFwaS1tZXRhZGF0YS1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nIGxldC1sb2FkaW5nPVwibG9hZGluZ1wiPlxuICA8ZGl2ICpuZ0lmPVwibG9hZGluZ1wiIGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICA8Y2RzLWxvYWRpbmc+PC9jZHMtbG9hZGluZz5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Rvd25sb2FkQnV0dG9uIGxldC1pbmRleD1cImluZGV4XCIgbGV0LWl0ZW09XCJpdGVtXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cImRvd25sb2FkLWJ1dHRvbi1jb250YWluZXJcIlxuICAgICpuZ0lmPVwie2lzRG93bmxvYWRpbmc6IGluZGV4ZXNJbmNsdWRlSW5kZXgoZG93bmxvYWRpbmdGaWxlSW5kZXhlcyQgfCBhc3luYywgaW5kZXgpfSBhcyB2YXJzXCJcbiAgPlxuICAgIDxidXR0b25cbiAgICAgICpuZ0lmPVwiIXZhcnMuaXNEb3dubG9hZGluZ1wiXG4gICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJzbVwiXG4gICAgICAoY2xpY2spPVwiZG93bmxvYWREb2N1bWVudChpdGVtLCBpbmRleClcIlxuICAgID5cbiAgICAgIHt7ICdpbnRlcmZhY2UuZG93bmxvYWQnIHwgdHJhbnNsYXRlXG4gICAgICB9fTxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJkb3dubG9hZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICAgIDxjZHMtbG9hZGluZyBzaXplPVwic21cIiAqbmdJZj1cInZhcnMuaXNEb3dubG9hZGluZ1wiPjwvY2RzLWxvYWRpbmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|