@smartsoft001/crud-shell-angular 1.1.748 → 1.1.752

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.
@@ -1,6 +1,7 @@
1
1
  import { ChangeDetectorRef, Component, ComponentFactoryResolver, ElementRef, Injector, NgModuleRef, QueryList, TemplateRef, ViewChild, ViewChildren, ViewContainerRef, } from "@angular/core";
2
2
  import { map, tap } from "rxjs/operators";
3
3
  import { Router } from "@angular/router";
4
+ import { Subject } from "rxjs";
4
5
  import { CreateDynamicComponent, DynamicComponentLoader, DynamicContentDirective, HardwareService, ListMode, MenuService, StyleService, } from "@smartsoft001/angular";
5
6
  import { getModelFieldsWithOptions, getModelOptions, } from "@smartsoft001/models";
6
7
  import { CrudFacade } from "../../+state/crud.facade";
@@ -39,6 +40,7 @@ export class ListComponent extends CreateDynamicComponent('crud-list-page') {
39
40
  this.searchService = searchService;
40
41
  this.moduleRef = moduleRef;
41
42
  this.componentFactoryResolver = componentFactoryResolver;
43
+ this._cleanMultiSelected$ = new Subject();
42
44
  this.filter$ = this.facade.filter$.pipe(tap((filter) => {
43
45
  this.filter = filter;
44
46
  }));
@@ -143,6 +145,7 @@ export class ListComponent extends CreateDynamicComponent('crud-list-page') {
143
145
  },
144
146
  list$: this.facade.list$,
145
147
  loading$: this.facade.loaded$.pipe(map((l) => !l)),
148
+ onCleanMultiSelected$: this._cleanMultiSelected$
146
149
  },
147
150
  cellPipe: this.config.list ? this.config.list.cellPipe : null,
148
151
  mode: this.config.list?.mode,
@@ -223,26 +226,30 @@ export class ListComponent extends CreateDynamicComponent('crud-list-page') {
223
226
  const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());
224
227
  const modelOptions = getModelOptions(this.config.type);
225
228
  const showFilters = fieldsWithOptions.some((x) => x.options?.list?.filter) || modelOptions?.filters?.length;
226
- const showMultiEdit = this.config.edit &&
227
- fieldsWithOptions.some((x) => x.options?.update?.multi) &&
228
- !this.hardwareService.isMobile &&
229
- (!this.config?.list?.mode ||
230
- this.config?.list?.mode === ListMode.desktop);
229
+ const showMultiEdit = this.config.list?.components?.multi ||
230
+ (this.config.edit &&
231
+ fieldsWithOptions.some((x) => x.options?.update?.multi) &&
232
+ !this.hardwareService.isMobile &&
233
+ (!this.config?.list?.mode ||
234
+ this.config?.list?.mode === ListMode.desktop));
231
235
  return [
232
236
  ...(showMultiEdit
233
237
  ? [
234
238
  {
235
239
  icon: "checkbox-outline",
236
240
  text: "multi",
237
- handler: async () => {
238
- this.listOptions = {
239
- ...this.listOptions,
240
- select: this.listOptions.select === "multi" ? null : "multi",
241
- };
241
+ handler: () => {
242
242
  this.facade.multiSelect([]);
243
- if (this.menuService.openedEnd)
244
- await this.menuService.closeEnd();
245
- this.cd.detectChanges();
243
+ this._cleanMultiSelected$.next();
244
+ setTimeout(async () => {
245
+ this.listOptions = {
246
+ ...this.listOptions,
247
+ select: this.listOptions.select === "multi" ? null : "multi",
248
+ };
249
+ if (this.menuService.openedEnd)
250
+ await this.menuService.closeEnd();
251
+ this.cd.detectChanges();
252
+ });
246
253
  },
247
254
  },
248
255
  ]
@@ -340,4 +347,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
340
347
  type: ViewChildren,
341
348
  args: [DynamicContentDirective, { read: DynamicContentDirective }]
342
349
  }] } });
343
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Msd0JBQXdCLEVBQUUsVUFBVSxFQUN0RCxRQUFRLEVBQUUsV0FBVyxFQUNiLFNBQVMsRUFBRSxXQUFXLEVBQzlCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6QyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUFFLHVCQUF1QixFQUMvQyxlQUFlLEVBSWYsUUFBUSxFQUNSLFdBQVcsRUFBRSxZQUFZLEdBQzFCLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBR2hCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDcEcsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGtDQUFrQyxD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dUJBQXVCLG9EQWxDNUQ7Ozs7Ozs7Ozs7O0dBV1Q7MkZBRVUsYUFBYTtrQkFmekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7aUJBQ0Y7OGZBaUJDLE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJOUQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJN0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbGVtZW50UmVmLFxuICBJbmplY3RvciwgTmdNb2R1bGVSZWYsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCAqIGFzIF8gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQge1xuICBDcmVhdGVEeW5hbWljQ29tcG9uZW50LFxuICBEeW5hbWljQ29tcG9uZW50TG9hZGVyLCBEeW5hbWljQ29udGVudERpcmVjdGl2ZSxcbiAgSGFyZHdhcmVTZXJ2aWNlLFxuICBJSWNvbkJ1dHRvbk9wdGlvbnMsXG4gIElMaXN0T3B0aW9ucyxcbiAgSVBhZ2VPcHRpb25zLFxuICBMaXN0TW9kZSxcbiAgTWVudVNlcnZpY2UsIFN0eWxlU2VydmljZSxcbn0gZnJvbSBcIkBzbWFydHNvZnQwMDEvYW5ndWxhclwiO1xuaW1wb3J0IHsgSUVudGl0eSB9IGZyb20gXCJAc21hcnRzb2Z0MDAxL2RvbWFpbi1jb3JlXCI7XG5pbXBvcnQge1xuICBnZXRNb2RlbEZpZWxkc1dpdGhPcHRpb25zLFxuICBnZXRNb2RlbE9wdGlvbnMsXG4gIElGaWVsZEVkaXRNZXRhZGF0YSxcbiAgSUZpZWxkTGlzdE1ldGFkYXRhLFxufSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9tb2RlbHNcIjtcblxuaW1wb3J0IHsgQ3J1ZEZhY2FkZSB9IGZyb20gXCIuLi8uLi8rc3RhdGUvY3J1ZC5mYWNhZGVcIjtcbmltcG9ydCB7IENydWRGdWxsQ29uZmlnIH0gZnJvbSBcIi4uLy4uL2NydWQuY29uZmlnXCI7XG5pbXBvcnQgeyBJQ3J1ZEZpbHRlciB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgRXhwb3J0Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZXhwb3J0L2V4cG9ydC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbHRlcnNDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9maWx0ZXJzL2ZpbHRlcnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNdWx0aXNlbGVjdENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9mYWN0b3JpZXMvbGlzdC1wYWdpbmF0aW9uL2xpc3QtcGFnaW5hdGlvbi5mYWN0b3J5XCI7XG5pbXBvcnQge1BhZ2VTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvcGFnZS9wYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudH0gZnJvbSBcIi4vYmFzZS9iYXNlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHtDcnVkU2VhcmNoU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NlYXJjaC9zZWFyY2guc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwic21hcnQtY3J1ZC1saXN0LXBhZ2VcIixcbiAgdGVtcGxhdGU6IGBcbiAgICA8c21hcnQtcGFnZSBbb3B0aW9uc109XCJwYWdlT3B0aW9uc1wiICpuZ0lmPVwiZmlsdGVyJCB8IGFzeW5jXCI+XG4gICAgICA8ZGl2ICN0b3BUcGw+PC9kaXY+XG4gICAgICA8c21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2UgKm5nSWY9XCJ0ZW1wbGF0ZSA9PT0gJ2RlZmF1bHQnXCIgW2xpc3RPcHRpb25zXT1cImxpc3RPcHRpb25zXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUcGxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvc21hcnQtY3J1ZC1saXN0LXN0YW5kYXJkLXBhZ2U+XG4gICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUcGw+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1jb250ZW50XCI+PC9kaXY+XG4gICAgPC9zbWFydC1wYWdlPlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIExpc3RDb21wb25lbnQ8VCBleHRlbmRzIElFbnRpdHk8c3RyaW5nPj5cbiAgICBleHRlbmRzIENyZWF0ZUR5bmFtaWNDb21wb25lbnQ8Q3J1ZExpc3RQYWdlQmFzZUNvbXBvbmVudDxhbnk+PignY3J1ZC1saXN0LXBhZ2UnKVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHBhZ2VPcHRpb25zOiBJUGFnZU9wdGlvbnM7XG4gIGxpc3RPcHRpb25zOiBJTGlzdE9wdGlvbnM8VD47XG4gIGZpbHRlcjogSUNydWRGaWx0ZXI7XG4gIGxpbmtzOiB7IG5leHQ7IHByZXYgfTtcblxuICBmaWx0ZXIkOiBPYnNlcnZhYmxlPElDcnVkRmlsdGVyPiA9IHRoaXMuZmFjYWRlLmZpbHRlciQucGlwZShcbiAgICB0YXAoKGZpbHRlcikgPT4ge1xuICAgICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgfSlcbiAgKTtcblxuICBAVmlld0NoaWxkKFwidG9wVHBsXCIsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICB0b3BUcGw6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQFZpZXdDaGlsZChcImNvbnRlbnRUcGxcIiwgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiBmYWxzZSB9KVxuICBjb250ZW50VHBsOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGRyZW4oRHluYW1pY0NvbnRlbnREaXJlY3RpdmUsIHsgcmVhZDogRHluYW1pY0NvbnRlbnREaXJlY3RpdmUgfSlcbiAgZHluYW1pY0NvbnRlbnRzID0gbmV3IFF1ZXJ5TGlzdDxEeW5hbWljQ29udGVudERpcmVjdGl2ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZhY2FkZTogQ3J1ZEZhY2FkZTxUPixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudExvYWRlcjogRHluYW1pY0NvbXBvbmVudExvYWRlcjxUPixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSxcbiAgICBwcml2YXRlIGhhcmR3YXJlU2VydmljZTogSGFyZHdhcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGFnaW5hdGlvbkZhY2FkZTogQ3J1ZExpc3RQYWdpbmF0aW9uRmFjdG9yeTxUPixcbiAgICBwcml2YXRlIHN0eWxlU2VydmljZTogU3R5bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHBhZ2VTZXJ2aWNlOiBQYWdlU2VydmljZTxUPixcbiAgICBwdWJsaWMgY29uZmlnOiBDcnVkRnVsbENvbmZpZzxUPixcbiAgICBwcml2YXRlIHNlYXJjaFNlcnZpY2U6IENydWRTZWFyY2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kdWxlUmVmOiBOZ01vZHVsZVJlZjxhbnk+LFxuICAgIHByaXZhdGUgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcbiAgKSB7XG4gICAgc3VwZXIoY2QsIG1vZHVsZVJlZiwgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyKTtcblxuICAgIHRoaXMuZmFjYWRlLmxpbmtzJC5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKChsaW5rcykgPT4ge1xuICAgICAgdGhpcy5saW5rcyA9IGxpbmtzO1xuICAgIH0pO1xuICB9XG5cbiAgcmVmcmVzaFByb3BlcnRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5iYXNlSW5zdGFuY2UubGlzdE9wdGlvbnMgPSB0aGlzLmxpc3RPcHRpb25zO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlU2VydmljZS5jaGVja1Blcm1pc3Npb25zKCk7XG5cbiAgICBsZXQgbmV3RmlsdGVyID0gbnVsbDtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5saXN0Py5yZXNldFF1ZXJ5ID09PSAnYmVmb3JlSW5pdCcpIHtcbiAgICAgIG5ld0ZpbHRlciA9IHtcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgcGFnaW5hdGlvbk1vZGU6IHRoaXMuY29uZmlnLmxpc3QucGFnaW5hdGlvbk1vZGUsXG4gICAgICAgIGxpbWl0OiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5jb25maWcucGFnaW5hdGlvbiA/IDAgOiBudWxsLFxuICAgICAgICBzb3J0Qnk6IHRoaXMuY29uZmlnLnNvcnQgPyB0aGlzLmNvbmZpZy5zb3J0W1wiZGVmYXVsdFwiXSA6IG51bGwsXG4gICAgICAgIHNvcnREZXNjOiB0aGlzLmNvbmZpZy5zb3J0ID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmlsdGVyKSB7XG4gICAgICBuZXdGaWx0ZXIgPSB0aGlzLmZpbHRlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3RmlsdGVyID0ge1xuICAgICAgICBwYWdpbmF0aW9uTW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/LmxpbWl0ID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5saW1pdCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCA6IG51bGwsXG4gICAgICAgIG9mZnNldDogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8ub2Zmc2V0IHx8IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/Lm9mZnNldCA9PT0gMFxuICAgICAgICAgICAgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLm9mZnNldCA6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24gPyAwIDogbnVsbCxcbiAgICAgICAgc29ydEJ5OiB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5zb3J0QnkgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnRCeSA6IHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHRcIl0gOiBudWxsLFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8uc29ydERlc2MgPyB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyLnNvcnREZXNjIDogIHRoaXMuY29uZmlnLnNvcnRcbiAgICAgICAgICAgID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHREZXNjXCJdIDogbnVsbCxcbiAgICAgICAgcXVlcnk6IHRoaXMuY29uZmlnLmJhc2VRdWVyeSA/IFsgLi4udGhpcy5jb25maWcuYmFzZVF1ZXJ5IF0gOiBbXSxcbiAgICAgICAgLi4udGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlclxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmZhY2FkZS5yZWFkKG5ld0ZpbHRlcik7XG5cbiAgICBjb25zdCBlbmRCdXR0b25zID0gdGhpcy5nZXRFbmRCdXR0b25zKCk7XG5cbiAgICB0aGlzLnBhZ2VPcHRpb25zID0ge1xuICAgICAgdGl0bGU6IHRoaXMuY29uZmlnLnRpdGxlLFxuICAgICAgc2VhcmNoOiB0aGlzLmNvbmZpZy5zZWFyY2hcbiAgICAgICAgPyB7XG4gICAgICAgICAgICB0ZXh0JDogdGhpcy5maWx0ZXIkLnBpcGUobWFwKChmKSA9PiAoZiA/IGYuc2VhcmNoVGV4dCA6IG51bGwpKSksXG4gICAgICAgICAgICBzZXQ6ICh0eHQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR4dCAhPT0gdGhpcy5maWx0ZXIuc2VhcmNoVGV4dClcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogdHh0LFxuICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIGVuZEJ1dHRvbnM6IGVuZEJ1dHRvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IGNvbXBpbGVkQ29tcG9uZW50cyA9XG4gICAgICBhd2FpdCB0aGlzLmR5bmFtaWNDb21wb25lbnRMb2FkZXIuZ2V0Q29tcG9uZW50c1dpdGhGYWN0b3JpZXMoe1xuICAgICAgICBjb21wb25lbnRzOiBbXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmRldGFpbHMgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgLi4uKHRoaXMuY29uZmlnLmxpc3QgJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICAgPyBbdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXVxuICAgICAgICAgICAgOiBbXSksXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgIHRoaXMubGlzdE9wdGlvbnMgPSB7XG4gICAgICBwcm92aWRlcjoge1xuICAgICAgICBnZXREYXRhOiAoZmlsdGVyKTogdm9pZCA9PiB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsID0ge1xuICAgICAgICAgICAgLi4udGhpcy5maWx0ZXIsXG4gICAgICAgICAgICAuLi5maWx0ZXIsXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLmZhY2FkZS5yZWFkKGdsb2JhbCk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ2hhbmdlTXVsdGlTZWxlY3RlZDogYXN5bmMgKGxpc3QpID0+IHtcbiAgICAgICAgICBpZiAobGlzdC5sZW5ndGggJiYgIXRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLm9wZW5FbmQoe1xuICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgY29tcG9uZW50OiBNdWx0aXNlbGVjdENvbXBvbmVudCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoIWxpc3QubGVuZ3RoICYmIHRoaXMubWVudVNlcnZpY2Uub3BlbmVkRW5kKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QobGlzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGxpc3QkOiB0aGlzLmZhY2FkZS5saXN0JCxcbiAgICAgICAgbG9hZGluZyQ6IHRoaXMuZmFjYWRlLmxvYWRlZCQucGlwZShtYXAoKGwpID0+ICFsKSksXG4gICAgICB9LFxuICAgICAgY2VsbFBpcGU6IHRoaXMuY29uZmlnLmxpc3QgPyB0aGlzLmNvbmZpZy5saXN0LmNlbGxQaXBlIDogbnVsbCxcbiAgICAgIG1vZGU6IHRoaXMuY29uZmlnLmxpc3Q/Lm1vZGUsXG4gICAgICB0eXBlOiB0aGlzLmNvbmZpZy50eXBlLFxuICAgICAgZGV0YWlsczogdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICA/IHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgIGdldERhdGE6IChpZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnNlbGVjdChpZCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNsZWFyRGF0YTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLnVuc2VsZWN0KCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGl0ZW0kOiB0aGlzLmZhY2FkZS5zZWxlY3RlZCQsXG4gICAgICAgICAgICAgIGxvYWRpbmckOiB0aGlzLmZhY2FkZS5sb2FkZWQkLnBpcGUobWFwKChsKSA9PiAhbCkpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBvbmVudEZhY3Rvcmllczoge1xuICAgICAgICAgICAgICB0b3A6XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgICBib3R0b206XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlscyAmJlxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICAgICAgICAgIChjYykgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmNvbXBvbmVudCA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbVxuICAgICAgICAgICAgICAgICAgICApLmZhY3RvcnlcbiAgICAgICAgICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBpdGVtOlxuICAgICAgICAhIXRoaXMuY29uZmlnLmVkaXQgfHwgdGhpcy5jb25maWcuZGV0YWlsc1xuICAgICAgICAgID8ge1xuICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcm91dGluZ1ByZWZpeDogXCIvXCIgKyB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdC51cmwgKyBcIi9cIixcbiAgICAgICAgICAgICAgICBlZGl0OiAhIXRoaXMuY29uZmlnLmVkaXQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiBudWxsLFxuICAgICAgcmVtb3ZlOiB0aGlzLmNvbmZpZy5yZW1vdmVcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBwcm92aWRlcjoge1xuICAgICAgICAgICAgICBpbnZva2U6IChpZCkgPT4gdGhpcy5mYWNhZGUuZGVsZXRlKGlkKSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBwYWdpbmF0aW9uOiBhd2FpdCB0aGlzLnBhZ2luYXRpb25GYWNhZGUuY3JlYXRlKHtcbiAgICAgICAgbW9kZTogdGhpcy5jb25maWcubGlzdC5wYWdpbmF0aW9uTW9kZSxcbiAgICAgICAgbGltaXQ6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ubGltaXQsXG4gICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgZ2V0RmlsdGVyOiAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXI7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXRMaW5rczogKCkgPT4gdGhpcy5saW5rcyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgc29ydDogdGhpcy5jb25maWcuc29ydCxcbiAgICB9O1xuXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG5cbiAgICB0aGlzLmluaXRDbG9zZU1lbnUoKTtcbiAgICB0aGlzLmluaXRUb3BDb21wb25lbnQoY29tcGlsZWRDb21wb25lbnRzKTtcblxuICAgIHRoaXMucmVmcmVzaER5bmFtaWNJbnN0YW5jZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2xvc2VNZW51KCkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKHRoaXMudGFrZVVudGlsRGVzdHJveSkuc3Vic2NyaWJlKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2xlYXIoKSB7XG4gICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5jbG9zZUVuZCgpO1xuXG4gICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgIC4uLnRoaXMubGlzdE9wdGlvbnMsXG4gICAgICBzZWxlY3Q6IG51bGwsXG4gICAgfTtcblxuICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RW5kQnV0dG9ucygpOiBBcnJheTxJSWNvbkJ1dHRvbk9wdGlvbnM+IHtcbiAgICBjb25zdCBmaWVsZHNXaXRoT3B0aW9ucyA9IGdldE1vZGVsRmllbGRzV2l0aE9wdGlvbnMobmV3IHRoaXMuY29uZmlnLnR5cGUoKSk7XG4gICAgY29uc3QgbW9kZWxPcHRpb25zID0gZ2V0TW9kZWxPcHRpb25zKHRoaXMuY29uZmlnLnR5cGUpO1xuXG4gICAgY29uc3Qgc2hvd0ZpbHRlcnMgPVxuICAgICAgZmllbGRzV2l0aE9wdGlvbnMuc29tZShcbiAgICAgICAgKHgpID0+ICh4Lm9wdGlvbnM/Lmxpc3QgYXMgSUZpZWxkTGlzdE1ldGFkYXRhKT8uZmlsdGVyXG4gICAgICApIHx8IG1vZGVsT3B0aW9ucz8uZmlsdGVycz8ubGVuZ3RoO1xuXG4gICAgY29uc3Qgc2hvd011bHRpRWRpdCA9XG4gICAgICB0aGlzLmNvbmZpZy5lZGl0ICYmXG4gICAgICBmaWVsZHNXaXRoT3B0aW9ucy5zb21lKFxuICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8udXBkYXRlIGFzIElGaWVsZEVkaXRNZXRhZGF0YSk/Lm11bHRpXG4gICAgICApICYmXG4gICAgICAhdGhpcy5oYXJkd2FyZVNlcnZpY2UuaXNNb2JpbGUgJiZcbiAgICAgICghdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgfHxcbiAgICAgICAgdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgPT09IExpc3RNb2RlLmRlc2t0b3ApO1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihzaG93TXVsdGlFZGl0XG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBcImNoZWNrYm94LW91dGxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJtdWx0aVwiLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMubGlzdE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRoaXMubGlzdE9wdGlvbnMuc2VsZWN0ID09PSBcIm11bHRpXCIgPyBudWxsIDogXCJtdWx0aVwiLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QoW10pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1lbnVTZXJ2aWNlLm9wZW5lZEVuZClcbiAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UuY2xvc2VFbmQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLihzaG93RmlsdGVyc1xuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJmaWx0ZXItb3V0bGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0OiBcImZpbHRlcnNcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2Uub3BlbkVuZCh7XG4gICAgICAgICAgICAgICAgICBpbmplY3RvcjogdGhpcy5pbmplY3RvcixcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogRmlsdGVyc0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5hZGRcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGljb246IFwiYWRkXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiYWRkXCIsXG4gICAgICAgICAgICAgIGhhbmRsZXI6ICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAgICAgICAgICAgICBcIi9cIiArIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCArIFwiL2FkZFwiLFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmV4cG9ydFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdGV4dDogXCJleHBvcnRcIixcbiAgICAgICAgICAgICAgaWNvbjogXCJkb3dubG9hZC1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHR5cGU6IFwicG9wb3ZlclwiIGFzIFwicG9wb3ZlclwiLFxuICAgICAgICAgICAgICBjb21wb25lbnQ6IEV4cG9ydENvbXBvbmVudCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXVxuICAgICAgICA6IFtdKSxcbiAgICAgIC4uLih0aGlzLmNvbmZpZy5idXR0b25zID8gdGhpcy5jb25maWcuYnV0dG9ucyA6IFtdKSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0VG9wQ29tcG9uZW50KFxuICAgIGNvbXBpbGVkQ29tcG9uZW50czoge1xuICAgICAgY29tcG9uZW50OiBhbnk7XG4gICAgICBmYWN0b3J5OiBDb21wb25lbnRGYWN0b3J5PGFueT47XG4gICAgfVtdXG4gICkge1xuICAgIGNvbnN0IGZhY3RvcnkgPVxuICAgICAgdGhpcy5jb25maWcubGlzdCAmJlxuICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgIHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICA/IGNvbXBpbGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgKGNjKSA9PiBjYy5jb21wb25lbnQgPT09IHRoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcFxuICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICA6IG51bGw7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmIChmYWN0b3J5ICYmICF0aGlzLnRvcFRwbC5nZXQoMCkpIHtcbiAgICAgICAgdGhpcy50b3BUcGwuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NydWQvc2hlbGwvYW5ndWxhci9zcmMvbGliL3BhZ2VzL2xpc3QvbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1Msd0JBQXdCLEVBQUUsVUFBVSxFQUN0RCxRQUFRLEVBQUUsV0FBVyxFQUNiLFNBQVMsRUFBRSxXQUFXLEVBQzlCLFNBQVMsRUFBRSxZQUFZLEVBQ3ZCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQy9DLGVBQWUsRUFJZixRQUFRLEVBQ1IsV0FBVyxFQUFFLFlBQVksR0FDMUIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQixPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLGVBQWUsR0FHaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUMxRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5REFBeUQsQ0FB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QUMsQ0FBQyxJQUFJLENBQUM7UUFFWCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2dKQWhXVSxhQUFhO29JQUFiLGFBQWEseUlBaUJLLGdCQUFnQixtR0FHWixXQUFXLGtEQUc5Qix1QkFBdUIsMkJBQVUsdUJBQXVCLG9EQXBDNUQ7Ozs7Ozs7Ozs7O0dBV1Q7MkZBRVUsYUFBYTtrQkFmekIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0dBV1Q7aUJBQ0Y7OGZBbUJDLE1BQU07c0JBREwsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJOUQsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFJN0QsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50RmFjdG9yeSwgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLCBFbGVtZW50UmVmLFxuICBJbmplY3RvciwgTmdNb2R1bGVSZWYsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBRdWVyeUxpc3QsIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsIFZpZXdDaGlsZHJlbixcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcblxuaW1wb3J0IHtcbiAgQ3JlYXRlRHluYW1pY0NvbXBvbmVudCxcbiAgRHluYW1pY0NvbXBvbmVudExvYWRlciwgRHluYW1pY0NvbnRlbnREaXJlY3RpdmUsXG4gIEhhcmR3YXJlU2VydmljZSxcbiAgSUljb25CdXR0b25PcHRpb25zLFxuICBJTGlzdE9wdGlvbnMsXG4gIElQYWdlT3B0aW9ucyxcbiAgTGlzdE1vZGUsXG4gIE1lbnVTZXJ2aWNlLCBTdHlsZVNlcnZpY2UsXG59IGZyb20gXCJAc21hcnRzb2Z0MDAxL2FuZ3VsYXJcIjtcbmltcG9ydCB7IElFbnRpdHkgfSBmcm9tIFwiQHNtYXJ0c29mdDAwMS9kb21haW4tY29yZVwiO1xuaW1wb3J0IHtcbiAgZ2V0TW9kZWxGaWVsZHNXaXRoT3B0aW9ucyxcbiAgZ2V0TW9kZWxPcHRpb25zLFxuICBJRmllbGRFZGl0TWV0YWRhdGEsXG4gIElGaWVsZExpc3RNZXRhZGF0YSxcbn0gZnJvbSBcIkBzbWFydHNvZnQwMDEvbW9kZWxzXCI7XG5cbmltcG9ydCB7IENydWRGYWNhZGUgfSBmcm9tIFwiLi4vLi4vK3N0YXRlL2NydWQuZmFjYWRlXCI7XG5pbXBvcnQgeyBDcnVkRnVsbENvbmZpZyB9IGZyb20gXCIuLi8uLi9jcnVkLmNvbmZpZ1wiO1xuaW1wb3J0IHsgSUNydWRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IEV4cG9ydENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2V4cG9ydC9leHBvcnQuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZmlsdGVycy9maWx0ZXJzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTXVsdGlzZWxlY3RDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9tdWx0aXNlbGVjdC9tdWx0aXNlbGVjdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IENydWRMaXN0UGFnaW5hdGlvbkZhY3RvcnkgfSBmcm9tIFwiLi4vLi4vZmFjdG9yaWVzL2xpc3QtcGFnaW5hdGlvbi9saXN0LXBhZ2luYXRpb24uZmFjdG9yeVwiO1xuaW1wb3J0IHtQYWdlU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3BhZ2UvcGFnZS5zZXJ2aWNlXCI7XG5pbXBvcnQge0NydWRMaXN0UGFnZUJhc2VDb21wb25lbnR9IGZyb20gXCIuL2Jhc2UvYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7Q3J1ZFNlYXJjaFNlcnZpY2V9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zZWFyY2gvc2VhcmNoLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInNtYXJ0LWNydWQtbGlzdC1wYWdlXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPHNtYXJ0LXBhZ2UgW29wdGlvbnNdPVwicGFnZU9wdGlvbnNcIiAqbmdJZj1cImZpbHRlciQgfCBhc3luY1wiPlxuICAgICAgPGRpdiAjdG9wVHBsPjwvZGl2PlxuICAgICAgPHNtYXJ0LWNydWQtbGlzdC1zdGFuZGFyZC1wYWdlICpuZ0lmPVwidGVtcGxhdGUgPT09ICdkZWZhdWx0J1wiIFtsaXN0T3B0aW9uc109XCJsaXN0T3B0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50VHBsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L3NtYXJ0LWNydWQtbGlzdC1zdGFuZGFyZC1wYWdlPlxuICAgICAgPG5nLXRlbXBsYXRlICNjb250ZW50VHBsPlxuICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtY29udGVudFwiPjwvZGl2PlxuICAgIDwvc21hcnQtcGFnZT5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBMaXN0Q29tcG9uZW50PFQgZXh0ZW5kcyBJRW50aXR5PHN0cmluZz4+XG4gICAgZXh0ZW5kcyBDcmVhdGVEeW5hbWljQ29tcG9uZW50PENydWRMaXN0UGFnZUJhc2VDb21wb25lbnQ8YW55Pj4oJ2NydWQtbGlzdC1wYWdlJylcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBwcml2YXRlIF9jbGVhbk11bHRpU2VsZWN0ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwYWdlT3B0aW9uczogSVBhZ2VPcHRpb25zO1xuICBsaXN0T3B0aW9uczogSUxpc3RPcHRpb25zPFQ+O1xuICBmaWx0ZXI6IElDcnVkRmlsdGVyO1xuICBsaW5rczogeyBuZXh0OyBwcmV2IH07XG5cbiAgZmlsdGVyJDogT2JzZXJ2YWJsZTxJQ3J1ZEZpbHRlcj4gPSB0aGlzLmZhY2FkZS5maWx0ZXIkLnBpcGUoXG4gICAgdGFwKChmaWx0ZXIpID0+IHtcbiAgICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xuICAgIH0pXG4gICk7XG5cbiAgQFZpZXdDaGlsZChcInRvcFRwbFwiLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgdG9wVHBsOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBWaWV3Q2hpbGQoXCJjb250ZW50VHBsXCIsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgY29udGVudFRwbDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkcmVuKER5bmFtaWNDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IER5bmFtaWNDb250ZW50RGlyZWN0aXZlIH0pXG4gIGR5bmFtaWNDb250ZW50cyA9IG5ldyBRdWVyeUxpc3Q8RHluYW1pY0NvbnRlbnREaXJlY3RpdmU+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYWNhZGU6IENydWRGYWNhZGU8VD4sXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGR5bmFtaWNDb21wb25lbnRMb2FkZXI6IER5bmFtaWNDb21wb25lbnRMb2FkZXI8VD4sXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBtZW51U2VydmljZTogTWVudVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBoYXJkd2FyZVNlcnZpY2U6IEhhcmR3YXJlU2VydmljZSxcbiAgICBwcml2YXRlIHBhZ2luYXRpb25GYWNhZGU6IENydWRMaXN0UGFnaW5hdGlvbkZhY3Rvcnk8VD4sXG4gICAgcHJpdmF0ZSBzdHlsZVNlcnZpY2U6IFN0eWxlU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBwYWdlU2VydmljZTogUGFnZVNlcnZpY2U8VD4sXG4gICAgcHVibGljIGNvbmZpZzogQ3J1ZEZ1bGxDb25maWc8VD4sXG4gICAgcHJpdmF0ZSBzZWFyY2hTZXJ2aWNlOiBDcnVkU2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PixcbiAgICBwcml2YXRlIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyXG4gICkge1xuICAgIHN1cGVyKGNkLCBtb2R1bGVSZWYsIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcik7XG5cbiAgICB0aGlzLmZhY2FkZS5saW5rcyQucGlwZSh0aGlzLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgobGlua3MpID0+IHtcbiAgICAgIHRoaXMubGlua3MgPSBsaW5rcztcbiAgICB9KTtcbiAgfVxuXG4gIHJlZnJlc2hQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgIHRoaXMuYmFzZUluc3RhbmNlLmxpc3RPcHRpb25zID0gdGhpcy5saXN0T3B0aW9ucztcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZVNlcnZpY2UuY2hlY2tQZXJtaXNzaW9ucygpO1xuXG4gICAgbGV0IG5ld0ZpbHRlciA9IG51bGw7XG5cbiAgICBpZiAodGhpcy5jb25maWcubGlzdD8ucmVzZXRRdWVyeSA9PT0gJ2JlZm9yZUluaXQnKSB7XG4gICAgICBuZXdGaWx0ZXIgPSB7XG4gICAgICAgIHF1ZXJ5OiB0aGlzLmNvbmZpZy5iYXNlUXVlcnkgPyBbIC4uLnRoaXMuY29uZmlnLmJhc2VRdWVyeSBdIDogW10sXG4gICAgICAgIHBhZ2luYXRpb25Nb2RlOiB0aGlzLmNvbmZpZy5saXN0LnBhZ2luYXRpb25Nb2RlLFxuICAgICAgICBsaW1pdDogdGhpcy5jb25maWcucGFnaW5hdGlvbiA/IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ubGltaXQgOiBudWxsLFxuICAgICAgICBvZmZzZXQ6IHRoaXMuY29uZmlnLnBhZ2luYXRpb24gPyAwIDogbnVsbCxcbiAgICAgICAgc29ydEJ5OiB0aGlzLmNvbmZpZy5zb3J0ID8gdGhpcy5jb25maWcuc29ydFtcImRlZmF1bHRcIl0gOiBudWxsLFxuICAgICAgICBzb3J0RGVzYzogdGhpcy5jb25maWcuc29ydCA/IHRoaXMuY29uZmlnLnNvcnRbXCJkZWZhdWx0RGVzY1wiXSA6IG51bGwsXG4gICAgICAgIC4uLnRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXJcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcikge1xuICAgICAgbmV3RmlsdGVyID0gdGhpcy5maWx0ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld0ZpbHRlciA9IHtcbiAgICAgICAgcGFnaW5hdGlvbk1vZGU6IHRoaXMuY29uZmlnLmxpc3QucGFnaW5hdGlvbk1vZGUsXG4gICAgICAgIGxpbWl0OiB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5saW1pdCA/IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXIubGltaXQgOiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uXG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLnBhZ2luYXRpb24ubGltaXQgOiBudWxsLFxuICAgICAgICBvZmZzZXQ6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/Lm9mZnNldCB8fCB0aGlzLnNlYXJjaFNlcnZpY2UuZmlsdGVyPy5vZmZzZXQgPT09IDBcbiAgICAgICAgICAgID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5vZmZzZXQgOiB0aGlzLmNvbmZpZy5wYWdpbmF0aW9uID8gMCA6IG51bGwsXG4gICAgICAgIHNvcnRCeTogdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlcj8uc29ydEJ5ID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5zb3J0QnkgOiB0aGlzLmNvbmZpZy5zb3J0XG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLnNvcnRbXCJkZWZhdWx0XCJdIDogbnVsbCxcbiAgICAgICAgc29ydERlc2M6IHRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXI/LnNvcnREZXNjID8gdGhpcy5zZWFyY2hTZXJ2aWNlLmZpbHRlci5zb3J0RGVzYyA6ICB0aGlzLmNvbmZpZy5zb3J0XG4gICAgICAgICAgICA/IHRoaXMuY29uZmlnLnNvcnRbXCJkZWZhdWx0RGVzY1wiXSA6IG51bGwsXG4gICAgICAgIHF1ZXJ5OiB0aGlzLmNvbmZpZy5iYXNlUXVlcnkgPyBbIC4uLnRoaXMuY29uZmlnLmJhc2VRdWVyeSBdIDogW10sXG4gICAgICAgIC4uLnRoaXMuc2VhcmNoU2VydmljZS5maWx0ZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5mYWNhZGUucmVhZChuZXdGaWx0ZXIpO1xuXG4gICAgY29uc3QgZW5kQnV0dG9ucyA9IHRoaXMuZ2V0RW5kQnV0dG9ucygpO1xuXG4gICAgdGhpcy5wYWdlT3B0aW9ucyA9IHtcbiAgICAgIHRpdGxlOiB0aGlzLmNvbmZpZy50aXRsZSxcbiAgICAgIHNlYXJjaDogdGhpcy5jb25maWcuc2VhcmNoXG4gICAgICAgID8ge1xuICAgICAgICAgICAgdGV4dCQ6IHRoaXMuZmlsdGVyJC5waXBlKG1hcCgoZikgPT4gKGYgPyBmLnNlYXJjaFRleHQgOiBudWxsKSkpLFxuICAgICAgICAgICAgc2V0OiAodHh0KSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eHQgIT09IHRoaXMuZmlsdGVyLnNlYXJjaFRleHQpXG4gICAgICAgICAgICAgICAgdGhpcy5mYWNhZGUucmVhZCh7XG4gICAgICAgICAgICAgICAgICAuLi50aGlzLmZpbHRlcixcbiAgICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHR4dCxcbiAgICAgICAgICAgICAgICAgIG9mZnNldDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfVxuICAgICAgICA6IG51bGwsXG4gICAgICBlbmRCdXR0b25zOiBlbmRCdXR0b25zLFxuICAgIH07XG5cbiAgICBjb25zdCBjb21waWxlZENvbXBvbmVudHMgPVxuICAgICAgYXdhaXQgdGhpcy5keW5hbWljQ29tcG9uZW50TG9hZGVyLmdldENvbXBvbmVudHNXaXRoRmFjdG9yaWVzKHtcbiAgICAgICAgY29tcG9uZW50czogW1xuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgID8gW3RoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLnRvcF1cbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS5ib3R0b21cbiAgICAgICAgICAgID8gW3RoaXMuY29uZmlnLmRldGFpbHNbXCJjb21wb25lbnRzXCJdLmJvdHRvbV1cbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgIC4uLih0aGlzLmNvbmZpZy5saXN0ICYmXG4gICAgICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgID8gW3RoaXMuY29uZmlnLmxpc3RbXCJjb21wb25lbnRzXCJdLnRvcF1cbiAgICAgICAgICAgIDogW10pLFxuICAgICAgICBdLFxuICAgICAgfSk7XG5cbiAgICB0aGlzLmxpc3RPcHRpb25zID0ge1xuICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgZ2V0RGF0YTogKGZpbHRlcik6IHZvaWQgPT4ge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbCA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuZmlsdGVyLFxuICAgICAgICAgICAgLi4uZmlsdGVyLFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5mYWNhZGUucmVhZChnbG9iYWwpO1xuICAgICAgICB9LFxuICAgICAgICBvbkNoYW5nZU11bHRpU2VsZWN0ZWQ6IGFzeW5jIChsaXN0KSA9PiB7XG4gICAgICAgICAgaWYgKGxpc3QubGVuZ3RoICYmICF0aGlzLm1lbnVTZXJ2aWNlLm9wZW5lZEVuZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5vcGVuRW5kKHtcbiAgICAgICAgICAgICAgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFsaXN0Lmxlbmd0aCAmJiB0aGlzLm1lbnVTZXJ2aWNlLm9wZW5lZEVuZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5jbG9zZUVuZCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KGxpc3QpO1xuICAgICAgICB9LFxuICAgICAgICBsaXN0JDogdGhpcy5mYWNhZGUubGlzdCQsXG4gICAgICAgIGxvYWRpbmckOiB0aGlzLmZhY2FkZS5sb2FkZWQkLnBpcGUobWFwKChsKSA9PiAhbCkpLFxuICAgICAgICBvbkNsZWFuTXVsdGlTZWxlY3RlZCQ6IHRoaXMuX2NsZWFuTXVsdGlTZWxlY3RlZCRcbiAgICAgIH0sXG4gICAgICBjZWxsUGlwZTogdGhpcy5jb25maWcubGlzdCA/IHRoaXMuY29uZmlnLmxpc3QuY2VsbFBpcGUgOiBudWxsLFxuICAgICAgbW9kZTogdGhpcy5jb25maWcubGlzdD8ubW9kZSxcbiAgICAgIHR5cGU6IHRoaXMuY29uZmlnLnR5cGUsXG4gICAgICBkZXRhaWxzOiB0aGlzLmNvbmZpZy5kZXRhaWxzXG4gICAgICAgID8ge1xuICAgICAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICAgICAgZ2V0RGF0YTogKGlkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mYWNhZGUuc2VsZWN0KGlkKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgY2xlYXJEYXRhOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mYWNhZGUudW5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgaXRlbSQ6IHRoaXMuZmFjYWRlLnNlbGVjdGVkJCxcbiAgICAgICAgICAgICAgbG9hZGluZyQ6IHRoaXMuZmFjYWRlLmxvYWRlZCQucGlwZShtYXAoKGwpID0+ICFsKSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY29tcG9uZW50RmFjdG9yaWVzOiB7XG4gICAgICAgICAgICAgIHRvcDpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgKGNjKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuY29tcG9uZW50ID09PSB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS50b3BcbiAgICAgICAgICAgICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgIGJvdHRvbTpcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzICYmXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0gJiZcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZy5kZXRhaWxzW1wiY29tcG9uZW50c1wiXS5ib3R0b21cbiAgICAgICAgICAgICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgICAgICAgKGNjKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuY29tcG9uZW50ID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWcuZGV0YWlsc1tcImNvbXBvbmVudHNcIl0uYm90dG9tXG4gICAgICAgICAgICAgICAgICAgICkuZmFjdG9yeVxuICAgICAgICAgICAgICAgICAgOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIGl0ZW06XG4gICAgICAgICEhdGhpcy5jb25maWcuZWRpdCB8fCB0aGlzLmNvbmZpZy5kZXRhaWxzXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICByb3V0aW5nUHJlZml4OiBcIi9cIiArIHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnVybCArIFwiL1wiLFxuICAgICAgICAgICAgICAgIGVkaXQ6ICEhdGhpcy5jb25maWcuZWRpdCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IG51bGwsXG4gICAgICByZW1vdmU6IHRoaXMuY29uZmlnLnJlbW92ZVxuICAgICAgICA/IHtcbiAgICAgICAgICAgIHByb3ZpZGVyOiB7XG4gICAgICAgICAgICAgIGludm9rZTogKGlkKSA9PiB0aGlzLmZhY2FkZS5kZWxldGUoaWQpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9XG4gICAgICAgIDogbnVsbCxcbiAgICAgIHBhZ2luYXRpb246IGF3YWl0IHRoaXMucGFnaW5hdGlvbkZhY2FkZS5jcmVhdGUoe1xuICAgICAgICBtb2RlOiB0aGlzLmNvbmZpZy5saXN0LnBhZ2luYXRpb25Nb2RlLFxuICAgICAgICBsaW1pdDogdGhpcy5jb25maWcucGFnaW5hdGlvbi5saW1pdCxcbiAgICAgICAgcHJvdmlkZXI6IHtcbiAgICAgICAgICBnZXRGaWx0ZXI6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbHRlcjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdldExpbmtzOiAoKSA9PiB0aGlzLmxpbmtzLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBzb3J0OiB0aGlzLmNvbmZpZy5zb3J0LFxuICAgIH07XG5cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcblxuICAgIHRoaXMuaW5pdENsb3NlTWVudSgpO1xuICAgIHRoaXMuaW5pdFRvcENvbXBvbmVudChjb21waWxlZENvbXBvbmVudHMpO1xuXG4gICAgdGhpcy5yZWZyZXNoRHluYW1pY0luc3RhbmNlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDbG9zZU1lbnUoKSB7XG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUodGhpcy50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5jbGVhcigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjbGVhcigpIHtcbiAgICBhd2FpdCB0aGlzLm1lbnVTZXJ2aWNlLmNsb3NlRW5kKCk7XG5cbiAgICB0aGlzLmxpc3RPcHRpb25zID0ge1xuICAgICAgLi4udGhpcy5saXN0T3B0aW9ucyxcbiAgICAgIHNlbGVjdDogbnVsbCxcbiAgICB9O1xuXG4gICAgdGhpcy5mYWNhZGUubXVsdGlTZWxlY3QoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbmRCdXR0b25zKCk6IEFycmF5PElJY29uQnV0dG9uT3B0aW9ucz4ge1xuICAgIGNvbnN0IGZpZWxkc1dpdGhPcHRpb25zID0gZ2V0TW9kZWxGaWVsZHNXaXRoT3B0aW9ucyhuZXcgdGhpcy5jb25maWcudHlwZSgpKTtcbiAgICBjb25zdCBtb2RlbE9wdGlvbnMgPSBnZXRNb2RlbE9wdGlvbnModGhpcy5jb25maWcudHlwZSk7XG5cbiAgICBjb25zdCBzaG93RmlsdGVycyA9XG4gICAgICBmaWVsZHNXaXRoT3B0aW9ucy5zb21lKFxuICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8ubGlzdCBhcyBJRmllbGRMaXN0TWV0YWRhdGEpPy5maWx0ZXJcbiAgICAgICkgfHwgbW9kZWxPcHRpb25zPy5maWx0ZXJzPy5sZW5ndGg7XG5cbiAgICBjb25zdCBzaG93TXVsdGlFZGl0ID1cbiAgICAgICAgdGhpcy5jb25maWcubGlzdD8uY29tcG9uZW50cz8ubXVsdGkgfHxcbiAgICAgICAgKFxuICAgICAgICAgICAgdGhpcy5jb25maWcuZWRpdCAmJlxuICAgICAgICAgICAgZmllbGRzV2l0aE9wdGlvbnMuc29tZShcbiAgICAgICAgICAgICAgICAoeCkgPT4gKHgub3B0aW9ucz8udXBkYXRlIGFzIElGaWVsZEVkaXRNZXRhZGF0YSk/Lm11bHRpXG4gICAgICAgICAgICApICYmXG4gICAgICAgICAgICAhdGhpcy5oYXJkd2FyZVNlcnZpY2UuaXNNb2JpbGUgJiZcbiAgICAgICAgICAgICghdGhpcy5jb25maWc/Lmxpc3Q/Lm1vZGUgfHxcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZz8ubGlzdD8ubW9kZSA9PT0gTGlzdE1vZGUuZGVza3RvcClcbiAgICAgICAgKTtcblxuICAgIHJldHVybiBbXG4gICAgICAuLi4oc2hvd011bHRpRWRpdFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJjaGVja2JveC1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwibXVsdGlcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmFjYWRlLm11bHRpU2VsZWN0KFtdKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jbGVhbk11bHRpU2VsZWN0ZWQkLm5leHQoKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5saXN0T3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5saXN0T3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0aGlzLmxpc3RPcHRpb25zLnNlbGVjdCA9PT0gXCJtdWx0aVwiID8gbnVsbCA6IFwibXVsdGlcIixcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5tZW51U2VydmljZS5vcGVuZWRFbmQpXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMubWVudVNlcnZpY2UuY2xvc2VFbmQoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHNob3dGaWx0ZXJzXG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpY29uOiBcImZpbHRlci1vdXRsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHQ6IFwiZmlsdGVyc1wiLFxuICAgICAgICAgICAgICBoYW5kbGVyOiBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5tZW51U2VydmljZS5vcGVuRW5kKHtcbiAgICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50OiBGaWx0ZXJzQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmFkZFxuICAgICAgICA/IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWNvbjogXCJhZGRcIixcbiAgICAgICAgICAgICAgdGV4dDogXCJhZGRcIixcbiAgICAgICAgICAgICAgaGFuZGxlcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcbiAgICAgICAgICAgICAgICAgIFwiL1wiICsgdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3QudXJsICsgXCIvYWRkXCIsXG4gICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICAuLi4odGhpcy5jb25maWcuZXhwb3J0XG4gICAgICAgID8gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXh0OiBcImV4cG9ydFwiLFxuICAgICAgICAgICAgICBpY29uOiBcImRvd25sb2FkLW91dGxpbmVcIixcbiAgICAgICAgICAgICAgdHlwZTogXCJwb3BvdmVyXCIgYXMgXCJwb3BvdmVyXCIsXG4gICAgICAgICAgICAgIGNvbXBvbmVudDogRXhwb3J0Q29tcG9uZW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMuY29uZmlnLmJ1dHRvbnMgPyB0aGlzLmNvbmZpZy5idXR0b25zIDogW10pLFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGluaXRUb3BDb21wb25lbnQoXG4gICAgY29tcGlsZWRDb21wb25lbnRzOiB7XG4gICAgICBjb21wb25lbnQ6IGFueTtcbiAgICAgIGZhY3Rvcnk6IENvbXBvbmVudEZhY3Rvcnk8YW55PjtcbiAgICB9W11cbiAgKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9XG4gICAgICB0aGlzLmNvbmZpZy5saXN0ICYmXG4gICAgICB0aGlzLmNvbmZpZy5saXN0W1wiY29tcG9uZW50c1wiXSAmJlxuICAgICAgdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgID8gY29tcGlsZWRDb21wb25lbnRzLmZpbmQoXG4gICAgICAgICAgICAoY2MpID0+IGNjLmNvbXBvbmVudCA9PT0gdGhpcy5jb25maWcubGlzdFtcImNvbXBvbmVudHNcIl0udG9wXG4gICAgICAgICAgKS5mYWN0b3J5XG4gICAgICAgIDogbnVsbDtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKGZhY3RvcnkgJiYgIXRoaXMudG9wVHBsLmdldCgwKSkge1xuICAgICAgICB0aGlzLnRvcFRwbC5jcmVhdGVDb21wb25lbnQoZmFjdG9yeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -17,8 +17,10 @@ import { FormsModule, FormControl, FormGroup, FormArray } from '@angular/forms';
17
17
  import * as i3$1 from '@angular/common';
18
18
  import { CommonModule } from '@angular/common';
19
19
  import * as i4 from '@ngx-translate/core';
20
- import { Subscription, combineLatest, forkJoin, of, BehaviorSubject } from 'rxjs';
20
+ import { Subscription, combineLatest, forkJoin, of, BehaviorSubject, Subject } from 'rxjs';
21
21
  import * as _ from 'lodash';
22
+ import * as i6 from 'ng-dynamic-component';
23
+ import { DynamicIoModule } from 'ng-dynamic-component';
22
24
  import * as i2$1 from '@angular/common/http';
23
25
  import 'reflect-metadata';
24
26
  import * as i1$2 from '@angular/router';
@@ -885,11 +887,13 @@ class MultiselectComponent {
885
887
  }),
886
888
  confirm: true
887
889
  };
890
+ this.showForm = false;
888
891
  this.list$ = this.facade.multiSelected$.pipe(tap(list => {
889
892
  this.lock = true;
890
893
  const model = new this.config.type();
891
894
  const fieldsWithOptions = getModelFieldsWithOptions(model)
892
895
  .filter(f => { var _a; return (_a = f.options.update) === null || _a === void 0 ? void 0 : _a.multi; });
896
+ this.showForm = !!fieldsWithOptions.length;
893
897
  fieldsWithOptions.forEach(({ key }) => {
894
898
  const uniques = _.uniq(list.map(i => i[key]));
895
899
  if (uniques.length === 1) {
@@ -915,12 +919,12 @@ class MultiselectComponent {
915
919
  ngOnInit() {
916
920
  }
917
921
  }
918
- /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, deps: [{ token: CrudFacade }, { token: CrudConfig }, { token: i3.MenuService }], target: i0.ɵɵFactoryTarget.Component });
919
- /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MultiselectComponent, selector: "smart-crud-multiselect", ngImport: i0, template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"], components: [{ type: i1$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i1$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i1$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i1$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i3.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { type: i3.ButtonComponent, selector: "smart-button", inputs: ["options", "disabled"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i3$1.AsyncPipe, "translate": i4.TranslatePipe, "smartFormOptions": FormOptionsPipe } });
922
+ /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, deps: [{ token: CrudFacade }, { token: CrudFullConfig }, { token: i3.MenuService }], target: i0.ɵɵFactoryTarget.Component });
923
+ /** @nocollapse */ /** @nocollapse */ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.7", type: MultiselectComponent, selector: "smart-crud-multiselect", ngImport: i0, template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"config?.list?.components?.multi\">\n <ng-template [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"showForm && item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"], components: [{ type: i1$1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { type: i1$1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { type: i1$1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { type: i1$1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i1$1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { type: i1$1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { type: i3.FormComponent, selector: "smart-form", inputs: ["options"], outputs: ["invokeSubmit", "valueChange", "valuePartialChange", "validChange"] }, { type: i3.ButtonComponent, selector: "smart-button", inputs: ["options", "disabled"] }], directives: [{ type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModuleFactory"] }, { type: i6.ComponentOutletInjectorDirective, selector: "[ngComponentOutlet]", exportAs: ["ndcComponentOutletInjector"] }, { type: i6.DynamicIoDirective, selector: "[ndcDynamicInputs],[ndcDynamicOutputs],[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ndcDynamicInputs", "ngComponentOutletNdcDynamicInputs", "ndcDynamicOutputs", "ngComponentOutletNdcDynamicOutputs"] }], pipes: { "async": i3$1.AsyncPipe, "translate": i4.TranslatePipe, "smartFormOptions": FormOptionsPipe } });
920
924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: MultiselectComponent, decorators: [{
921
925
  type: Component,
922
- args: [{ selector: 'smart-crud-multiselect', template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"] }]
923
- }], ctorParameters: function () { return [{ type: CrudFacade }, { type: CrudConfig }, { type: i3.MenuService }]; } });
926
+ args: [{ selector: 'smart-crud-multiselect', template: "<ng-container *ngIf=\"list$ | async; let list\">\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onClose()\">\n <ion-icon slot=\"icon-only\" name=\"close\"> </ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>{{ 'selected' | translate }}: {{ list?.length }}</ion-title>\n </ion-toolbar>\n </ion-header>\n\n <div *ngIf=\"config?.list?.components?.multi\">\n <ng-template [ngComponentOutlet]=\"config?.list?.components?.multi\"\n [ndcDynamicInputs]=\"{ items: list }\"\n ></ng-template>\n </div>\n\n <div *ngIf=\"showForm && item\">\n <smart-form [options]=\"item | smartFormOptions : 'multiUpdate' : config.type\" (valuePartialChange)=\"onPartialChange($event, list)\" (validChange)=\"onValidChange($event)\"></smart-form>\n\n <smart-button style=\"float: right\" [disabled]=\"lock || !valid\" [options]=\"buttonOptions\">{{ 'change' | translate }}</smart-button>\n </div>\n</ng-container>", styles: [":host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}}:host ion-toolbar.ios{height:4.6rem;--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}@media only screen and (max-width: 420px){:host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-primary), var(--ion-color-tertiary));--color: var(--ion-color-light)}:host ion-toolbar.ios ion-title{text-align:left;padding-left:5.2rem}:host ion-toolbar.ios ion-icon{color:var(--ion-color-light)}}.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));--color: var(--ion-color-dark)}@media only screen and (max-width: 992px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}@media only screen and (max-width: 420px){.modal-wrapper :host ion-toolbar.ios{--background: linear-gradient(33deg, var(--ion-color-light), var(--ion-color-light-shade));color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-title{text-align:left;padding-left:1.2rem}.modal-wrapper :host ion-toolbar.ios ion-icon{color:var(--ion-color-dark)}.modal-wrapper :host ion-toolbar.ios ion-buttons{margin:0}}:host ion-toolbar ion-menu-button{color:var(--ion-color-light)}:host ion-toolbar ion-buttons.ios{height:var(--smart-button-height);margin:0}\n"] }]
927
+ }], ctorParameters: function () { return [{ type: CrudFacade }, { type: CrudFullConfig }, { type: i3.MenuService }]; } });
924
928
 
925
929
  class CrudListGroupService {
926
930
  constructor(facade) {
@@ -1427,7 +1431,8 @@ class CrudComponentsModule {
1427
1431
  SharedModule,
1428
1432
  CrudPipesModule,
1429
1433
  FormsModule,
1430
- CommonModule
1434
+ CommonModule,
1435
+ DynamicIoModule
1431
1436
  ], exports: [CrudPipesModule, ExportComponent,
1432
1437
  FilterComponent,
1433
1438
  FilterTextComponent,
@@ -1453,7 +1458,8 @@ class CrudComponentsModule {
1453
1458
  SharedModule,
1454
1459
  CrudPipesModule,
1455
1460
  FormsModule,
1456
- CommonModule
1461
+ CommonModule,
1462
+ DynamicIoModule
1457
1463
  ], CrudPipesModule] });
1458
1464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImport: i0, type: CrudComponentsModule, decorators: [{
1459
1465
  type: NgModule,
@@ -1467,7 +1473,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.7", ngImpor
1467
1473
  SharedModule,
1468
1474
  CrudPipesModule,
1469
1475
  FormsModule,
1470
- CommonModule
1476
+ CommonModule,
1477
+ DynamicIoModule
1471
1478
  ],
1472
1479
  exports: [
1473
1480
  CrudPipesModule,
@@ -1700,6 +1707,7 @@ class ListComponent extends CreateDynamicComponent('crud-list-page') {
1700
1707
  this.searchService = searchService;
1701
1708
  this.moduleRef = moduleRef;
1702
1709
  this.componentFactoryResolver = componentFactoryResolver;
1710
+ this._cleanMultiSelected$ = new Subject();
1703
1711
  this.filter$ = this.facade.filter$.pipe(tap((filter) => {
1704
1712
  this.filter = filter;
1705
1713
  }));
@@ -1783,6 +1791,7 @@ class ListComponent extends CreateDynamicComponent('crud-list-page') {
1783
1791
  }),
1784
1792
  list$: this.facade.list$,
1785
1793
  loading$: this.facade.loaded$.pipe(map((l) => !l)),
1794
+ onCleanMultiSelected$: this._cleanMultiSelected$
1786
1795
  },
1787
1796
  cellPipe: this.config.list ? this.config.list.cellPipe : null,
1788
1797
  mode: (_g = this.config.list) === null || _g === void 0 ? void 0 : _g.mode,
@@ -1860,28 +1869,32 @@ class ListComponent extends CreateDynamicComponent('crud-list-page') {
1860
1869
  });
1861
1870
  }
1862
1871
  getEndButtons() {
1863
- var _a, _b, _c, _d, _e;
1872
+ var _a, _b, _c, _d, _e, _f, _g;
1864
1873
  const fieldsWithOptions = getModelFieldsWithOptions(new this.config.type());
1865
1874
  const modelOptions = getModelOptions(this.config.type);
1866
1875
  const showFilters = fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.list) === null || _b === void 0 ? void 0 : _b.filter; }) || ((_a = modelOptions === null || modelOptions === void 0 ? void 0 : modelOptions.filters) === null || _a === void 0 ? void 0 : _a.length);
1867
- const showMultiEdit = this.config.edit &&
1868
- fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.multi; }) &&
1869
- !this.hardwareService.isMobile &&
1870
- (!((_c = (_b = this.config) === null || _b === void 0 ? void 0 : _b.list) === null || _c === void 0 ? void 0 : _c.mode) ||
1871
- ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.list) === null || _e === void 0 ? void 0 : _e.mode) === ListMode.desktop);
1876
+ const showMultiEdit = ((_c = (_b = this.config.list) === null || _b === void 0 ? void 0 : _b.components) === null || _c === void 0 ? void 0 : _c.multi) ||
1877
+ (this.config.edit &&
1878
+ fieldsWithOptions.some((x) => { var _a, _b; return (_b = (_a = x.options) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.multi; }) &&
1879
+ !this.hardwareService.isMobile &&
1880
+ (!((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.list) === null || _e === void 0 ? void 0 : _e.mode) ||
1881
+ ((_g = (_f = this.config) === null || _f === void 0 ? void 0 : _f.list) === null || _g === void 0 ? void 0 : _g.mode) === ListMode.desktop));
1872
1882
  return [
1873
1883
  ...(showMultiEdit
1874
1884
  ? [
1875
1885
  {
1876
1886
  icon: "checkbox-outline",
1877
1887
  text: "multi",
1878
- handler: () => __awaiter(this, void 0, void 0, function* () {
1879
- this.listOptions = Object.assign(Object.assign({}, this.listOptions), { select: this.listOptions.select === "multi" ? null : "multi" });
1888
+ handler: () => {
1880
1889
  this.facade.multiSelect([]);
1881
- if (this.menuService.openedEnd)
1882
- yield this.menuService.closeEnd();
1883
- this.cd.detectChanges();
1884
- }),
1890
+ this._cleanMultiSelected$.next();
1891
+ setTimeout(() => __awaiter(this, void 0, void 0, function* () {
1892
+ this.listOptions = Object.assign(Object.assign({}, this.listOptions), { select: this.listOptions.select === "multi" ? null : "multi" });
1893
+ if (this.menuService.openedEnd)
1894
+ yield this.menuService.closeEnd();
1895
+ this.cd.detectChanges();
1896
+ }));
1897
+ },
1885
1898
  },
1886
1899
  ]
1887
1900
  : []),
@@ -2075,7 +2088,7 @@ class ItemComponent extends CreateDynamicComponent('crud-item-page') {
2075
2088
  this.detailsService.init();
2076
2089
  this.styleService.init(this.elementRef);
2077
2090
  this.pageService.checkPermissions();
2078
- if (this.router.routerState.snapshot.url.endsWith("/add")) {
2091
+ if (this.router.routerState.snapshot.url.split('?')[0].endsWith("/add")) {
2079
2092
  this.mode = "create";
2080
2093
  yield this.generateComponents('add');
2081
2094
  }