@sd-angular/core 0.0.905 → 0.0.909

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.
Files changed (39) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +35 -19
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-select.umd.js +9 -10
  6. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-select.umd.min.js +2 -2
  8. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  9. package/bundles/sd-angular-core-setting.umd.js +2 -2
  10. package/bundles/sd-angular-core-setting.umd.js.map +1 -1
  11. package/bundles/sd-angular-core-setting.umd.min.js +1 -1
  12. package/bundles/sd-angular-core-setting.umd.min.js.map +1 -1
  13. package/bundles/sd-angular-core-tab-router.umd.js +33 -18
  14. package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
  15. package/bundles/sd-angular-core-tab-router.umd.min.js +2 -2
  16. package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
  17. package/esm2015/grid-material/src/lib/grid-material.component.js +2 -1
  18. package/esm2015/grid-material/src/lib/models/grid-config.model.js +1 -1
  19. package/esm2015/grid-material/src/lib/services/grid-configuration.service.js +18 -13
  20. package/esm2015/select/src/lib/select.component.js +7 -7
  21. package/esm2015/setting/src/lib/setting.model.js +1 -1
  22. package/esm2015/setting/src/lib/setting.service.js +5 -5
  23. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +30 -24
  24. package/fesm2015/sd-angular-core-grid-material.js +27 -20
  25. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  26. package/fesm2015/sd-angular-core-select.js +6 -6
  27. package/fesm2015/sd-angular-core-select.js.map +1 -1
  28. package/fesm2015/sd-angular-core-setting.js +4 -4
  29. package/fesm2015/sd-angular-core-setting.js.map +1 -1
  30. package/fesm2015/sd-angular-core-tab-router.js +20 -14
  31. package/fesm2015/sd-angular-core-tab-router.js.map +1 -1
  32. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  33. package/grid-material/src/lib/models/grid-config.model.d.ts +1 -0
  34. package/package.json +1 -1
  35. package/{sd-angular-core-0.0.905.tgz → sd-angular-core-0.0.909.tgz} +0 -0
  36. package/select/sd-angular-core-select.metadata.json +1 -1
  37. package/select/src/lib/select.component.d.ts +2 -2
  38. package/setting/src/lib/setting.model.d.ts +2 -2
  39. package/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.d.ts +7 -7
@@ -1,14 +1,14 @@
1
1
  var _rootRoute, _subscription, _firstLoad, _closeTab, _activeRoute, _getActivatedRouteSnapshot, _getActivatedRoute;
2
2
  import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
- import { ChangeDetectorRef, Compiler, Component, Injector, ViewChild, } from "@angular/core";
4
- import { ActivatedRoute, NavigationEnd, Router, RoutesRecognized, } from "@angular/router";
5
- import { SdNotifyService } from "@sd-angular/core/notify";
6
- import { SdTabActivated, SdTabDeactivated, } from "../../events/tab-router.event";
7
- import { SdTabRouterService } from "../../services/tab-router.service";
8
- import { Subscription } from "rxjs";
9
- import { SdTabDecoratorService } from "../../services/tab-decorator.service";
10
- import { filter } from "rxjs/operators";
11
- import * as hash from "object-hash";
3
+ import { ChangeDetectorRef, Compiler, Component, Injector, ViewChild, } from '@angular/core';
4
+ import { ActivatedRoute, NavigationEnd, Router, RoutesRecognized, } from '@angular/router';
5
+ import { SdNotifyService } from '@sd-angular/core/notify';
6
+ import { SdTabActivated, SdTabDeactivated, } from '../../events/tab-router.event';
7
+ import { SdTabRouterService } from '../../services/tab-router.service';
8
+ import { Subscription } from 'rxjs';
9
+ import { SdTabDecoratorService } from '../../services/tab-decorator.service';
10
+ import { filter } from 'rxjs/operators';
11
+ import * as hash from 'object-hash';
12
12
  export class SdTabRouterOutletComponent {
13
13
  constructor(router, activatedRoute, cd, injector, compiler, tabDecoratorService, tabRouterService, sdNotifyService) {
14
14
  this.router = router;
@@ -25,19 +25,24 @@ export class SdTabRouterOutletComponent {
25
25
  _firstLoad.set(this, true);
26
26
  _closeTab.set(this, (tab) => {
27
27
  var _a;
28
- this.tabs = this.tabs.filter(({ key }) => key !== tab.key);
29
- if (tab.isActive) {
30
- const lastTab = this.tabs[this.tabs.length - 1];
31
- if (lastTab) {
32
- this.router.navigateByUrl(lastTab.url, {
33
- queryParams: lastTab.queryParams || {},
28
+ const { isActive, key: activeKey } = tab;
29
+ if (isActive) {
30
+ const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);
31
+ const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];
32
+ if (nextTab) {
33
+ const { url: nextUrl } = nextTab;
34
+ const nextQueryParams = Object.assign({}, (nextTab.queryParams || {}));
35
+ this.tabs = this.tabs.filter(({ key }) => key !== activeKey);
36
+ this.router.navigate([nextUrl], {
37
+ queryParams: nextQueryParams,
34
38
  state: {
35
39
  switchTab: true,
36
40
  },
37
41
  });
38
42
  }
39
43
  else {
40
- this.router.navigateByUrl("/", {
44
+ this.tabs = this.tabs.filter(({ key }) => key !== activeKey);
45
+ this.router.navigateByUrl('/', {
41
46
  state: {
42
47
  switchTab: true,
43
48
  },
@@ -45,6 +50,7 @@ export class SdTabRouterOutletComponent {
45
50
  }
46
51
  }
47
52
  else {
53
+ this.tabs = this.tabs.filter(({ key }) => key !== tab.key);
48
54
  (_a = this.tabRouterNav) === null || _a === void 0 ? void 0 : _a.checkUI();
49
55
  this.cd.markForCheck();
50
56
  }
@@ -57,8 +63,8 @@ export class SdTabRouterOutletComponent {
57
63
  const component = route.component;
58
64
  const queryParams = Object.assign({}, (route.queryParams || {}));
59
65
  const params = Object.assign({}, (route.params || {}));
60
- const key = hash({ url: fullUrl });
61
- const [url] = fullUrl.split("?");
66
+ const [url] = fullUrl.split('?');
67
+ const key = hash({ url, queryParams });
62
68
  let existedIndex = -1;
63
69
  this.tabs.forEach((tab, index) => {
64
70
  if (tab.key === key) {
@@ -79,7 +85,7 @@ export class SdTabRouterOutletComponent {
79
85
  this.tabRouterService.pushEvent(existedTab, SdTabActivated);
80
86
  }
81
87
  else {
82
- if (typeof ((_d = (_c = route === null || route === void 0 ? void 0 : route.parent) === null || _c === void 0 ? void 0 : _c.routeConfig) === null || _d === void 0 ? void 0 : _d.loadChildren) === "function") {
88
+ if (typeof ((_d = (_c = route === null || route === void 0 ? void 0 : route.parent) === null || _c === void 0 ? void 0 : _c.routeConfig) === null || _d === void 0 ? void 0 : _d.loadChildren) === 'function') {
83
89
  const module = yield route.parent.routeConfig.loadChildren();
84
90
  const factory = yield this.compiler.compileModuleAsync(module);
85
91
  const injector = factory.create(this.injector);
@@ -104,7 +110,7 @@ export class SdTabRouterOutletComponent {
104
110
  }
105
111
  (_g = this.tabRouterNav) === null || _g === void 0 ? void 0 : _g.checkUI();
106
112
  if (this.tabs.length > 10) {
107
- this.sdNotifyService.notify.warning("Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.");
113
+ this.sdNotifyService.notify.warning('Bạn đã mở quá nhiều tab. Vui lòng tắt các tab không dùng để hệ thống hoạt động tốt hơn.');
108
114
  }
109
115
  if (this.tabs.length > 12) {
110
116
  this.tabs.splice(0, this.tabs.length - 10);
@@ -154,7 +160,7 @@ export class SdTabRouterOutletComponent {
154
160
  }
155
161
  })));
156
162
  __classPrivateFieldGet(this, _subscription).add(tabRouterService.actions.subscribe((event) => {
157
- if (event && event.type === "close") {
163
+ if (event && event.type === 'close') {
158
164
  __classPrivateFieldGet(this, _closeTab).call(this, event.tab);
159
165
  }
160
166
  }));
@@ -166,7 +172,7 @@ export class SdTabRouterOutletComponent {
166
172
  _rootRoute = new WeakMap(), _subscription = new WeakMap(), _firstLoad = new WeakMap(), _closeTab = new WeakMap(), _activeRoute = new WeakMap(), _getActivatedRouteSnapshot = new WeakMap(), _getActivatedRoute = new WeakMap();
167
173
  SdTabRouterOutletComponent.decorators = [
168
174
  { type: Component, args: [{
169
- selector: "sd-tab-router-outlet",
175
+ selector: 'sd-tab-router-outlet',
170
176
  template: "<sd-tab-router-nav [tabs]=\"tabs\" #tabRouterNav></sd-tab-router-nav>\r\n\r\n<div class=\"tab-router__list\">\r\n <ng-container *ngFor=\"let tab of tabs\">\r\n <div class=\"tab-router__pane\" [class.active]=\"tab.isActive\" [id]=\"tab.key\">\r\n <div class=\"tab-router__content\">\r\n <ng-container\r\n *ngComponentOutlet=\"tab.component; injector: tab.injector\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>\r\n",
171
177
  styles: [":host{display:flex;flex-direction:column;height:calc(100vh - 64px);width:100%}::ng-deep page-layout{height:100%!important}.tab-router__list{flex:1}.tab-router__pane{display:none;height:100%;position:relative;width:100%}.tab-router__pane.active{display:block}.tab-router__content{bottom:0;height:100%;left:0;overflow:auto;position:absolute;right:0;top:0;width:100%}"]
172
178
  },] }
@@ -182,7 +188,7 @@ SdTabRouterOutletComponent.ctorParameters = () => [
182
188
  { type: SdNotifyService }
183
189
  ];
184
190
  SdTabRouterOutletComponent.propDecorators = {
185
- tabRouterNav: [{ type: ViewChild, args: ["tabRouterNav",] }]
191
+ tabRouterNav: [{ type: ViewChild, args: ['tabRouterNav',] }]
186
192
  };
187
193
  class SdOutletInjector {
188
194
  constructor(route,
@@ -201,4 +207,4 @@ class SdOutletInjector {
201
207
  return this.parent.get(token, notFoundValue);
202
208
  }
203
209
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUtSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUtkLGFBQWEsRUFFYixNQUFNLEVBQ04sZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7QUFJdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFRcEMsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUFxQixFQUNyQixRQUFrQixFQUNsQixRQUFrQixFQUNsQixtQkFBMEMsRUFDMUMsZ0JBQW9DLEVBQ3BDLGVBQWdDO1FBUGhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFG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QUM7U0FDbkI7UUFFRCwwQ0FBMEM7UUFDMUMsK0JBQStCO1FBQy9CLElBQUk7UUFFSixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBpbGVyLFxyXG4gIENvbXBvbmVudCxcclxuICBJbmplY3RvcixcclxuICBOZ01vZHVsZVJlZixcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFR5cGUsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGUsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDaGlsZHJlbk91dGxldENvbnRleHRzLFxyXG4gIC8vIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgRXZlbnQsXHJcbiAgTmF2aWdhdGlvbkVuZCxcclxuICBQUklNQVJZX09VVExFVCxcclxuICBSb3V0ZXIsXHJcbiAgUm91dGVzUmVjb2duaXplZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gXCJAc2QtYW5ndWxhci9jb3JlL25vdGlmeVwiO1xyXG5pbXBvcnQge1xyXG4gIFNkVGFiQWN0aXZhdGVkLFxyXG4gIFNkVGFiRGVhY3RpdmF0ZWQsXHJcbn0gZnJvbSBcIi4uLy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50XCI7XHJcblxyXG5pbXBvcnQgeyBTZFRhYiB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBTZFRhYkFjdGlvbiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zL3RhYi1yb3V0ZXIuYWN0aW9uXCI7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQgfSBmcm9tIFwiLi4vdGFiLXJvdXRlci1uYXYvdGFiLXJvdXRlci1uYXYuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFNkVGFiRGVjb3JhdG9yU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy90YWItZGVjb3JhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCAqIGFzIGhhc2ggZnJvbSBcIm9iamVjdC1oYXNoXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogXCJzZC10YWItcm91dGVyLW91dGxldFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlck91dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZChcInRhYlJvdXRlck5hdlwiKSB0YWJSb3V0ZXJOYXY6IFNkVGFiUm91dGVyTmF2Q29tcG9uZW50O1xyXG4gIHRhYnM6IFNkVGFiW10gPSBbXTtcclxuXHJcbiAgI3Jvb3RSb3V0ZTogQWN0aXZhdGVkUm91dGU7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAjZmlyc3RMb2FkID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIGNvbXBpbGVyOiBDb21waWxlcixcclxuICAgIHByaXZhdGUgdGFiRGVjb3JhdG9yU2VydmljZTogU2RUYWJEZWNvcmF0b3JTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0YWJSb3V0ZXJTZXJ2aWNlOiBTZFRhYlJvdXRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNkTm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKFxyXG4gICAgICByb3V0ZXIuZXZlbnRzXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBmaWx0ZXIoXHJcbiAgICAgICAgICAgIChldmVudCkgPT5cclxuICAgICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWQgfHxcclxuICAgICAgICAgICAgICBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmRcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgICAgLnN1YnNjcmliZShhc3luYyAoZXZlbnQ6IFJvdXRlc1JlY29nbml6ZWQgfCBOYXZpZ2F0aW9uRW5kKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy4jZmlyc3RMb2FkICYmIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICB0aGlzLiNmaXJzdExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLiNnZXRBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KFxyXG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZhdGVkUm91dGUuc25hcHNob3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWN0aXZlUm91dGUoXHJcbiAgICAgICAgICAgICAgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgZXZlbnQudXJsLFxyXG4gICAgICAgICAgICAgIHJvdXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghdGhpcy4jZmlyc3RMb2FkICYmIGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCkge1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgICAgIHRoaXMuI3Jvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3Q7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuI2FjdGl2ZVJvdXRlKFxyXG4gICAgICAgICAgICAgIGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzIHx8IGV2ZW50LnVybCxcclxuICAgICAgICAgICAgICByb3V0ZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHRhYlJvdXRlclNlcnZpY2UuYWN0aW9ucy5zdWJzY3JpYmUoKGV2ZW50OiBTZFRhYkFjdGlvbiB8IG51bGwpID0+IHtcclxuICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gXCJjbG9zZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLiNjbG9zZVRhYihldmVudC50YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2Nsb3NlVGFiID0gKHRhYjogU2RUYWIpID0+IHtcclxuICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gdGFiLmtleSk7XHJcbiAgICBpZiAodGFiLmlzQWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IGxhc3RUYWIgPSB0aGlzLnRhYnNbdGhpcy50YWJzLmxlbmd0aCAtIDFdO1xyXG4gICAgICBpZiAobGFzdFRhYikge1xyXG4gICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwobGFzdFRhYi51cmwsIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBsYXN0VGFiLnF1ZXJ5UGFyYW1zIHx8IHt9LFxyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKFwiL1wiLCB7XHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRhYlJvdXRlck5hdj8uY2hlY2tVSSgpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gICNhY3RpdmVSb3V0ZSA9IGFzeW5jIChcclxuICAgIGZ1bGxVcmw6IHN0cmluZyxcclxuICAgIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbFxyXG4gICkgPT4ge1xyXG4gICAgaWYgKCFyb3V0ZT8uY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHJvdXRlLmNvbXBvbmVudCBhcyBUeXBlPGFueT47XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgLi4uKHJvdXRlLnF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5wYXJhbXMgfHwge30pLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGtleSA9IGhhc2goeyB1cmw6IGZ1bGxVcmwgfSk7XHJcbiAgICBjb25zdCBbdXJsXSA9IGZ1bGxVcmwuc3BsaXQoXCI/XCIpO1xyXG5cclxuICAgIGxldCBleGlzdGVkSW5kZXggPSAtMTtcclxuICAgIHRoaXMudGFicy5mb3JFYWNoKCh0YWI6IFNkVGFiLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIGlmICh0YWIua2V5ID09PSBrZXkpIHtcclxuICAgICAgICB0YWIuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGV4aXN0ZWRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICh0YWIuaXNBY3RpdmUpIHtcclxuICAgICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQodGFiLCBTZFRhYkRlYWN0aXZhdGVkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGN1cnJlbnROYXZpZ2F0aW9uID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKTtcclxuICAgIGlmIChleGlzdGVkSW5kZXggPj0gMCAmJiBjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgIGNvbnN0IGV4aXN0ZWRUYWIgPSB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIoZXhpc3RlZFRhYik7XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5wdXNoRXZlbnQoZXhpc3RlZFRhYiwgU2RUYWJBY3RpdmF0ZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHR5cGVvZiByb3V0ZT8ucGFyZW50Py5yb3V0ZUNvbmZpZz8ubG9hZENoaWxkcmVuID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBjb25zdCBtb2R1bGUgPSBhd2FpdCByb3V0ZS5wYXJlbnQucm91dGVDb25maWcubG9hZENoaWxkcmVuKCk7XHJcbiAgICAgICAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IHRoaXMuY29tcGlsZXIuY29tcGlsZU1vZHVsZUFzeW5jKG1vZHVsZSk7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBmYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcclxuICAgICAgICBjb25zdCBhY3RpdmF0ZWRSb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlKFxyXG4gICAgICAgICAgdGhpcy4jcm9vdFJvdXRlLFxyXG4gICAgICAgICAgY29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgdGFiID0ge1xyXG4gICAgICAgICAga2V5LFxyXG4gICAgICAgICAgY29tcG9uZW50LFxyXG4gICAgICAgICAgaW5qZWN0b3I6IG5ldyBTZE91dGxldEluamVjdG9yKGFjdGl2YXRlZFJvdXRlLCBpbmplY3RvciksXHJcbiAgICAgICAgICBpc0FjdGl2ZTogdHJ1ZSxcclxuICAgICAgICAgIG5hbWU6IHVybCxcclxuICAgICAgICAgIHVybCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKHRhYik7XHJcbiAgICAgICAgaWYgKGV4aXN0ZWRJbmRleCA+PSAwICYmICFjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XSA9IHRhYjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGFiUm91dGVyTmF2Py5jaGVja1VJKCk7XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTApIHtcclxuICAgICAgICB0aGlzLnNkTm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhcclxuICAgICAgICAgIFwiQuG6oW4gxJHDoyBt4bufIHF1w6Egbmhp4buBdSB0YWIuIFZ1aSBsw7JuZyB04bqvdCBjw6FjIHRhYiBraMO0bmcgZMO5bmcgxJHhu4MgaOG7hyB0aOG7kW5nIGhv4bqhdCDEkeG7mW5nIHThu5F0IGjGoW4uXCJcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTIpIHtcclxuICAgICAgICB0aGlzLnRhYnMuc3BsaWNlKDAsIHRoaXMudGFicy5sZW5ndGggLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgY29tcG9uZW50OiBhbnlcclxuICApOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgIH1cclxuICAgIHdoaWxlIChhY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkKSB7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcclxuICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCAmJiBhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgU2RPdXRsZXRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCxcclxuICAgIC8vIHByaXZhdGUgY2hpbGRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgcGFyZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHtcclxuICAgIGlmICh0b2tlbiA9PT0gQWN0aXZhdGVkUm91dGUgJiYgdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodG9rZW4gPT09IENoaWxkcmVuT3V0bGV0Q29udGV4dHMpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRDb250ZXh0cztcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUtSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUtkLGFBQWEsRUFFYixNQUFNLEVBQ04sZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7QUFJdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxLQUFLLElBQUksTUFBTSxhQUFhLENBQUM7QUFRcEMsTUFBTSxPQUFPLDBCQUEwQjtJQU9yQyxZQUNVLE1BQWMsRUFDZCxjQUE4QixFQUM5QixFQUFxQixFQUNyQixRQUFrQixFQUNsQixRQUFrQixFQUNsQixtQkFBMEMsRUFDMUMsZ0JBQW9DLEVBQ3BDLGVBQWdDO1FBUGhDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsT0FBRSxHQUFG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QUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsNENBQW1CLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7Ozs7WUFuRUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLDhlQUFpRDs7YUFHbEQ7OztZQXZCQyxNQUFNO1lBUE4sY0FBYztZQVhkLGlCQUFpQjtZQUdqQixRQUFRO1lBRlIsUUFBUTtZQStCRCxxQkFBcUI7WUFIckIsa0JBQWtCO1lBUmxCLGVBQWU7OzsyQkFzQnJCLFNBQVMsU0FBQyxjQUFjOztBQStNM0IsTUFBTSxnQkFBZ0I7SUFDcEIsWUFDVSxLQUE0QjtJQUNwQyxpREFBaUQ7SUFDekMsTUFBVztRQUZYLFVBQUssR0FBTCxLQUFLLENBQXVCO1FBRTVCLFdBQU0sR0FBTixNQUFNLENBQUs7SUFDbEIsQ0FBQztJQUVKLEdBQUcsQ0FBQyxLQUFVLEVBQUUsYUFBbUI7UUFDakMsSUFBSSxLQUFLLEtBQUssY0FBYyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDMUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ25CO1FBRUQsMENBQTBDO1FBQzFDLCtCQUErQjtRQUMvQixJQUFJO1FBRUosT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21waWxlcixcclxuICBDb21wb25lbnQsXHJcbiAgSW5qZWN0b3IsXHJcbiAgTmdNb2R1bGVSZWYsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBUeXBlLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBY3RpdmF0ZWRSb3V0ZSxcclxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxyXG4gIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgLy8gQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICBFdmVudCxcclxuICBOYXZpZ2F0aW9uRW5kLFxyXG4gIFBSSU1BUllfT1VUTEVULFxyXG4gIFJvdXRlcixcclxuICBSb3V0ZXNSZWNvZ25pemVkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNkTm90aWZ5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvbm90aWZ5JztcclxuaW1wb3J0IHtcclxuICBTZFRhYkFjdGl2YXRlZCxcclxuICBTZFRhYkRlYWN0aXZhdGVkLFxyXG59IGZyb20gJy4uLy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50JztcclxuXHJcbmltcG9ydCB7IFNkVGFiIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RhYi1yb3V0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZFRhYkFjdGlvbiB9IGZyb20gJy4uLy4uL2FjdGlvbnMvdGFiLXJvdXRlci5hY3Rpb24nO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItcm91dGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTZFRhYlJvdXRlck5hdkNvbXBvbmVudCB9IGZyb20gJy4uL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTZFRhYkRlY29yYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90YWItZGVjb3JhdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCAqIGFzIGhhc2ggZnJvbSAnb2JqZWN0LWhhc2gnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC10YWItcm91dGVyLW91dGxldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQuc2NzcyddLFxyXG4gIC8vIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RUYWJSb3V0ZXJPdXRsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gIEBWaWV3Q2hpbGQoJ3RhYlJvdXRlck5hdicpIHRhYlJvdXRlck5hdjogU2RUYWJSb3V0ZXJOYXZDb21wb25lbnQ7XHJcbiAgdGFiczogU2RUYWJbXSA9IFtdO1xyXG5cclxuICAjcm9vdFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICNmaXJzdExvYWQgPSB0cnVlO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgcHJpdmF0ZSB0YWJEZWNvcmF0b3JTZXJ2aWNlOiBTZFRhYkRlY29yYXRvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRhYlJvdXRlclNlcnZpY2U6IFNkVGFiUm91dGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgc2ROb3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgIHJvdXRlci5ldmVudHNcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGZpbHRlcihcclxuICAgICAgICAgICAgKGV2ZW50KSA9PlxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgUm91dGVzUmVjb2duaXplZCB8fFxyXG4gICAgICAgICAgICAgIGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChldmVudDogUm91dGVzUmVjb2duaXplZCB8IE5hdmlnYXRpb25FbmQpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuI2ZpcnN0TG9hZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoXHJcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5zbmFwc2hvdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLiNyb290Um91dGUgPSB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290O1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLiNhY3RpdmVSb3V0ZShcclxuICAgICAgICAgICAgICBldmVudC51cmxBZnRlclJlZGlyZWN0cyB8fCBldmVudC51cmwsXHJcbiAgICAgICAgICAgICAgcm91dGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCF0aGlzLiNmaXJzdExvYWQgJiYgZXZlbnQgaW5zdGFuY2VvZiBSb3V0ZXNSZWNvZ25pemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGVTbmFwc2hvdChldmVudC5zdGF0ZS5yb290KTtcclxuICAgICAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy4jYWN0aXZlUm91dGUoXHJcbiAgICAgICAgICAgICAgZXZlbnQudXJsQWZ0ZXJSZWRpcmVjdHMgfHwgZXZlbnQudXJsLFxyXG4gICAgICAgICAgICAgIHJvdXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChcclxuICAgICAgdGFiUm91dGVyU2VydmljZS5hY3Rpb25zLnN1YnNjcmliZSgoZXZlbnQ6IFNkVGFiQWN0aW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC50eXBlID09PSAnY2xvc2UnKSB7XHJcbiAgICAgICAgICB0aGlzLiNjbG9zZVRhYihldmVudC50YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgI2Nsb3NlVGFiID0gKHRhYjogU2RUYWIpID0+IHtcclxuICAgIGNvbnN0IHsgaXNBY3RpdmUsIGtleTogYWN0aXZlS2V5IH0gPSB0YWI7XHJcblxyXG4gICAgaWYgKGlzQWN0aXZlKSB7XHJcbiAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy50YWJzLmZpbmRJbmRleCgoeyBrZXkgfSkgPT4ga2V5ID09PSBhY3RpdmVLZXkpO1xyXG4gICAgICBjb25zdCBuZXh0VGFiID0gdGhpcy50YWJzW2FjdGl2ZUluZGV4ICsgMV0gfHwgdGhpcy50YWJzW2FjdGl2ZUluZGV4IC0gMV07XHJcbiAgICAgIGlmIChuZXh0VGFiKSB7XHJcbiAgICAgICAgY29uc3QgeyB1cmw6IG5leHRVcmwgfSA9IG5leHRUYWI7XHJcbiAgICAgICAgY29uc3QgbmV4dFF1ZXJ5UGFyYW1zID0ge1xyXG4gICAgICAgICAgLi4uKG5leHRUYWIucXVlcnlQYXJhbXMgfHwge30pLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbbmV4dFVybF0sIHtcclxuICAgICAgICAgIHF1ZXJ5UGFyYW1zOiBuZXh0UXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICBzdGF0ZToge1xyXG4gICAgICAgICAgICBzd2l0Y2hUYWI6IHRydWUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGFicyA9IHRoaXMudGFicy5maWx0ZXIoKHsga2V5IH0pID0+IGtleSAhPT0gYWN0aXZlS2V5KTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSB0YWIua2V5KTtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICAjYWN0aXZlUm91dGUgPSBhc3luYyAoXHJcbiAgICBmdWxsVXJsOiBzdHJpbmcsXHJcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGxcclxuICApID0+IHtcclxuICAgIGlmICghcm91dGU/LmNvbXBvbmVudCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wb25lbnQgPSByb3V0ZS5jb21wb25lbnQgYXMgVHlwZTxhbnk+O1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5xdWVyeVBhcmFtcyB8fCB7fSksXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAuLi4ocm91dGUucGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgW3VybF0gPSBmdWxsVXJsLnNwbGl0KCc/Jyk7XHJcbiAgICBjb25zdCBrZXkgPSBoYXNoKHsgdXJsLCBxdWVyeVBhcmFtcyB9KTtcclxuXHJcbiAgICBsZXQgZXhpc3RlZEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBTZFRhYiwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAodGFiLmtleSA9PT0ga2V5KSB7XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBleGlzdGVkSW5kZXggPSBpbmRleDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGFiLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KHRhYiwgU2RUYWJEZWFjdGl2YXRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhYi5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgY3VycmVudE5hdmlnYXRpb24/LmV4dHJhcz8uc3RhdGU/LnN3aXRjaFRhYikge1xyXG4gICAgICBjb25zdCBleGlzdGVkVGFiID0gdGhpcy50YWJzW2V4aXN0ZWRJbmRleF07XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKGV4aXN0ZWRUYWIpO1xyXG4gICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KGV4aXN0ZWRUYWIsIFNkVGFiQWN0aXZhdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygcm91dGU/LnBhcmVudD8ucm91dGVDb25maWc/LmxvYWRDaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHJvdXRlLnBhcmVudC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gYXdhaXQgdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMobW9kdWxlKTtcclxuICAgICAgICBjb25zdCBpbmplY3RvciA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGUoXHJcbiAgICAgICAgICB0aGlzLiNyb290Um91dGUsXHJcbiAgICAgICAgICBjb21wb25lbnRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCB0YWIgPSB7XHJcbiAgICAgICAgICBrZXksXHJcbiAgICAgICAgICBjb21wb25lbnQsXHJcbiAgICAgICAgICBpbmplY3RvcjogbmV3IFNkT3V0bGV0SW5qZWN0b3IoYWN0aXZhdGVkUm91dGUsIGluamVjdG9yKSxcclxuICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdXJsLFxyXG4gICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy50YWJSb3V0ZXJTZXJ2aWNlLnNldEN1cnJlbnRUYWIodGFiKTtcclxuICAgICAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgIWN1cnJlbnROYXZpZ2F0aW9uPy5leHRyYXM/LnN0YXRlPy5zd2l0Y2hUYWIpIHtcclxuICAgICAgICAgIHRoaXMudGFic1tleGlzdGVkSW5kZXhdID0gdGFiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnMucHVzaCh0YWIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgaWYgKHRoaXMudGFicy5sZW5ndGggPiAxMCkge1xyXG4gICAgICAgIHRoaXMuc2ROb3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKFxyXG4gICAgICAgICAgJ0LhuqFuIMSRw6MgbeG7nyBxdcOhIG5oaeG7gXUgdGFiLiBWdWkgbMOybmcgdOG6r3QgY8OhYyB0YWIga2jDtG5nIGTDuW5nIMSR4buDIGjhu4cgdGjhu5FuZyBob+G6oXQgxJHhu5luZyB04buRdCBoxqFuLidcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTIpIHtcclxuICAgICAgICB0aGlzLnRhYnMuc3BsaWNlKDAsIHRoaXMudGFicy5sZW5ndGggLSAxMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgd2hpbGUgKGFjdGl2YXRlZFJvdXRlU25hcHNob3QuZmlyc3RDaGlsZCkge1xyXG4gICAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFjdGl2YXRlZFJvdXRlU25hcHNob3Q7XHJcbiAgfTtcclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgY29tcG9uZW50OiBhbnlcclxuICApOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgIH1cclxuICAgIHdoaWxlIChhY3RpdmF0ZWRSb3V0ZS5maXJzdENoaWxkKSB7XHJcbiAgICAgIGFjdGl2YXRlZFJvdXRlID0gYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZDtcclxuICAgICAgaWYgKGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCAmJiBhY3RpdmF0ZWRSb3V0ZS5jb21wb25lbnQgPT09IGNvbXBvbmVudCkge1xyXG4gICAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfTtcclxufVxyXG5cclxuY2xhc3MgU2RPdXRsZXRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCxcclxuICAgIC8vIHByaXZhdGUgY2hpbGRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgcGFyZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHtcclxuICAgIGlmICh0b2tlbiA9PT0gQWN0aXZhdGVkUm91dGUgJiYgdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodG9rZW4gPT09IENoaWxkcmVuT3V0bGV0Q29udGV4dHMpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRDb250ZXh0cztcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -8,7 +8,7 @@ import { v4 } from 'uuid';
8
8
  import { Subject, Subscription, isObservable } from 'rxjs';
9
9
  import { SdNotifyService } from '@sd-angular/core/notify';
10
10
  import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
11
- import { startWith, switchMap, debounceTime, map } from 'rxjs/operators';
11
+ import { startWith, debounceTime, map, switchMap } from 'rxjs/operators';
12
12
  import hash from 'object-hash';
13
13
  import { SdSettingService } from '@sd-angular/core/setting';
14
14
  import { DeviceDetectorService } from 'ngx-device-detector';
@@ -723,7 +723,7 @@ SdPopupExport.propDecorators = {
723
723
  _gridOption: [{ type: Input, args: ['gridOption',] }]
724
724
  };
725
725
 
726
- var _COLUMNS, _cache, _getKey, _default, _get, _set, _remove;
726
+ var _COLUMNS, _cache, _getKey, _default, _load, _get, _set, _remove;
727
727
  class SdGridConfigurationService {
728
728
  constructor(settingService, gridMaterialConfiguration) {
729
729
  this.settingService = settingService;
@@ -737,20 +737,19 @@ class SdGridConfigurationService {
737
737
  this.init = (key, gridOption) => {
738
738
  if (!__classPrivateFieldGet(this, _cache)[key]) {
739
739
  const subject = new Subject();
740
- const get = __classPrivateFieldGet(this, _get).call(this, gridOption);
741
- const set = (configuration) => {
742
- configuration = __classPrivateFieldGet(this, _set).call(this, gridOption, configuration);
743
- subject.next(Object.assign({}, configuration));
744
- return configuration;
745
- };
746
740
  __classPrivateFieldGet(this, _cache)[key] = {
747
- get,
748
- set,
741
+ load: __classPrivateFieldGet(this, _load).call(this, gridOption, subject),
742
+ get: __classPrivateFieldGet(this, _get).call(this, gridOption),
743
+ set: (configuration) => {
744
+ configuration = __classPrivateFieldGet(this, _set).call(this, gridOption, configuration);
745
+ subject.next(Object.assign({}, configuration));
746
+ return configuration;
747
+ },
749
748
  remove: () => {
750
749
  __classPrivateFieldGet(this, _remove).call(this, gridOption);
751
750
  subject.next(__classPrivateFieldGet(this, _default).call(this, gridOption));
752
751
  },
753
- observer: subject.pipe(switchMap(__classPrivateFieldGet(this, _get).call(this, gridOption)))
752
+ observer: subject
754
753
  };
755
754
  }
756
755
  return __classPrivateFieldGet(this, _cache)[key];
@@ -782,6 +781,13 @@ class SdGridConfigurationService {
782
781
  columns
783
782
  };
784
783
  });
784
+ _load.set(this, (gridOption, subject) => {
785
+ return () => __awaiter(this, void 0, void 0, function* () {
786
+ const get = __classPrivateFieldGet(this, _get).call(this, gridOption);
787
+ const configuration = yield get();
788
+ subject.next(Object.assign({}, configuration));
789
+ });
790
+ });
785
791
  _get.set(this, (gridOption) => {
786
792
  return () => __awaiter(this, void 0, void 0, function* () {
787
793
  const key = __classPrivateFieldGet(this, _getKey).call(this, gridOption);
@@ -1041,7 +1047,7 @@ class SdGridConfigurationService {
1041
1047
  };
1042
1048
  }
1043
1049
  }
1044
- _COLUMNS = new WeakMap(), _cache = new WeakMap(), _getKey = new WeakMap(), _default = new WeakMap(), _get = new WeakMap(), _set = new WeakMap(), _remove = new WeakMap();
1050
+ _COLUMNS = new WeakMap(), _cache = new WeakMap(), _getKey = new WeakMap(), _default = new WeakMap(), _load = new WeakMap(), _get = new WeakMap(), _set = new WeakMap(), _remove = new WeakMap();
1045
1051
  SdGridConfigurationService.decorators = [
1046
1052
  { type: Injectable }
1047
1053
  ];
@@ -1105,7 +1111,7 @@ SdGridService.ctorParameters = () => [
1105
1111
  { type: SdUtilityService }
1106
1112
  ];
1107
1113
 
1108
- var _paginator, _sort, _subscription$1, _optionChanges, _initCellDef, _initFilterDef, _initFooterDef, _filterExportInfo, _initConfiguration, _filterLocal, _getFilter, _load, _render, _exportedItems, _allColumns, _allExportedColumns, _onExport, _updateSelectedItems;
1114
+ var _paginator, _sort, _subscription$1, _optionChanges, _initCellDef, _initFilterDef, _initFooterDef, _filterExportInfo, _initConfiguration, _filterLocal, _getFilter, _load$1, _render, _exportedItems, _allColumns, _allExportedColumns, _onExport, _updateSelectedItems;
1109
1115
  class SdGridMaterial {
1110
1116
  constructor(ref, configuration, gridConfigurationService, exportService, notifyService, translateService, gridService) {
1111
1117
  this.ref = ref;
@@ -1303,7 +1309,7 @@ class SdGridMaterial {
1303
1309
  pageSize: ((_j = __classPrivateFieldGet(this, _paginator)) === null || _j === void 0 ? void 0 : _j.pageSize) || ((_l = (_k = this.gridOption) === null || _k === void 0 ? void 0 : _k.paginate) === null || _l === void 0 ? void 0 : _l.pageSize) || 50
1304
1310
  });
1305
1311
  });
1306
- _load.set(this, (filterReq) => __awaiter(this, void 0, void 0, function* () {
1312
+ _load$1.set(this, (filterReq) => __awaiter(this, void 0, void 0, function* () {
1307
1313
  this.isLoading = true;
1308
1314
  try {
1309
1315
  if (this.gridOption.type === 'server') {
@@ -1343,7 +1349,7 @@ class SdGridMaterial {
1343
1349
  __classPrivateFieldGet(this, _updateSelectedItems).call(this);
1344
1350
  }));
1345
1351
  this.reload = () => __awaiter(this, void 0, void 0, function* () {
1346
- const data = yield __classPrivateFieldGet(this, _load).call(this, __classPrivateFieldGet(this, _getFilter).call(this));
1352
+ const data = yield __classPrivateFieldGet(this, _load$1).call(this, __classPrivateFieldGet(this, _getFilter).call(this));
1347
1353
  __classPrivateFieldGet(this, _render).call(this, data);
1348
1354
  });
1349
1355
  _exportedItems.set(this, (pageNumber = 0, pageSize = 10000) => __awaiter(this, void 0, void 0, function* () {
@@ -1667,7 +1673,7 @@ class SdGridMaterial {
1667
1673
  __classPrivateFieldGet(this, _subscription$1).add(gridFilter.filterChange.pipe(debounceTime(200), map(() => {
1668
1674
  __classPrivateFieldGet(this, _paginator).pageIndex = 0;
1669
1675
  return __classPrivateFieldGet(this, _getFilter).call(this);
1670
- }), switchMap(__classPrivateFieldGet(this, _load))).subscribe(__classPrivateFieldGet(this, _render)));
1676
+ }), switchMap(__classPrivateFieldGet(this, _load$1))).subscribe(__classPrivateFieldGet(this, _render)));
1671
1677
  }
1672
1678
  }
1673
1679
  set option(option) {
@@ -1684,18 +1690,19 @@ class SdGridMaterial {
1684
1690
  });
1685
1691
  const configuration = this.gridConfigurationService.init(this.key, this.gridOption);
1686
1692
  this.gridConfigurationObserver = configuration.observer;
1693
+ configuration.load();
1687
1694
  }
1688
1695
  }
1689
1696
  set paginator(paginator) {
1690
1697
  if (paginator && __classPrivateFieldGet(this, _paginator) !== paginator) {
1691
1698
  __classPrivateFieldSet(this, _paginator, paginator);
1692
- __classPrivateFieldGet(this, _subscription$1).add(paginator.page.pipe(debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load))).subscribe(__classPrivateFieldGet(this, _render)));
1699
+ __classPrivateFieldGet(this, _subscription$1).add(paginator.page.pipe(debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load$1))).subscribe(__classPrivateFieldGet(this, _render)));
1693
1700
  }
1694
1701
  }
1695
1702
  set sort(sort) {
1696
1703
  if (sort && __classPrivateFieldGet(this, _sort) !== sort) {
1697
1704
  __classPrivateFieldSet(this, _sort, sort);
1698
- __classPrivateFieldGet(this, _subscription$1).add(sort.sortChange.pipe(debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load))).subscribe(__classPrivateFieldGet(this, _render)));
1705
+ __classPrivateFieldGet(this, _subscription$1).add(sort.sortChange.pipe(debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load$1))).subscribe(__classPrivateFieldGet(this, _render)));
1699
1706
  }
1700
1707
  }
1701
1708
  ngOnInit() {
@@ -1705,7 +1712,7 @@ class SdGridMaterial {
1705
1712
  __classPrivateFieldGet(this, _subscription$1).add(this.sdCellDefs.changes.pipe(startWith([])).subscribe(__classPrivateFieldGet(this, _initCellDef)));
1706
1713
  __classPrivateFieldGet(this, _subscription$1).add(this.sdFooterDefs.changes.pipe(startWith([])).subscribe(__classPrivateFieldGet(this, _initFooterDef)));
1707
1714
  __classPrivateFieldGet(this, _subscription$1).add(this.sdFilterDefs.changes.pipe(startWith([])).subscribe(__classPrivateFieldGet(this, _initFilterDef)));
1708
- __classPrivateFieldGet(this, _subscription$1).add(__classPrivateFieldGet(this, _optionChanges).pipe(startWith({}), debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load))).subscribe(__classPrivateFieldGet(this, _render)));
1715
+ __classPrivateFieldGet(this, _subscription$1).add(__classPrivateFieldGet(this, _optionChanges).pipe(startWith({}), debounceTime(200), map(__classPrivateFieldGet(this, _getFilter)), switchMap(__classPrivateFieldGet(this, _load$1))).subscribe(__classPrivateFieldGet(this, _render)));
1709
1716
  this.ref.detectChanges();
1710
1717
  }
1711
1718
  ngOnDestroy() {
@@ -1715,7 +1722,7 @@ class SdGridMaterial {
1715
1722
  moveItemInArray(columns, event.previousIndex, event.currentIndex);
1716
1723
  }
1717
1724
  }
1718
- _paginator = new WeakMap(), _sort = new WeakMap(), _subscription$1 = new WeakMap(), _optionChanges = new WeakMap(), _initCellDef = new WeakMap(), _initFilterDef = new WeakMap(), _initFooterDef = new WeakMap(), _filterExportInfo = new WeakMap(), _initConfiguration = new WeakMap(), _filterLocal = new WeakMap(), _getFilter = new WeakMap(), _load = new WeakMap(), _render = new WeakMap(), _exportedItems = new WeakMap(), _allColumns = new WeakMap(), _allExportedColumns = new WeakMap(), _onExport = new WeakMap(), _updateSelectedItems = new WeakMap();
1725
+ _paginator = new WeakMap(), _sort = new WeakMap(), _subscription$1 = new WeakMap(), _optionChanges = new WeakMap(), _initCellDef = new WeakMap(), _initFilterDef = new WeakMap(), _initFooterDef = new WeakMap(), _filterExportInfo = new WeakMap(), _initConfiguration = new WeakMap(), _filterLocal = new WeakMap(), _getFilter = new WeakMap(), _load$1 = new WeakMap(), _render = new WeakMap(), _exportedItems = new WeakMap(), _allColumns = new WeakMap(), _allExportedColumns = new WeakMap(), _onExport = new WeakMap(), _updateSelectedItems = new WeakMap();
1719
1726
  SdGridMaterial.decorators = [
1720
1727
  { type: Component, args: [{
1721
1728
  selector: 'sd-grid-material',