@sd-angular/core 0.0.836 → 0.0.840

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 (53) hide show
  1. package/bundles/sd-angular-core-grid-material.umd.js +2 -1
  2. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-tab-router.umd.js +830 -0
  6. package/bundles/sd-angular-core-tab-router.umd.js.map +1 -0
  7. package/bundles/sd-angular-core-tab-router.umd.min.js +16 -0
  8. package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -0
  9. package/bundles/sd-angular-core.umd.js +4 -4
  10. package/bundles/sd-angular-core.umd.js.map +1 -1
  11. package/bundles/sd-angular-core.umd.min.js +1 -1
  12. package/bundles/sd-angular-core.umd.min.js.map +1 -1
  13. package/esm2015/grid-material/src/lib/grid-material.component.js +3 -2
  14. package/esm2015/public-api.js +2 -1
  15. package/esm2015/tab-router/index.js +2 -0
  16. package/esm2015/tab-router/sd-angular-core-tab-router.js +7 -0
  17. package/esm2015/tab-router/src/lib/actions/tab-router.action.js +2 -0
  18. package/esm2015/tab-router/src/lib/components/tab-router-item/tab-router-item.component.js +26 -0
  19. package/esm2015/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.js +33 -0
  20. package/esm2015/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.js +196 -0
  21. package/esm2015/tab-router/src/lib/decorators/tab.decorator.js +9 -0
  22. package/esm2015/tab-router/src/lib/events/tab-router.event.js +17 -0
  23. package/esm2015/tab-router/src/lib/models/tab-router.model.js +5 -0
  24. package/esm2015/tab-router/src/lib/pipes/tab-info.pipe.js +34 -0
  25. package/esm2015/tab-router/src/lib/services/tab-decorator.service.js +26 -0
  26. package/esm2015/tab-router/src/lib/services/tab-router.service.js +106 -0
  27. package/esm2015/tab-router/src/lib/tab-router.module.js +29 -0
  28. package/esm2015/tab-router/src/public-api.js +18 -0
  29. package/fesm2015/sd-angular-core-grid-material.js +2 -1
  30. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  31. package/fesm2015/sd-angular-core-tab-router.js +464 -0
  32. package/fesm2015/sd-angular-core-tab-router.js.map +1 -0
  33. package/fesm2015/sd-angular-core.js +1 -0
  34. package/fesm2015/sd-angular-core.js.map +1 -1
  35. package/package.json +1 -1
  36. package/public-api.d.ts +1 -0
  37. package/{sd-angular-core-0.0.836.tgz → sd-angular-core-0.0.840.tgz} +0 -0
  38. package/tab-router/index.d.ts +1 -0
  39. package/tab-router/package.json +12 -0
  40. package/tab-router/sd-angular-core-tab-router.d.ts +6 -0
  41. package/tab-router/sd-angular-core-tab-router.metadata.json +1 -0
  42. package/tab-router/src/lib/actions/tab-router.action.d.ts +5 -0
  43. package/tab-router/src/lib/components/tab-router-item/tab-router-item.component.d.ts +8 -0
  44. package/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.d.ts +10 -0
  45. package/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.d.ts +22 -0
  46. package/tab-router/src/lib/decorators/tab.decorator.d.ts +17 -0
  47. package/tab-router/src/lib/events/tab-router.event.d.ts +11 -0
  48. package/tab-router/src/lib/models/tab-router.model.d.ts +20 -0
  49. package/tab-router/src/lib/pipes/tab-info.pipe.d.ts +9 -0
  50. package/tab-router/src/lib/services/tab-decorator.service.d.ts +6 -0
  51. package/tab-router/src/lib/services/tab-router.service.d.ts +24 -0
  52. package/tab-router/src/lib/tab-router.module.d.ts +2 -0
  53. package/tab-router/src/public-api.d.ts +9 -0
@@ -0,0 +1,196 @@
1
+ var _rootRoute, _subscription, _closeTab, _activeRoute, _getActivatedRouteSnapshot, _getActivatedRoute;
2
+ import { __awaiter, __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { ChangeDetectorRef, Compiler, Component, Injector, ViewChild, } from '@angular/core';
4
+ import { ActivatedRoute, ChildrenOutletContexts, 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
+ export class SdTabRouterOutletComponent {
11
+ constructor(router, cd, injector, compiler, parentContexts, tabDecoratorService, tabRouterService, sdNotifyService) {
12
+ this.router = router;
13
+ this.cd = cd;
14
+ this.injector = injector;
15
+ this.compiler = compiler;
16
+ this.parentContexts = parentContexts;
17
+ this.tabDecoratorService = tabDecoratorService;
18
+ this.tabRouterService = tabRouterService;
19
+ this.sdNotifyService = sdNotifyService;
20
+ this.tabs = [];
21
+ _rootRoute.set(this, void 0);
22
+ _subscription.set(this, new Subscription());
23
+ _closeTab.set(this, (tab) => {
24
+ var _a;
25
+ this.tabs = this.tabs.filter(({ key }) => key !== tab.key);
26
+ if (tab.isActive) {
27
+ const lastTab = this.tabs[this.tabs.length - 1];
28
+ if (lastTab) {
29
+ this.router.navigateByUrl(lastTab.url, {
30
+ state: {
31
+ switchTab: true,
32
+ },
33
+ });
34
+ }
35
+ else {
36
+ this.router.navigateByUrl('/', {
37
+ state: {
38
+ switchTab: true,
39
+ },
40
+ });
41
+ }
42
+ }
43
+ else {
44
+ (_a = this.tabRouterNav) === null || _a === void 0 ? void 0 : _a.checkUI();
45
+ this.cd.markForCheck();
46
+ }
47
+ });
48
+ _activeRoute.set(this, (url, route) => __awaiter(this, void 0, void 0, function* () {
49
+ var _a, _b, _c, _d, _e, _f, _g;
50
+ if (!(route === null || route === void 0 ? void 0 : route.component)) {
51
+ return;
52
+ }
53
+ const component = route.component;
54
+ const queryParams = Object.assign({}, (route.queryParams || {}));
55
+ const params = Object.assign({}, (route.params || {}));
56
+ let existedIndex = -1;
57
+ this.tabs.forEach((tab, index) => {
58
+ if (tab.key === url) {
59
+ tab.isActive = true;
60
+ existedIndex = index;
61
+ }
62
+ else {
63
+ if (tab.isActive) {
64
+ this.tabRouterService.pushEvent(tab, SdTabDeactivated);
65
+ }
66
+ tab.isActive = false;
67
+ }
68
+ });
69
+ const currentNavigation = this.router.getCurrentNavigation();
70
+ if (existedIndex >= 0 && ((_b = (_a = currentNavigation === null || currentNavigation === void 0 ? void 0 : currentNavigation.extras) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.switchTab)) {
71
+ const existedTab = this.tabs[existedIndex];
72
+ this.tabRouterService.setCurrentTab(existedTab);
73
+ this.tabRouterService.pushEvent(existedTab, SdTabActivated);
74
+ }
75
+ else {
76
+ 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') {
77
+ const module = yield route.parent.routeConfig.loadChildren();
78
+ const factory = yield this.compiler.compileModuleAsync(module);
79
+ const injector = factory.create(this.injector);
80
+ // let tabInfo = {};
81
+ // if ('getTabInfo' in component) {
82
+ // tabInfo = component.getTabInfo({
83
+ // params,
84
+ // queryParams,
85
+ // });
86
+ // }
87
+ const activatedRoute = __classPrivateFieldGet(this, _getActivatedRoute).call(this, __classPrivateFieldGet(this, _rootRoute), component);
88
+ const tab = {
89
+ key: url,
90
+ component,
91
+ injector: new SdOutletInjector(activatedRoute, injector),
92
+ isActive: true,
93
+ name: url,
94
+ url,
95
+ params,
96
+ queryParams,
97
+ };
98
+ this.tabRouterService.setCurrentTab(tab);
99
+ if (existedIndex >= 0 && !((_f = (_e = currentNavigation === null || currentNavigation === void 0 ? void 0 : currentNavigation.extras) === null || _e === void 0 ? void 0 : _e.state) === null || _f === void 0 ? void 0 : _f.switchTab)) {
100
+ this.tabs[existedIndex] = tab;
101
+ }
102
+ else {
103
+ this.tabs.push(tab);
104
+ }
105
+ }
106
+ (_g = this.tabRouterNav) === null || _g === void 0 ? void 0 : _g.checkUI();
107
+ if (this.tabs.length > 10) {
108
+ 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.');
109
+ }
110
+ if (this.tabs.length > 12) {
111
+ this.tabs.splice(0, this.tabs.length - 10);
112
+ }
113
+ }
114
+ this.cd.markForCheck();
115
+ }));
116
+ _getActivatedRouteSnapshot.set(this, (activatedRouteSnapshot) => {
117
+ if (!activatedRouteSnapshot) {
118
+ return null;
119
+ }
120
+ if (activatedRouteSnapshot.firstChild) {
121
+ return __classPrivateFieldGet(this, _getActivatedRouteSnapshot).call(this, activatedRouteSnapshot.firstChild);
122
+ }
123
+ else {
124
+ return activatedRouteSnapshot;
125
+ }
126
+ });
127
+ _getActivatedRoute.set(this, (activatedRoute, component) => {
128
+ if (!activatedRoute) {
129
+ return null;
130
+ }
131
+ if (activatedRoute.component && activatedRoute.component === component) {
132
+ return activatedRoute;
133
+ }
134
+ else if (activatedRoute.firstChild) {
135
+ return __classPrivateFieldGet(this, _getActivatedRoute).call(this, activatedRoute.firstChild, component);
136
+ }
137
+ else {
138
+ return null;
139
+ }
140
+ });
141
+ __classPrivateFieldGet(this, _subscription).add(router.events.subscribe((event) => __awaiter(this, void 0, void 0, function* () {
142
+ if (event instanceof RoutesRecognized) {
143
+ const route = __classPrivateFieldGet(this, _getActivatedRouteSnapshot).call(this, event.state.root);
144
+ __classPrivateFieldSet(this, _rootRoute, this.router.routerState.root);
145
+ yield __classPrivateFieldGet(this, _activeRoute).call(this, event.urlAfterRedirects || event.url, route);
146
+ }
147
+ })));
148
+ __classPrivateFieldGet(this, _subscription).add(tabRouterService.actions.subscribe((event) => {
149
+ if (event && event.type === 'close') {
150
+ __classPrivateFieldGet(this, _closeTab).call(this, event.tab);
151
+ }
152
+ }));
153
+ }
154
+ ngOnDestroy() {
155
+ __classPrivateFieldGet(this, _subscription).unsubscribe();
156
+ }
157
+ }
158
+ _rootRoute = new WeakMap(), _subscription = new WeakMap(), _closeTab = new WeakMap(), _activeRoute = new WeakMap(), _getActivatedRouteSnapshot = new WeakMap(), _getActivatedRoute = new WeakMap();
159
+ SdTabRouterOutletComponent.decorators = [
160
+ { type: Component, args: [{
161
+ selector: 'sd-tab-router-outlet',
162
+ 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",
163
+ 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%}"]
164
+ },] }
165
+ ];
166
+ SdTabRouterOutletComponent.ctorParameters = () => [
167
+ { type: Router },
168
+ { type: ChangeDetectorRef },
169
+ { type: Injector },
170
+ { type: Compiler },
171
+ { type: ChildrenOutletContexts },
172
+ { type: SdTabDecoratorService },
173
+ { type: SdTabRouterService },
174
+ { type: SdNotifyService }
175
+ ];
176
+ SdTabRouterOutletComponent.propDecorators = {
177
+ tabRouterNav: [{ type: ViewChild, args: ['tabRouterNav',] }]
178
+ };
179
+ class SdOutletInjector {
180
+ constructor(route,
181
+ // private childContexts: ChildrenOutletContexts,
182
+ parent) {
183
+ this.route = route;
184
+ this.parent = parent;
185
+ }
186
+ get(token, notFoundValue) {
187
+ if (token === ActivatedRoute && this.route) {
188
+ return this.route;
189
+ }
190
+ // if (token === ChildrenOutletContexts) {
191
+ // return this.childContexts;
192
+ // }
193
+ return this.parent.get(token, notFoundValue);
194
+ }
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixTQUFTLEVBQ1QsUUFBUSxFQUtSLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsY0FBYyxFQUVkLHNCQUFzQixFQUl0QixNQUFNLEVBQ04sZ0JBQWdCLEdBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7QUFJdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQVE3RSxNQUFNLE9BQU8sMEJBQTBCO0lBTXJDLFlBQ1UsTUFBYyxFQUNkLEVBQXFCLEVBQ3JCLFFBQWtCLEVBQ2xCLFFBQWtCLEVBQ2xCLGNBQXNDLEVBQ3RDLG1CQUEwQyxFQUMxQyxnQkFBb0MsRUFDcEMsZUFBZ0M7UUFQaEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7UUFDdEMsd0JBQW1C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O1lBSHJCLGtCQUFrQjtZQVJsQixlQUFlOzs7MkJBb0JyQixTQUFTLFNBQUMsY0FBYzs7QUE0SzNCLE1BQU0sZ0JBQWdCO0lBQ3BCLFlBQ1UsS0FBNEI7SUFDcEMsaURBQWlEO0lBQ3pDLE1BQVc7UUFGWCxVQUFLLEdBQUwsS0FBSyxDQUF1QjtRQUU1QixXQUFNLEdBQU4sTUFBTSxDQUFLO0lBQ2xCLENBQUM7SUFFSixHQUFHLENBQUMsS0FBVSxFQUFFLGFBQW1CO1FBQ2pDLElBQUksS0FBSyxLQUFLLGNBQWMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNuQjtRQUVELDBDQUEwQztRQUMxQywrQkFBK0I7UUFDL0IsSUFBSTtRQUVKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcGlsZXIsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEluamVjdG9yLFxyXG4gIE5nTW9kdWxlUmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgVHlwZSxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQWN0aXZhdGVkUm91dGUsXHJcbiAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcclxuICBDaGlsZHJlbk91dGxldENvbnRleHRzLFxyXG4gIC8vIENoaWxkcmVuT3V0bGV0Q29udGV4dHMsXHJcbiAgRXZlbnQsXHJcbiAgUFJJTUFSWV9PVVRMRVQsXHJcbiAgUm91dGVyLFxyXG4gIFJvdXRlc1JlY29nbml6ZWQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQge1xyXG4gIFNkVGFiQWN0aXZhdGVkLFxyXG4gIFNkVGFiRGVhY3RpdmF0ZWQsXHJcbn0gZnJvbSAnLi4vLi4vZXZlbnRzL3RhYi1yb3V0ZXIuZXZlbnQnO1xyXG5cclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiQWN0aW9uIH0gZnJvbSAnLi4vLi4vYWN0aW9ucy90YWItcm91dGVyLmFjdGlvbic7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYi1yb3V0ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyTmF2Q29tcG9uZW50IH0gZnJvbSAnLi4vdGFiLXJvdXRlci1uYXYvdGFiLXJvdXRlci1uYXYuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkVGFiRGVjb3JhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RhYi1kZWNvcmF0b3Iuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLXRhYi1yb3V0ZXItb3V0bGV0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFiLXJvdXRlci1vdXRsZXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgLy8gY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYlJvdXRlck91dGxldENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgQFZpZXdDaGlsZCgndGFiUm91dGVyTmF2JykgdGFiUm91dGVyTmF2OiBTZFRhYlJvdXRlck5hdkNvbXBvbmVudDtcclxuICB0YWJzOiBTZFRhYltdID0gW107XHJcblxyXG4gICNyb290Um91dGU6IEFjdGl2YXRlZFJvdXRlO1xyXG4gICNzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLFxyXG4gICAgcHJpdmF0ZSBwYXJlbnRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgdGFiRGVjb3JhdG9yU2VydmljZTogU2RUYWJEZWNvcmF0b3JTZXJ2aWNlLCBcclxuICAgIHByaXZhdGUgdGFiUm91dGVyU2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzZE5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZChyb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShhc3luYyAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIFJvdXRlc1JlY29nbml6ZWQpIHtcclxuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoZXZlbnQuc3RhdGUucm9vdCk7XHJcbiAgICAgICAgdGhpcy4jcm9vdFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUucm9vdDtcclxuICAgICAgICBhd2FpdCB0aGlzLiNhY3RpdmVSb3V0ZShldmVudC51cmxBZnRlclJlZGlyZWN0cyB8fCBldmVudC51cmwsIHJvdXRlKTtcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG5cclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGFiUm91dGVyU2VydmljZS5hY3Rpb25zLnN1YnNjcmliZSgoZXZlbnQ6IFNkVGFiQWN0aW9uIHwgbnVsbCkgPT4ge1xyXG4gICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudHlwZSA9PT0gJ2Nsb3NlJykge1xyXG4gICAgICAgIHRoaXMuI2Nsb3NlVGFiKGV2ZW50LnRhYik7XHJcbiAgICAgIH1cclxuICAgIH0pKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjY2xvc2VUYWIgPSAodGFiOiBTZFRhYikgPT4ge1xyXG4gICAgdGhpcy50YWJzID0gdGhpcy50YWJzLmZpbHRlcigoeyBrZXkgfSkgPT4ga2V5ICE9PSB0YWIua2V5KTtcclxuICAgIGlmICh0YWIuaXNBY3RpdmUpIHtcclxuICAgICAgY29uc3QgbGFzdFRhYiA9IHRoaXMudGFic1t0aGlzLnRhYnMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChsYXN0VGFiKSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChsYXN0VGFiLnVybCwge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJywge1xyXG4gICAgICAgICAgc3RhdGU6IHtcclxuICAgICAgICAgICAgc3dpdGNoVGFiOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50YWJSb3V0ZXJOYXY/LmNoZWNrVUkoKTtcclxuICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNhY3RpdmVSb3V0ZSA9IGFzeW5jICh1cmw6IHN0cmluZywgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsKSA9PiB7XHJcbiAgICBpZiAoIXJvdXRlPy5jb21wb25lbnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbXBvbmVudCA9IHJvdXRlLmNvbXBvbmVudCBhcyBUeXBlPGFueT47XHJcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHtcclxuICAgICAgLi4uKHJvdXRlLnF1ZXJ5UGFyYW1zIHx8IHt9KSxcclxuICAgIH07XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIC4uLihyb3V0ZS5wYXJhbXMgfHwge30pLFxyXG4gICAgfTtcclxuXHJcbiAgICBsZXQgZXhpc3RlZEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnRhYnMuZm9yRWFjaCgodGFiOiBTZFRhYiwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBpZiAodGFiLmtleSA9PT0gdXJsKSB7XHJcbiAgICAgICAgdGFiLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBleGlzdGVkSW5kZXggPSBpbmRleDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAodGFiLmlzQWN0aXZlKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KHRhYiwgU2RUYWJEZWFjdGl2YXRlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRhYi5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjdXJyZW50TmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICBpZiAoZXhpc3RlZEluZGV4ID49IDAgJiYgY3VycmVudE5hdmlnYXRpb24/LmV4dHJhcz8uc3RhdGU/LnN3aXRjaFRhYikge1xyXG4gICAgICBjb25zdCBleGlzdGVkVGFiID0gdGhpcy50YWJzW2V4aXN0ZWRJbmRleF07XHJcbiAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKGV4aXN0ZWRUYWIpO1xyXG4gICAgICB0aGlzLnRhYlJvdXRlclNlcnZpY2UucHVzaEV2ZW50KGV4aXN0ZWRUYWIsIFNkVGFiQWN0aXZhdGVkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0eXBlb2Ygcm91dGU/LnBhcmVudD8ucm91dGVDb25maWc/LmxvYWRDaGlsZHJlbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IGF3YWl0IHJvdXRlLnBhcmVudC5yb3V0ZUNvbmZpZy5sb2FkQ2hpbGRyZW4oKTtcclxuICAgICAgICBjb25zdCBmYWN0b3J5ID0gYXdhaXQgdGhpcy5jb21waWxlci5jb21waWxlTW9kdWxlQXN5bmMobW9kdWxlKTtcclxuICAgICAgICBjb25zdCBpbmplY3RvciA9IGZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IpO1xyXG4gICAgICAgIC8vIGxldCB0YWJJbmZvID0ge307XHJcbiAgICAgICAgLy8gaWYgKCdnZXRUYWJJbmZvJyBpbiBjb21wb25lbnQpIHtcclxuICAgICAgICAvLyAgIHRhYkluZm8gPSBjb21wb25lbnQuZ2V0VGFiSW5mbyh7XHJcbiAgICAgICAgLy8gICAgIHBhcmFtcyxcclxuICAgICAgICAvLyAgICAgcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgLy8gICB9KTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIGNvbnN0IGFjdGl2YXRlZFJvdXRlID0gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGUoXHJcbiAgICAgICAgICB0aGlzLiNyb290Um91dGUsXHJcbiAgICAgICAgICBjb21wb25lbnRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCB0YWIgPSB7XHJcbiAgICAgICAgICBrZXk6IHVybCxcclxuICAgICAgICAgIGNvbXBvbmVudCxcclxuICAgICAgICAgIGluamVjdG9yOiBuZXcgU2RPdXRsZXRJbmplY3RvcihhY3RpdmF0ZWRSb3V0ZSwgaW5qZWN0b3IpLFxyXG5cclxuICAgICAgICAgIGlzQWN0aXZlOiB0cnVlLFxyXG4gICAgICAgICAgbmFtZTogdXJsLFxyXG4gICAgICAgICAgdXJsLFxyXG4gICAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgICAgcXVlcnlQYXJhbXMsXHJcbiAgICAgICAgICAvLyAuLi50YWJJbmZvLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMudGFiUm91dGVyU2VydmljZS5zZXRDdXJyZW50VGFiKHRhYik7XHJcbiAgICAgICAgaWYgKGV4aXN0ZWRJbmRleCA+PSAwICYmICFjdXJyZW50TmF2aWdhdGlvbj8uZXh0cmFzPy5zdGF0ZT8uc3dpdGNoVGFiKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYnNbZXhpc3RlZEluZGV4XSA9IHRhYjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50YWJzLnB1c2godGFiKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMudGFiUm91dGVyTmF2Py5jaGVja1VJKCk7XHJcbiAgICAgIGlmICh0aGlzLnRhYnMubGVuZ3RoID4gMTApIHtcclxuICAgICAgICB0aGlzLnNkTm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyhcclxuICAgICAgICAgICdC4bqhbiDEkcOjIG3hu58gcXXDoSBuaGnhu4F1IHRhYi4gVnVpIGzDsm5nIHThuq90IGPDoWMgdGFiIGtow7RuZyBkw7luZyDEkeG7gyBo4buHIHRo4buRbmcgaG/huqF0IMSR4buZbmcgdOG7kXQgaMahbi4nXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50YWJzLmxlbmd0aCA+IDEyKSB7XHJcbiAgICAgICAgdGhpcy50YWJzLnNwbGljZSgwLCB0aGlzLnRhYnMubGVuZ3RoIC0gMTApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSAoXHJcbiAgICBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90XHJcbiAgKTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LmZpcnN0Q2hpbGQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuI2dldEFjdGl2YXRlZFJvdXRlU25hcHNob3QoYWN0aXZhdGVkUm91dGVTbmFwc2hvdC5maXJzdENoaWxkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZVNuYXBzaG90O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2dldEFjdGl2YXRlZFJvdXRlID0gKFxyXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgY29tcG9uZW50OiBhbnlcclxuICApOiBBY3RpdmF0ZWRSb3V0ZSB8IG51bGwgPT4ge1xyXG4gICAgaWYgKCFhY3RpdmF0ZWRSb3V0ZSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWN0aXZhdGVkUm91dGUuY29tcG9uZW50ICYmIGFjdGl2YXRlZFJvdXRlLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KSB7XHJcbiAgICAgIHJldHVybiBhY3RpdmF0ZWRSb3V0ZTtcclxuICAgIH0gZWxzZSBpZiAoYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy4jZ2V0QWN0aXZhdGVkUm91dGUoYWN0aXZhdGVkUm91dGUuZmlyc3RDaGlsZCwgY29tcG9uZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgU2RPdXRsZXRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlIHwgbnVsbCxcclxuICAgIC8vIHByaXZhdGUgY2hpbGRDb250ZXh0czogQ2hpbGRyZW5PdXRsZXRDb250ZXh0cyxcclxuICAgIHByaXZhdGUgcGFyZW50OiBhbnlcclxuICApIHt9XHJcblxyXG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55KTogYW55IHtcclxuICAgIGlmICh0b2tlbiA9PT0gQWN0aXZhdGVkUm91dGUgJiYgdGhpcy5yb3V0ZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yb3V0ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodG9rZW4gPT09IENoaWxkcmVuT3V0bGV0Q29udGV4dHMpIHtcclxuICAgIC8vICAgcmV0dXJuIHRoaXMuY2hpbGRDb250ZXh0cztcclxuICAgIC8vIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZ2V0KHRva2VuLCBub3RGb3VuZFZhbHVlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,9 @@
1
+ import { SdTabDecoratorService } from '../services/tab-decorator.service';
2
+ export function SdTabComponent(builder) {
3
+ return (constructor) => {
4
+ const service = SdTabDecoratorService.getService();
5
+ service.addBuilder(builder);
6
+ console.log(constructor);
7
+ };
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmRlY29yYXRvci5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL2RlY29yYXRvcnMvdGFiLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQVMxRSxNQUFNLFVBQVUsY0FBYyxDQUFJLE9BQThCO0lBQzlELE9BQU8sQ0FBQyxXQUFjLEVBQUUsRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNuRCxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RUYWJEZWNvcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFiLWRlY29yYXRvci5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBTZFRhYkNvbXBvbmVudEJ1aWxkZXIge1xyXG4gIGNvbXBvbmVudDogVHlwZTxhbnk+O1xyXG4gIG5hbWU6IHN0cmluZyB8ICgoYXJnczogeyBwYXJhbXM6IGFueSwgcXVlcnlQYXJhbXM6IGFueSB9KSA9PiBzdHJpbmcpO1xyXG4gIGluaXRpYWxOYW1lOiBzdHJpbmcgfCAoKGFyZ3M6IHsgcGFyYW1zOiBhbnksIHF1ZXJ5UGFyYW1zOiBhbnkgfSkgPT4gc3RyaW5nKTtcclxuICBjb2xvcj86IHN0cmluZyB8ICgoYXJnczogeyBwYXJhbXM6IGFueSwgcXVlcnlQYXJhbXM6IGFueSB9KSA9PiBzdHJpbmcpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gU2RUYWJDb21wb25lbnQ8VD4oYnVpbGRlcjogU2RUYWJDb21wb25lbnRCdWlsZGVyKSB7XHJcbiAgcmV0dXJuIChjb25zdHJ1Y3RvcjogVCkgPT4ge1xyXG4gICAgY29uc3Qgc2VydmljZSA9IFNkVGFiRGVjb3JhdG9yU2VydmljZS5nZXRTZXJ2aWNlKCk7XHJcbiAgICBzZXJ2aWNlLmFkZEJ1aWxkZXIoYnVpbGRlcik7XHJcbiAgICBjb25zb2xlLmxvZyhjb25zdHJ1Y3Rvcik7XHJcbiAgfTtcclxufVxyXG4iXX0=
@@ -0,0 +1,17 @@
1
+ var _tab;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ export class SdTabBase {
4
+ constructor(tab) {
5
+ _tab.set(this, void 0);
6
+ __classPrivateFieldSet(this, _tab, tab);
7
+ }
8
+ get tab() {
9
+ return __classPrivateFieldGet(this, _tab);
10
+ }
11
+ }
12
+ _tab = new WeakMap();
13
+ export class SdTabActivated extends SdTabBase {
14
+ }
15
+ export class SdTabDeactivated extends SdTabBase {
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5ldmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL2V2ZW50cy90YWItcm91dGVyLmV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsTUFBTSxPQUFPLFNBQVM7SUFHcEIsWUFBWSxHQUFpQjtRQUY3Qix1QkFBbUI7UUFHakIsdUJBQUEsSUFBSSxRQUFRLEdBQUcsRUFBQztJQUNsQixDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsMENBQWlCO0lBQ25CLENBQUM7Q0FDRjs7QUFFRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7Q0FBRztBQUVoRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcblxyXG5leHBvcnQgY2xhc3MgU2RUYWJCYXNlIHtcclxuICAjdGFiOiBTZFRhYiB8IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHRhYjogU2RUYWIgfCBudWxsKSB7XHJcbiAgICB0aGlzLiN0YWIgPSB0YWI7XHJcbiAgfVxyXG5cclxuICBnZXQgdGFiKCk6IFNkVGFiIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy4jdGFiO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFNkVGFiQWN0aXZhdGVkIGV4dGVuZHMgU2RUYWJCYXNlIHt9XHJcblxyXG5leHBvcnQgY2xhc3MgU2RUYWJEZWFjdGl2YXRlZCBleHRlbmRzIFNkVGFiQmFzZSB7fVxyXG5cclxuZXhwb3J0IGRlY2xhcmUgdHlwZSBTZFRhYkV2ZW50ID0gU2RUYWJBY3RpdmF0ZWQgfCBTZFRhYkRlYWN0aXZhdGVkO1xyXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export {};
2
+ // export interface SdTabComponent {
3
+ // getTabInfo(args: {params: any, queryParams: any});
4
+ // }
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL21vZGVscy90YWItcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUF3QkEsb0NBQW9DO0FBQ3BDLHVEQUF1RDtBQUN2RCxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVGFiSW5mbyB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGluaXRpYWxOYW1lPzogc3RyaW5nO1xyXG4gIGNvbG9yPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNkVGFiIGV4dGVuZHMgU2RUYWJJbmZvIHtcclxuICBjb21wb25lbnQ6IFR5cGU8YW55PjtcclxuICBpbmplY3Rvcj86IGFueTtcclxuICBrZXk6IHN0cmluZztcclxuXHJcbiAgaXNBY3RpdmU6IGJvb2xlYW47XHJcbiAgdXJsOiBzdHJpbmc7XHJcbiAgaXNDaGlsZD86IGJvb2xlYW47XHJcbiAgcGFyYW1zPzoge1xyXG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIH07XHJcbiAgcXVlcnlQYXJhbXM/OiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgfTtcclxufVxyXG5cclxuLy8gZXhwb3J0IGludGVyZmFjZSBTZFRhYkNvbXBvbmVudCB7XHJcbi8vICAgZ2V0VGFiSW5mbyhhcmdzOiB7cGFyYW1zOiBhbnksIHF1ZXJ5UGFyYW1zOiBhbnl9KTtcclxuLy8gfSJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Pipe } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import { SdTabRouterService } from '../services/tab-router.service';
4
+ export class SdTabInfoPipe {
5
+ constructor(tabRouterService) {
6
+ this.tabRouterService = tabRouterService;
7
+ }
8
+ transform(tab) {
9
+ return this.tabRouterService.builders.pipe(map(builders => {
10
+ const builder = builders.find(e => e.component === tab.component);
11
+ if (builder) {
12
+ const { params, queryParams } = tab;
13
+ return {
14
+ name: typeof (builder.name) === 'function' ? builder.name({ params, queryParams }) : builder.name,
15
+ initialName: typeof (builder.initialName) === 'function' ? builder.initialName({ params, queryParams }) : builder.initialName,
16
+ color: typeof (builder.color) === 'function' ? builder.color({ params, queryParams }) : builder.color
17
+ };
18
+ }
19
+ return {
20
+ name: tab.url,
21
+ initialName: tab.url[0],
22
+ };
23
+ }));
24
+ }
25
+ }
26
+ SdTabInfoPipe.decorators = [
27
+ { type: Pipe, args: [{
28
+ name: 'sdTabInfo'
29
+ },] }
30
+ ];
31
+ SdTabInfoPipe.ctorParameters = () => [
32
+ { type: SdTabRouterService }
33
+ ];
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWluZm8ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvbGliL3BpcGVzL3RhYi1pbmZvLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSXBFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQW9CLGdCQUFvQztRQUFwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO0lBQUksQ0FBQztJQUM3RCxTQUFTLENBQUMsR0FBVTtRQUNsQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4RCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsSUFBSSxPQUFPLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3BDLE9BQU87b0JBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJO29CQUNqRyxXQUFXLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVc7b0JBQzdILEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSztpQkFDdEcsQ0FBQzthQUNIO1lBQ0QsT0FBTztnQkFDTCxJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUc7Z0JBQ2IsV0FBVyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3hCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7O1lBckJGLElBQUksU0FBQztnQkFDSixJQUFJLEVBQUUsV0FBVzthQUNsQjs7O1lBSFEsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RUYWIsIFNkVGFiSW5mbyB9IGZyb20gJy4uL21vZGVscy90YWItcm91dGVyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGFiLXJvdXRlci5zZXJ2aWNlJztcclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdzZFRhYkluZm8nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYkluZm9QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJSb3V0ZXJTZXJ2aWNlOiBTZFRhYlJvdXRlclNlcnZpY2UpIHsgfVxyXG4gIHRyYW5zZm9ybSh0YWI6IFNkVGFiKTogT2JzZXJ2YWJsZTxTZFRhYkluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnRhYlJvdXRlclNlcnZpY2UuYnVpbGRlcnMucGlwZShtYXAoYnVpbGRlcnMgPT4ge1xyXG4gICAgICBjb25zdCBidWlsZGVyID0gYnVpbGRlcnMuZmluZChlID0+IGUuY29tcG9uZW50ID09PSB0YWIuY29tcG9uZW50KTtcclxuICAgICAgaWYgKGJ1aWxkZXIpIHtcclxuICAgICAgICBjb25zdCB7IHBhcmFtcywgcXVlcnlQYXJhbXMgfSA9IHRhYjtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgbmFtZTogdHlwZW9mIChidWlsZGVyLm5hbWUpID09PSAnZnVuY3Rpb24nID8gYnVpbGRlci5uYW1lKHsgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIubmFtZSxcclxuICAgICAgICAgIGluaXRpYWxOYW1lOiB0eXBlb2YgKGJ1aWxkZXIuaW5pdGlhbE5hbWUpID09PSAnZnVuY3Rpb24nID8gYnVpbGRlci5pbml0aWFsTmFtZSh7IHBhcmFtcywgcXVlcnlQYXJhbXMgfSkgOiBidWlsZGVyLmluaXRpYWxOYW1lLFxyXG4gICAgICAgICAgY29sb3I6IHR5cGVvZiAoYnVpbGRlci5jb2xvcikgPT09ICdmdW5jdGlvbicgPyBidWlsZGVyLmNvbG9yKHsgcGFyYW1zLCBxdWVyeVBhcmFtcyB9KSA6IGJ1aWxkZXIuY29sb3JcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgbmFtZTogdGFiLnVybCxcclxuICAgICAgICBpbml0aWFsTmFtZTogdGFiLnVybFswXSxcclxuICAgICAgfTtcclxuICAgIH0pKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SdTabRouterService } from './tab-router.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./tab-router.service";
5
+ export class SdTabDecoratorService {
6
+ constructor(service) {
7
+ SdTabDecoratorService.service = service;
8
+ }
9
+ static getService() {
10
+ if (!SdTabDecoratorService.service) {
11
+ throw new Error('SdTabDecoratorService not initialized');
12
+ }
13
+ return SdTabDecoratorService.service;
14
+ }
15
+ }
16
+ SdTabDecoratorService.service = undefined;
17
+ SdTabDecoratorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SdTabDecoratorService_Factory() { return new SdTabDecoratorService(i0.ɵɵinject(i1.SdTabRouterService)); }, token: SdTabDecoratorService, providedIn: "root" });
18
+ SdTabDecoratorService.decorators = [
19
+ { type: Injectable, args: [{
20
+ providedIn: 'root'
21
+ },] }
22
+ ];
23
+ SdTabDecoratorService.ctorParameters = () => [
24
+ { type: SdTabRouterService }
25
+ ];
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWRlY29yYXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvc2VydmljZXMvdGFiLWRlY29yYXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQUkxRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW1CLE9BQTJCO1FBQzVDLHFCQUFxQixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDMUMsQ0FBQztJQUNNLE1BQU0sQ0FBQyxVQUFVO1FBQ3RCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUU7WUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1NBQzFEO1FBQ0QsT0FBTyxxQkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQzs7QUFUYyw2QkFBTyxHQUFtQyxTQUFTLENBQUM7OztZQUpwRSxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQUhRLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RUYWJSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi90YWItcm91dGVyLnNlcnZpY2UnO1xyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFRhYkRlY29yYXRvclNlcnZpY2Uge1xyXG4gIHByaXZhdGUgc3RhdGljIHNlcnZpY2U6IFNkVGFiUm91dGVyU2VydmljZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlKSB7XHJcbiAgICBTZFRhYkRlY29yYXRvclNlcnZpY2Uuc2VydmljZSA9IHNlcnZpY2U7XHJcbiAgfVxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U2VydmljZSgpOiBTZFRhYlJvdXRlclNlcnZpY2Uge1xyXG4gICAgaWYgKCFTZFRhYkRlY29yYXRvclNlcnZpY2Uuc2VydmljZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NkVGFiRGVjb3JhdG9yU2VydmljZSBub3QgaW5pdGlhbGl6ZWQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTZFRhYkRlY29yYXRvclNlcnZpY2Uuc2VydmljZTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,106 @@
1
+ var _currentTab, _componentBuilders;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
3
+ import { Injectable } from '@angular/core';
4
+ import { BehaviorSubject } from 'rxjs';
5
+ import { SdTabBase } from '../events/tab-router.event';
6
+ import { SdNotifyService } from '@sd-angular/core/notify';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@sd-angular/core/notify";
9
+ export class SdTabRouterService {
10
+ constructor(notifyService) {
11
+ this.notifyService = notifyService;
12
+ this.events = new BehaviorSubject(new SdTabBase(null));
13
+ this.actions = new BehaviorSubject(null);
14
+ this.builders = new BehaviorSubject([]);
15
+ _currentTab.set(this, null);
16
+ _componentBuilders.set(this, []);
17
+ this.addBuilder = (builder) => {
18
+ if (!__classPrivateFieldGet(this, _componentBuilders).some(e => e.component === builder.component)) {
19
+ __classPrivateFieldGet(this, _componentBuilders).push(builder);
20
+ this.builders.next(__classPrivateFieldGet(this, _componentBuilders));
21
+ }
22
+ };
23
+ // select = (tabOrKey: string | SdTab): void => {
24
+ // const tab = this.#tabs.find(e => {
25
+ // if (typeof (tabOrKey) === 'string') {
26
+ // return e.key === tabOrKey;
27
+ // }
28
+ // return e.key === tabOrKey?.key;
29
+ // });
30
+ // if (tab) {
31
+ // this.#currentTab = tab;
32
+ // }
33
+ // }
34
+ // add = (tab: SdTab): void => {
35
+ // if (!tab.key) {
36
+ // this.notifyService.notify.warning('Tab key is required');
37
+ // }
38
+ // if (!tab.component) {
39
+ // this.notifyService.notify.warning('Tab component is required');
40
+ // }
41
+ // const existedTab = this.#tabs.find(e => e.key === tab.key);
42
+ // if (!existedTab) {
43
+ // this.#tabs.push(tab);
44
+ // this.select(tab);
45
+ // } else {
46
+ // this.select(existedTab);
47
+ // }
48
+ // }
49
+ // remove = (tabOrKey: string | SdTab): void => {
50
+ // this.#tabs = this.#tabs.filter(e => {
51
+ // if (typeof (tabOrKey) === 'string') {
52
+ // return e.key !== tabOrKey;
53
+ // }
54
+ // return e.key !== tabOrKey?.key;
55
+ // });
56
+ // }
57
+ this.setCurrentTab = (tab) => {
58
+ __classPrivateFieldSet(this, _currentTab, tab);
59
+ };
60
+ this.pushEvent = (tab, Event) => {
61
+ this.events.next(new Event(tab));
62
+ };
63
+ this.setOptions = () => { };
64
+ this.close = (tab) => {
65
+ if (tab) {
66
+ this.actions.next({
67
+ type: 'close',
68
+ tab,
69
+ });
70
+ }
71
+ else if (__classPrivateFieldGet(this, _currentTab)) {
72
+ this.actions.next({
73
+ type: 'close',
74
+ tab: __classPrivateFieldGet(this, _currentTab),
75
+ });
76
+ }
77
+ };
78
+ SdTabRouterService.service = this;
79
+ }
80
+ // #tabs: SdTab[] = [];
81
+ static getService() {
82
+ if (!SdTabRouterService.service) {
83
+ throw new Error('SdTabRouterService is not initialized');
84
+ }
85
+ return SdTabRouterService.service;
86
+ }
87
+ get currentTab() {
88
+ return __classPrivateFieldGet(this, _currentTab);
89
+ }
90
+ get key() {
91
+ var _a;
92
+ return ((_a = __classPrivateFieldGet(this, _currentTab)) === null || _a === void 0 ? void 0 : _a.key) || null;
93
+ }
94
+ }
95
+ _currentTab = new WeakMap(), _componentBuilders = new WeakMap();
96
+ SdTabRouterService.service = undefined;
97
+ SdTabRouterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function SdTabRouterService_Factory() { return new SdTabRouterService(i0.ɵɵinject(i1.SdNotifyService)); }, token: SdTabRouterService, providedIn: "root" });
98
+ SdTabRouterService.decorators = [
99
+ { type: Injectable, args: [{
100
+ providedIn: 'root',
101
+ },] }
102
+ ];
103
+ SdTabRouterService.ctorParameters = () => [
104
+ { type: SdNotifyService }
105
+ ];
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL3VzZXIvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdGFiLXJvdXRlci8iLCJzb3VyY2VzIjpbInNyYy9saWIvc2VydmljZXMvdGFiLXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3ZDLE9BQU8sRUFBYyxTQUFTLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQU0xRCxNQUFNLE9BQU8sa0JBQWtCO0lBZ0I3QixZQUFvQixhQUE4QjtRQUE5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFkbEQsV0FBTSxHQUFHLElBQUksZUFBZSxDQUFhLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDOUQsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFxQixJQUFJLENBQUMsQ0FBQztRQUN4RCxhQUFRLEdBQUcsSUFBSSxlQUFlLENBQTBCLEVBQUUsQ0FBQyxDQUFDO1FBRTVELHNCQUE0QixJQUFJLEVBQUM7UUFDakMsNkJBQThDLEVBQUUsRUFBQztRQWFqRCxlQUFVLEdBQUcsQ0FBQyxPQUE4QixFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLGlEQUF3QixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDekUsaURBQXdCLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLGtEQUF5QixDQUFDO2FBQzdDO1FBQ0gsQ0FBQyxDQUFBO1FBVUQsaURBQWlEO1FBQ2pELHVDQUF1QztRQUN2Qyw0Q0FBNEM7UUFDNUMsbUNBQW1DO1FBQ25DLFFBQVE7UUFDUixzQ0FBc0M7UUFDdEMsUUFBUTtRQUNSLGVBQWU7UUFDZiw4QkFBOEI7UUFDOUIsTUFBTTtRQUNOLElBQUk7UUFFSixnQ0FBZ0M7UUFDaEMsb0JBQW9CO1FBQ3BCLGdFQUFnRTtRQUNoRSxNQUFNO1FBQ04sMEJBQTBCO1FBQzFCLHNFQUFzRTtRQUN0RSxNQUFNO1FBQ04sZ0VBQWdFO1FBQ2hFLHVCQUF1QjtRQUN2Qiw0QkFBNEI7UUFDNUIsd0JBQXdCO1FBQ3hCLGFBQWE7UUFDYiwrQkFBK0I7UUFDL0IsTUFBTTtRQUNOLElBQUk7UUFFSixpREFBaUQ7UUFDakQsMENBQTBDO1FBQzFDLDRDQUE0QztRQUM1QyxtQ0FBbUM7UUFDbkMsUUFBUTtRQUNSLHNDQUFzQztRQUN0QyxRQUFRO1FBQ1IsSUFBSTtRQUVKLGtCQUFhLEdBQUcsQ0FBQyxHQUFVLEVBQVEsRUFBRTtZQUNuQyx1QkFBQSxJQUFJLGVBQWUsR0FBRyxFQUFDO1FBQ3pCLENBQUMsQ0FBQTtRQUVELGNBQVMsR0FBRyxDQUFDLEdBQVUsRUFBRSxLQUF1QixFQUFFLEVBQUU7WUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUE7UUFFRCxlQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLFVBQUssR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQ3RCLElBQUksR0FBRyxFQUFFO2dCQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNoQixJQUFJLEVBQUUsT0FBTztvQkFDYixHQUFHO2lCQUNKLENBQUMsQ0FBQzthQUNKO2lCQUFNLCtDQUFzQjtnQkFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ2hCLElBQUksRUFBRSxPQUFPO29CQUNiLEdBQUcsMkNBQWtCO2lCQUN0QixDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQTtRQTdFQyxrQkFBa0IsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFWRCx1QkFBdUI7SUFFaEIsTUFBTSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRTtZQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxPQUFPLGtCQUFrQixDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBWUQsSUFBSSxVQUFVO1FBQ1osaURBQXdCO0lBQzFCLENBQUM7SUFFRCxJQUFJLEdBQUc7O1FBQ0wsT0FBTywwRkFBa0IsR0FBRyxLQUFJLElBQUksQ0FBQztJQUN2QyxDQUFDOzs7QUFoQ2MsMEJBQU8sR0FBbUMsU0FBUyxDQUFDOzs7WUFKcEUsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUFMUSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RUYWIgfSBmcm9tICcuLi9tb2RlbHMvdGFiLXJvdXRlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkVGFiQWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy90YWItcm91dGVyLmFjdGlvbic7XHJcbmltcG9ydCB7IFNkVGFiRXZlbnQsIFNkVGFiQmFzZSB9IGZyb20gJy4uL2V2ZW50cy90YWItcm91dGVyLmV2ZW50JztcclxuaW1wb3J0IHsgU2ROb3RpZnlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQgeyBTZFRhYkNvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi9kZWNvcmF0b3JzL3RhYi5kZWNvcmF0b3InO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkVGFiUm91dGVyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VydmljZTogU2RUYWJSb3V0ZXJTZXJ2aWNlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIGV2ZW50cyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2RUYWJFdmVudD4obmV3IFNkVGFiQmFzZShudWxsKSk7XHJcbiAgYWN0aW9ucyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2RUYWJBY3Rpb24gfCBudWxsPihudWxsKTtcclxuICBidWlsZGVycyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2RUYWJDb21wb25lbnRCdWlsZGVyW10+KFtdKTtcclxuXHJcbiAgI2N1cnJlbnRUYWI6IFNkVGFiIHwgbnVsbCA9IG51bGw7XHJcbiAgI2NvbXBvbmVudEJ1aWxkZXJzOiBTZFRhYkNvbXBvbmVudEJ1aWxkZXJbXSA9IFtdO1xyXG4gIC8vICN0YWJzOiBTZFRhYltdID0gW107XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZ2V0U2VydmljZSgpOiBTZFRhYlJvdXRlclNlcnZpY2Uge1xyXG4gICAgaWYgKCFTZFRhYlJvdXRlclNlcnZpY2Uuc2VydmljZSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NkVGFiUm91dGVyU2VydmljZSBpcyBub3QgaW5pdGlhbGl6ZWQnKTtcclxuICAgIH1cclxuICAgIHJldHVybiBTZFRhYlJvdXRlclNlcnZpY2Uuc2VydmljZTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UpIHtcclxuICAgIFNkVGFiUm91dGVyU2VydmljZS5zZXJ2aWNlID0gdGhpcztcclxuICB9XHJcblxyXG4gIGFkZEJ1aWxkZXIgPSAoYnVpbGRlcjogU2RUYWJDb21wb25lbnRCdWlsZGVyKSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuI2NvbXBvbmVudEJ1aWxkZXJzLnNvbWUoZSA9PiBlLmNvbXBvbmVudCA9PT0gYnVpbGRlci5jb21wb25lbnQpKSB7XHJcbiAgICAgIHRoaXMuI2NvbXBvbmVudEJ1aWxkZXJzLnB1c2goYnVpbGRlcik7XHJcbiAgICAgIHRoaXMuYnVpbGRlcnMubmV4dCh0aGlzLiNjb21wb25lbnRCdWlsZGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgY3VycmVudFRhYigpIHtcclxuICAgIHJldHVybiB0aGlzLiNjdXJyZW50VGFiO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGtleSgpIHtcclxuICAgIHJldHVybiB0aGlzLiNjdXJyZW50VGFiPy5rZXkgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIHNlbGVjdCA9ICh0YWJPcktleTogc3RyaW5nIHwgU2RUYWIpOiB2b2lkID0+IHtcclxuICAvLyAgIGNvbnN0IHRhYiA9IHRoaXMuI3RhYnMuZmluZChlID0+IHtcclxuICAvLyAgICAgaWYgKHR5cGVvZiAodGFiT3JLZXkpID09PSAnc3RyaW5nJykge1xyXG4gIC8vICAgICAgIHJldHVybiBlLmtleSA9PT0gdGFiT3JLZXk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgcmV0dXJuIGUua2V5ID09PSB0YWJPcktleT8ua2V5O1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBpZiAodGFiKSB7XHJcbiAgLy8gICAgIHRoaXMuI2N1cnJlbnRUYWIgPSB0YWI7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICAvLyBhZGQgPSAodGFiOiBTZFRhYik6IHZvaWQgPT4ge1xyXG4gIC8vICAgaWYgKCF0YWIua2V5KSB7XHJcbiAgLy8gICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnVGFiIGtleSBpcyByZXF1aXJlZCcpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgaWYgKCF0YWIuY29tcG9uZW50KSB7XHJcbiAgLy8gICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZygnVGFiIGNvbXBvbmVudCBpcyByZXF1aXJlZCcpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgY29uc3QgZXhpc3RlZFRhYiA9IHRoaXMuI3RhYnMuZmluZChlID0+IGUua2V5ID09PSB0YWIua2V5KTtcclxuICAvLyAgIGlmICghZXhpc3RlZFRhYikge1xyXG4gIC8vICAgICB0aGlzLiN0YWJzLnB1c2godGFiKTtcclxuICAvLyAgICAgdGhpcy5zZWxlY3QodGFiKTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuc2VsZWN0KGV4aXN0ZWRUYWIpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuXHJcbiAgLy8gcmVtb3ZlID0gKHRhYk9yS2V5OiBzdHJpbmcgfCBTZFRhYik6IHZvaWQgPT4ge1xyXG4gIC8vICAgdGhpcy4jdGFicyA9IHRoaXMuI3RhYnMuZmlsdGVyKGUgPT4ge1xyXG4gIC8vICAgICBpZiAodHlwZW9mICh0YWJPcktleSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgLy8gICAgICAgcmV0dXJuIGUua2V5ICE9PSB0YWJPcktleTtcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICByZXR1cm4gZS5rZXkgIT09IHRhYk9yS2V5Py5rZXk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHNldEN1cnJlbnRUYWIgPSAodGFiOiBTZFRhYik6IHZvaWQgPT4ge1xyXG4gICAgdGhpcy4jY3VycmVudFRhYiA9IHRhYjtcclxuICB9XHJcblxyXG4gIHB1c2hFdmVudCA9ICh0YWI6IFNkVGFiLCBFdmVudDogVHlwZTxTZFRhYkV2ZW50PikgPT4ge1xyXG4gICAgdGhpcy5ldmVudHMubmV4dChuZXcgRXZlbnQodGFiKSk7XHJcbiAgfVxyXG5cclxuICBzZXRPcHRpb25zID0gKCkgPT4geyB9O1xyXG5cclxuICBjbG9zZSA9ICh0YWI/OiBTZFRhYikgPT4ge1xyXG4gICAgaWYgKHRhYikge1xyXG4gICAgICB0aGlzLmFjdGlvbnMubmV4dCh7XHJcbiAgICAgICAgdHlwZTogJ2Nsb3NlJyxcclxuICAgICAgICB0YWIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLiNjdXJyZW50VGFiKSB7XHJcbiAgICAgIHRoaXMuYWN0aW9ucy5uZXh0KHtcclxuICAgICAgICB0eXBlOiAnY2xvc2UnLFxyXG4gICAgICAgIHRhYjogdGhpcy4jY3VycmVudFRhYixcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,29 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RouterModule } from '@angular/router';
3
+ import { CommonModule } from '@angular/common';
4
+ import { MatIconModule } from '@angular/material/icon';
5
+ import { MatTooltipModule } from '@angular/material/tooltip';
6
+ import { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';
7
+ import { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';
8
+ import { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';
9
+ import { SdTabInfoPipe } from './pipes/tab-info.pipe';
10
+ export class SdTabRouterModule {
11
+ }
12
+ SdTabRouterModule.decorators = [
13
+ { type: NgModule, args: [{
14
+ declarations: [
15
+ SdTabRouterItemComponent,
16
+ SdTabRouterNavComponent,
17
+ SdTabRouterOutletComponent,
18
+ SdTabInfoPipe,
19
+ ],
20
+ imports: [RouterModule, CommonModule, MatIconModule, MatTooltipModule],
21
+ exports: [
22
+ SdTabRouterItemComponent,
23
+ SdTabRouterNavComponent,
24
+ SdTabRouterOutletComponent,
25
+ ],
26
+ providers: [],
27
+ },] }
28
+ ];
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXJvdXRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiQzovVXNlcnMvdXNlci9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS90YWItcm91dGVyLyIsInNvdXJjZXMiOlsic3JjL2xpYi90YWItcm91dGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWlCdEQsTUFBTSxPQUFPLGlCQUFpQjs7O1lBZjdCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osd0JBQXdCO29CQUN4Qix1QkFBdUI7b0JBQ3ZCLDBCQUEwQjtvQkFDMUIsYUFBYTtpQkFDZDtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQztnQkFDdEUsT0FBTyxFQUFFO29CQUNQLHdCQUF3QjtvQkFDeEIsdUJBQXVCO29CQUN2QiwwQkFBMEI7aUJBQzNCO2dCQUNELFNBQVMsRUFBRSxFQUFFO2FBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcclxuXHJcbmltcG9ydCB7IFNkVGFiUm91dGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90YWItcm91dGVyLWl0ZW0vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyTmF2Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYi1yb3V0ZXItbmF2L3RhYi1yb3V0ZXItbmF2LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkVGFiUm91dGVyT3V0bGV0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RhYi1yb3V0ZXItb3V0bGV0L3RhYi1yb3V0ZXItb3V0bGV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkVGFiSW5mb1BpcGUgfSBmcm9tICcuL3BpcGVzL3RhYi1pbmZvLnBpcGUnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFNkVGFiUm91dGVySXRlbUNvbXBvbmVudCxcclxuICAgIFNkVGFiUm91dGVyTmF2Q29tcG9uZW50LFxyXG4gICAgU2RUYWJSb3V0ZXJPdXRsZXRDb21wb25lbnQsXHJcbiAgICBTZFRhYkluZm9QaXBlLFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1JvdXRlck1vZHVsZSwgQ29tbW9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRUb29sdGlwTW9kdWxlXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBTZFRhYlJvdXRlckl0ZW1Db21wb25lbnQsXHJcbiAgICBTZFRhYlJvdXRlck5hdkNvbXBvbmVudCxcclxuICAgIFNkVGFiUm91dGVyT3V0bGV0Q29tcG9uZW50LFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkVGFiUm91dGVyTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Public API Surface of superdev-angular-core
3
+ */
4
+ // Models
5
+ export * from './lib/models/tab-router.model';
6
+ export * from './lib/events/tab-router.event';
7
+ export * from './lib/actions/tab-router.action';
8
+ // Decorators
9
+ export * from './lib/decorators/tab.decorator';
10
+ // Service
11
+ export * from './lib/services/tab-router.service';
12
+ // Components
13
+ export * from './lib/components/tab-router-item/tab-router-item.component';
14
+ export * from './lib/components/tab-router-nav/tab-router-nav.component';
15
+ export * from './lib/components/tab-router-outlet/tab-router-outlet.component';
16
+ // Module
17
+ export * from './lib/tab-router.module';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy91c2VyL0RvY3VtZW50cy9saWItY29yZS11aS9wcm9qZWN0cy9zZC1jb3JlL3RhYi1yb3V0ZXIvIiwic291cmNlcyI6WyJzcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILFNBQVM7QUFDVCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUVoRCxhQUFhO0FBQ2IsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxVQUFVO0FBQ1YsY0FBYyxtQ0FBbUMsQ0FBQztBQUVsRCxhQUFhO0FBQ2IsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLDBEQUEwRCxDQUFDO0FBQ3pFLGNBQWMsZ0VBQWdFLENBQUM7QUFFL0UsU0FBUztBQUNULGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc3VwZXJkZXYtYW5ndWxhci1jb3JlXHJcbiAqL1xyXG5cclxuLy8gTW9kZWxzXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy90YWItcm91dGVyLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZXZlbnRzL3RhYi1yb3V0ZXIuZXZlbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9hY3Rpb25zL3RhYi1yb3V0ZXIuYWN0aW9uJztcclxuXHJcbi8vIERlY29yYXRvcnNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZGVjb3JhdG9ycy90YWIuZGVjb3JhdG9yJztcclxuXHJcbi8vIFNlcnZpY2VcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvdGFiLXJvdXRlci5zZXJ2aWNlJztcclxuXHJcbi8vIENvbXBvbmVudHNcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWItcm91dGVyLWl0ZW0vdGFiLXJvdXRlci1pdGVtLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFiLXJvdXRlci1uYXYvdGFiLXJvdXRlci1uYXYuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWItcm91dGVyLW91dGxldC90YWItcm91dGVyLW91dGxldC5jb21wb25lbnQnO1xyXG5cclxuLy8gTW9kdWxlXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYi1yb3V0ZXIubW9kdWxlJztcclxuIl19
@@ -1343,11 +1343,11 @@ class SdGridMaterial {
1343
1343
  this.items.forEach(item => item.originItem = Object.assign({}, item));
1344
1344
  yield ((_c = (_b = (_a = this.gridOption) === null || _a === void 0 ? void 0 : _a.reload) === null || _b === void 0 ? void 0 : _b.onReload) === null || _c === void 0 ? void 0 : _c.call(_b, this.items));
1345
1345
  this.isSelectAll = this.items.every(e => e.isSelected);
1346
+ __classPrivateFieldGet(this, _updateSelectedItems).call(this);
1346
1347
  }));
1347
1348
  this.reload = () => __awaiter(this, void 0, void 0, function* () {
1348
1349
  const data = yield __classPrivateFieldGet(this, _load$1).call(this, __classPrivateFieldGet(this, _getFilter).call(this));
1349
1350
  __classPrivateFieldGet(this, _render).call(this, data);
1350
- __classPrivateFieldGet(this, _updateSelectedItems).call(this);
1351
1351
  });
1352
1352
  _exportedItems.set(this, (pageNumber = 0, pageSize = 10000) => __awaiter(this, void 0, void 0, function* () {
1353
1353
  var _d, _e;
@@ -1651,6 +1651,7 @@ class SdGridMaterial {
1651
1651
  const { isSelected, isExpanded, isExpanding, expandDetail } = item, result = __rest(item, ["isSelected", "isExpanded", "isExpanding", "expandDetail"]);
1652
1652
  return result;
1653
1653
  });
1654
+ this.ref.detectChanges();
1654
1655
  });
1655
1656
  this.clearFilter = () => {
1656
1657
  var _a;