@sd-angular/core 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-tab-router.js","sources":["../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/directives/router-link-mouse-down.directive.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/public-api.ts","../../../../projects/sd-core/tab-router/sd-angular-core-tab-router.ts"],"sourcesContent":["import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n currentTabChanges = new BehaviorSubject<SdTab>(null);\r\n newTabs = new BehaviorSubject<SdTab>(null);\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n this.currentTabChanges.next(tab);\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any, data: Record<string, any> }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { SdTab } from \"../../models/tab-router.model\";\r\nimport { SdTabRouterService } from \"../../services/tab-router.service\";\r\n\r\n@Component({\r\n selector: \"sd-tab-router-item\",\r\n templateUrl: \"./tab-router-item.component.html\",\r\n styleUrls: [\"./tab-router-item.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterItemComponent implements OnInit, OnDestroy {\r\n @Input() tab: SdTab;\r\n\r\n #subsctiption: Subscription = new Subscription();\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private tabRouterService: SdTabRouterService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.#subsctiption.add(\r\n this.tabRouterService.events.subscribe(() =>\r\n this.cdRef.markForCheck()\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subsctiption.unsubscribe();\r\n }\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n };\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor(private cdRef: ChangeDetectorRef,public elementRef: ElementRef<any>) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 68) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onDrop = (event: CdkDragDrop<SdTab[]>) => {\r\n moveItemInArray(this.tabs, event.previousIndex, event.currentIndex);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from '@angular/router';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from '../../events/tab-router.event';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabAction } from '../../actions/tab-router.action';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport hash from 'object-hash';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-outlet',\r\n templateUrl: './tab-router-outlet.component.html',\r\n styleUrls: ['./tab-router-outlet.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild('tabRouterNav') tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(\r\n router.events\r\n .pipe(\r\n filter(\r\n (event) =>\r\n event instanceof RoutesRecognized ||\r\n event instanceof NavigationEnd\r\n )\r\n )\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(\r\n this.activatedRoute.snapshot\r\n );\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(\r\n tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === 'close') {\r\n this.#closeTab(event.tab);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n tabTrackBy = (index: number, tab: SdTab) => {\r\n return tab.key;\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n const { isActive, key: activeKey } = tab;\r\n\r\n if (isActive) {\r\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\r\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\r\n if (nextTab) {\r\n const { url: nextUrl } = nextTab;\r\n const nextQueryParams = {\r\n ...(nextTab.queryParams || {}),\r\n };\r\n\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigate([nextUrl], {\r\n queryParams: nextQueryParams,\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigateByUrl('/', {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n };\r\n\r\n #activeRoute = async (\r\n fullUrl: string,\r\n route: ActivatedRouteSnapshot | null\r\n ) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n const data = {\r\n ...(route.data || {}),\r\n }\r\n\r\n const [url] = fullUrl.split('?');\r\n const key = hash({ url, queryParams });\r\n\r\n let existedIndex = -1;\r\n let activatedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n activatedIndex = index;\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n data\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (\r\n activatedIndex >= 0 &&\r\n currentNavigation?.extras?.state?.replaceTab\r\n ) {\r\n this.tabs.splice(activatedIndex, 1);\r\n }\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n '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.'\r\n );\r\n }\r\n if (this.tabs.length > 12) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n };\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n };\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) {}\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tabInfo: SdTabInfo, tab: SdTab): Observable<SdTabInfo> {\r\n if (tabInfo) {\r\n return of(tabInfo);\r\n }\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams, data } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams, data }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { RouterLinkWithHref } from \"@angular/router\";\r\n\r\n@Directive({\r\n selector: \"a[routerLink],area[routerLink]\",\r\n})\r\nexport class RouterLinkMouseDownDirective extends RouterLinkWithHref {\r\n @HostListener(\"mousedown\", [\r\n \"$event.button\",\r\n \"$event.ctrlKey\",\r\n \"$event.shiftKey\",\r\n \"$event.altKey\",\r\n \"$event.metaKey\",\r\n ])\r\n onMouseDown(\r\n button: number,\r\n ctrlKey: boolean,\r\n shiftKey: boolean,\r\n altKey: boolean,\r\n metaKey: boolean\r\n ): boolean {\r\n return this.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RouterLinkMouseDownDirective } from './directives/router-link-mouse-down.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n RouterLinkMouseDownDirective,\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n DragDropModule\r\n ],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\n// Models\r\nexport * from './lib/models/tab-router.model';\r\nexport * from './lib/events/tab-router.event';\r\nexport * from './lib/actions/tab-router.action';\r\n\r\n// Decorators\r\nexport * from './lib/decorators/tab.decorator';\r\n\r\n// Service\r\nexport * from './lib/services/tab-router.service';\r\nexport * from './lib/services/tab-decorator.service';\r\n\r\n// Components\r\nexport * from './lib/components/tab-router-item/tab-router-item.component';\r\nexport * from './lib/components/tab-router-nav/tab-router-nav.component';\r\nexport * from './lib/components/tab-router-outlet/tab-router-outlet.component';\r\n\r\n// Module\r\nexport * from './lib/tab-router.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {RouterLinkMouseDownDirective as ɵb} from './src/lib/directives/router-link-mouse-down.directive';\nexport {SdTabInfoPipe as ɵa} from './src/lib/pipes/tab-info.pipe';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-tab-router.js","sources":["../../../../projects/sd-core/tab-router/src/lib/events/tab-router.event.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-router.service.ts","../../../../projects/sd-core/tab-router/src/lib/services/tab-decorator.service.ts","../../../../projects/sd-core/tab-router/src/lib/decorators/tab.decorator.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-item/tab-router-item.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-nav/tab-router-nav.component.ts","../../../../projects/sd-core/tab-router/src/lib/components/tab-router-outlet/tab-router-outlet.component.ts","../../../../projects/sd-core/tab-router/src/lib/pipes/tab-info.pipe.ts","../../../../projects/sd-core/tab-router/src/lib/directives/router-link-mouse-down.directive.ts","../../../../projects/sd-core/tab-router/src/lib/tab-router.module.ts","../../../../projects/sd-core/tab-router/src/public-api.ts","../../../../projects/sd-core/tab-router/sd-angular-core-tab-router.ts"],"sourcesContent":["import { SdTab } from '../models/tab-router.model';\r\n\r\nexport class SdTabBase {\r\n #tab: SdTab | null;\r\n\r\n constructor(tab: SdTab | null) {\r\n this.#tab = tab;\r\n }\r\n\r\n get tab(): SdTab | null {\r\n return this.#tab;\r\n }\r\n}\r\n\r\nexport class SdTabActivated extends SdTabBase {}\r\n\r\nexport class SdTabDeactivated extends SdTabBase {}\r\n\r\nexport declare type SdTabEvent = SdTabActivated | SdTabDeactivated;\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabAction } from '../actions/tab-router.action';\r\nimport { SdTabEvent, SdTabBase } from '../events/tab-router.event';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport { SdTabComponentBuilder } from '../decorators/tab.decorator';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdTabRouterService {\r\n events = new BehaviorSubject<SdTabEvent>(new SdTabBase(null));\r\n actions = new BehaviorSubject<SdTabAction | null>(null);\r\n builders = new BehaviorSubject<SdTabComponentBuilder[]>([]);\r\n currentTabChanges = new BehaviorSubject<SdTab>(null);\r\n newTabs = new BehaviorSubject<SdTab>(null);\r\n #currentTab: SdTab | null = null;\r\n #componentBuilders: SdTabComponentBuilder[] = [];\r\n constructor(private notifyService: SdNotifyService) {\r\n }\r\n\r\n addBuilder = (builder: SdTabComponentBuilder) => {\r\n if (!this.#componentBuilders.some(e => e.component === builder.component)) {\r\n this.#componentBuilders.push(builder);\r\n this.builders.next(this.#componentBuilders);\r\n }\r\n }\r\n\r\n get currentTab() {\r\n return this.#currentTab;\r\n }\r\n\r\n get key() {\r\n return this.#currentTab?.key || null;\r\n }\r\n\r\n // select = (tabOrKey: string | SdTab): void => {\r\n // const tab = this.#tabs.find(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key === tabOrKey;\r\n // }\r\n // return e.key === tabOrKey?.key;\r\n // });\r\n // if (tab) {\r\n // this.#currentTab = tab;\r\n // }\r\n // }\r\n\r\n // add = (tab: SdTab): void => {\r\n // if (!tab.key) {\r\n // this.notifyService.notify.warning('Tab key is required');\r\n // }\r\n // if (!tab.component) {\r\n // this.notifyService.notify.warning('Tab component is required');\r\n // }\r\n // const existedTab = this.#tabs.find(e => e.key === tab.key);\r\n // if (!existedTab) {\r\n // this.#tabs.push(tab);\r\n // this.select(tab);\r\n // } else {\r\n // this.select(existedTab);\r\n // }\r\n // }\r\n\r\n // remove = (tabOrKey: string | SdTab): void => {\r\n // this.#tabs = this.#tabs.filter(e => {\r\n // if (typeof (tabOrKey) === 'string') {\r\n // return e.key !== tabOrKey;\r\n // }\r\n // return e.key !== tabOrKey?.key;\r\n // });\r\n // }\r\n\r\n\r\n setCurrentTab = (tab: SdTab): void => {\r\n this.#currentTab = tab;\r\n this.currentTabChanges.next(tab);\r\n }\r\n\r\n pushEvent = (tab: SdTab, Event: Type<SdTabEvent>) => {\r\n this.events.next(new Event(tab));\r\n }\r\n\r\n setOptions = () => { };\r\n\r\n close = (tab?: SdTab) => {\r\n if (tab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab,\r\n });\r\n } else if (this.#currentTab) {\r\n this.actions.next({\r\n type: 'close',\r\n tab: this.#currentTab,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { SdTabRouterService } from './tab-router.service';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdTabDecoratorService {\r\n static tabRouterService = new BehaviorSubject<SdTabRouterService>(undefined);\r\n constructor(tabRouterService: SdTabRouterService) {\r\n SdTabDecoratorService.tabRouterService.next(tabRouterService);\r\n }\r\n}\r\n","import { Type } from '@angular/core';\r\nimport { filter, take, takeWhile } from 'rxjs/operators';\r\nimport { SdTabDecoratorService } from '../services/tab-decorator.service';\r\n\r\nexport declare interface SdTabComponentBuilder {\r\n component: Type<any>;\r\n name: string | ((args: { url: string, params: any, queryParams: any, data: Record<string, any> }) => string);\r\n initialName: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n tooltip?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n color?: string | ((args: { url: string, params: any, queryParams: any }) => string);\r\n isDetail?: boolean;\r\n}\r\n\r\nexport function SdTabComponent<T>(builder: SdTabComponentBuilder) {\r\n return (constructor: T) => {\r\n SdTabDecoratorService.tabRouterService.pipe(\r\n filter(service => service !== undefined && service !== null),\r\n take(1)).subscribe(service => {\r\n service.addBuilder(builder);\r\n });\r\n };\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { Subscription } from \"rxjs\";\r\n\r\nimport { SdTab } from \"../../models/tab-router.model\";\r\nimport { SdTabRouterService } from \"../../services/tab-router.service\";\r\n\r\n@Component({\r\n selector: \"sd-tab-router-item\",\r\n templateUrl: \"./tab-router-item.component.html\",\r\n styleUrls: [\"./tab-router-item.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterItemComponent implements OnInit, OnDestroy {\r\n @Input() tab: SdTab;\r\n\r\n #subsctiption: Subscription = new Subscription();\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private tabRouterService: SdTabRouterService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.#subsctiption.add(\r\n this.tabRouterService.events.subscribe(() =>\r\n this.cdRef.markForCheck()\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subsctiption.unsubscribe();\r\n }\r\n\r\n close = (event: Event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.tabRouterService.close(this.tab);\r\n };\r\n}\r\n","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-nav',\r\n templateUrl: './tab-router-nav.component.html',\r\n styleUrls: ['./tab-router-nav.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdTabRouterNavComponent {\r\n @ViewChild('tabRouterNav') tabRouterNav: ElementRef;\r\n\r\n @Input() tabs: SdTab[];\r\n mode: 'default' | 'compact' = 'default';\r\n\r\n constructor(private cdRef: ChangeDetectorRef,public elementRef: ElementRef<any>) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.checkUI();\r\n }\r\n\r\n checkUI = () => {\r\n const width = this.tabRouterNav.nativeElement.clientWidth;\r\n const nameWidth = (width - this.tabs.length * 68) / this.tabs.length;\r\n if (nameWidth <= 20) {\r\n this.mode = 'compact';\r\n } else {\r\n this.mode = 'default';\r\n }\r\n this.cdRef.markForCheck();\r\n }\r\n\r\n onDrop = (event: CdkDragDrop<SdTab[]>) => {\r\n moveItemInArray(this.tabs, event.previousIndex, event.currentIndex);\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Compiler,\r\n Component,\r\n Injector,\r\n NgModuleRef,\r\n OnDestroy,\r\n OnInit,\r\n Type,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n ActivatedRoute,\r\n ActivatedRouteSnapshot,\r\n ChildrenOutletContexts,\r\n // ChildrenOutletContexts,\r\n Event,\r\n NavigationEnd,\r\n PRIMARY_OUTLET,\r\n Router,\r\n RoutesRecognized,\r\n} from '@angular/router';\r\nimport { SdNotifyService } from '@sd-angular/core/notify';\r\nimport {\r\n SdTabActivated,\r\n SdTabDeactivated,\r\n} from '../../events/tab-router.event';\r\n\r\nimport { SdTab } from '../../models/tab-router.model';\r\nimport { SdTabAction } from '../../actions/tab-router.action';\r\nimport { SdTabRouterService } from '../../services/tab-router.service';\r\nimport { SdTabRouterNavComponent } from '../tab-router-nav/tab-router-nav.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdTabDecoratorService } from '../../services/tab-decorator.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport hash from 'object-hash';\r\n\r\n@Component({\r\n selector: 'sd-tab-router-outlet',\r\n templateUrl: './tab-router-outlet.component.html',\r\n styleUrls: ['./tab-router-outlet.component.scss'],\r\n // changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SdTabRouterOutletComponent implements OnDestroy {\r\n @ViewChild('tabRouterNav') tabRouterNav: SdTabRouterNavComponent;\r\n tabs: SdTab[] = [];\r\n\r\n #rootRoute: ActivatedRoute;\r\n #subscription = new Subscription();\r\n #firstLoad = true;\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private cd: ChangeDetectorRef,\r\n private injector: Injector,\r\n private compiler: Compiler,\r\n private tabDecoratorService: SdTabDecoratorService,\r\n private tabRouterService: SdTabRouterService,\r\n private sdNotifyService: SdNotifyService\r\n ) {\r\n this.#subscription.add(\r\n router.events\r\n .pipe(\r\n filter(\r\n (event) =>\r\n event instanceof RoutesRecognized ||\r\n event instanceof NavigationEnd\r\n )\r\n )\r\n .subscribe(async (event: RoutesRecognized | NavigationEnd) => {\r\n if (this.#firstLoad && event instanceof NavigationEnd) {\r\n this.#firstLoad = false;\r\n const route = this.#getActivatedRouteSnapshot(\r\n this.activatedRoute.snapshot\r\n );\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n return;\r\n }\r\n if (!this.#firstLoad && event instanceof RoutesRecognized) {\r\n const route = this.#getActivatedRouteSnapshot(event.state.root);\r\n this.#rootRoute = this.router.routerState.root;\r\n await this.#activeRoute(\r\n event.urlAfterRedirects || event.url,\r\n route\r\n );\r\n }\r\n })\r\n );\r\n\r\n this.#subscription.add(\r\n tabRouterService.actions.subscribe((event: SdTabAction | null) => {\r\n if (event && event.type === 'close') {\r\n this.#closeTab(event.tab);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n tabTrackBy = (index: number, tab: SdTab) => {\r\n return tab.key;\r\n }\r\n\r\n #closeTab = (tab: SdTab) => {\r\n const { isActive, key: activeKey } = tab;\r\n\r\n if (isActive) {\r\n const activeIndex = this.tabs.findIndex(({ key }) => key === activeKey);\r\n const nextTab = this.tabs[activeIndex + 1] || this.tabs[activeIndex - 1];\r\n if (nextTab) {\r\n const { url: nextUrl } = nextTab;\r\n const nextQueryParams = {\r\n ...(nextTab.queryParams || {}),\r\n };\r\n\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigate([nextUrl], {\r\n queryParams: nextQueryParams,\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== activeKey);\r\n this.router.navigateByUrl('/', {\r\n state: {\r\n switchTab: true,\r\n },\r\n });\r\n }\r\n } else {\r\n this.tabs = this.tabs.filter(({ key }) => key !== tab.key);\r\n this.tabRouterNav?.checkUI();\r\n this.cd.markForCheck();\r\n }\r\n };\r\n\r\n #activeRoute = async (\r\n fullUrl: string,\r\n route: ActivatedRouteSnapshot | null\r\n ) => {\r\n if (!route?.component) {\r\n return;\r\n }\r\n const component = route.component as Type<any>;\r\n const queryParams = {\r\n ...(route.queryParams || {}),\r\n };\r\n const params = {\r\n ...(route.params || {}),\r\n };\r\n const data = {\r\n ...(route.data || {}),\r\n }\r\n\r\n const [url] = fullUrl.split('?');\r\n const key = hash({ url, queryParams });\r\n console.log(url, queryParams, key);\r\n console.log(this.tabs);\r\n let existedIndex = -1;\r\n let activatedIndex = -1;\r\n this.tabs.forEach((tab: SdTab, index: number) => {\r\n if (tab.key === key) {\r\n tab.isActive = true;\r\n existedIndex = index;\r\n } else {\r\n if (tab.isActive) {\r\n activatedIndex = index;\r\n this.tabRouterService.pushEvent(tab, SdTabDeactivated);\r\n }\r\n tab.isActive = false;\r\n }\r\n });\r\n\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n if (existedIndex >= 0 && currentNavigation?.extras?.state?.switchTab) {\r\n const existedTab = this.tabs[existedIndex];\r\n this.tabRouterService.setCurrentTab(existedTab);\r\n this.tabRouterService.pushEvent(existedTab, SdTabActivated);\r\n } else {\r\n if (typeof route?.parent?.routeConfig?.loadChildren === 'function') {\r\n const module = await route.parent.routeConfig.loadChildren();\r\n const factory = await this.compiler.compileModuleAsync(module);\r\n const injector = factory.create(this.injector);\r\n const activatedRoute = this.#getActivatedRoute(\r\n this.#rootRoute,\r\n component\r\n );\r\n\r\n const tab = {\r\n key,\r\n component,\r\n injector: new SdOutletInjector(activatedRoute, injector),\r\n isActive: true,\r\n name: url,\r\n url,\r\n params,\r\n queryParams,\r\n data\r\n };\r\n\r\n this.tabRouterService.setCurrentTab(tab);\r\n if (\r\n activatedIndex >= 0 &&\r\n currentNavigation?.extras?.state?.replaceTab\r\n ) {\r\n this.tabs.splice(activatedIndex, 1);\r\n }\r\n if (existedIndex >= 0 && !currentNavigation?.extras?.state?.switchTab) {\r\n this.tabs[existedIndex] = tab;\r\n } else {\r\n this.tabs.push(tab);\r\n }\r\n }\r\n\r\n this.tabRouterNav?.checkUI();\r\n if (this.tabs.length > 10) {\r\n this.sdNotifyService.notify.warning(\r\n '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.'\r\n );\r\n }\r\n if (this.tabs.length > 15) {\r\n this.tabs.splice(0, this.tabs.length - 10);\r\n }\r\n }\r\n this.cd.markForCheck();\r\n };\r\n\r\n #getActivatedRouteSnapshot = (\r\n activatedRouteSnapshot: ActivatedRouteSnapshot\r\n ): ActivatedRouteSnapshot | null => {\r\n if (!activatedRouteSnapshot) {\r\n return null;\r\n }\r\n while (activatedRouteSnapshot.firstChild) {\r\n activatedRouteSnapshot = activatedRouteSnapshot.firstChild;\r\n }\r\n return activatedRouteSnapshot;\r\n };\r\n\r\n #getActivatedRoute = (\r\n activatedRoute: ActivatedRoute,\r\n component: any\r\n ): ActivatedRoute | null => {\r\n if (!activatedRoute) {\r\n return null;\r\n }\r\n\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n while (activatedRoute.firstChild) {\r\n activatedRoute = activatedRoute.firstChild;\r\n if (activatedRoute.component && activatedRoute.component === component) {\r\n return activatedRoute;\r\n }\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nclass SdOutletInjector implements Injector {\r\n constructor(\r\n private route: ActivatedRoute | null,\r\n // private childContexts: ChildrenOutletContexts,\r\n private parent: any\r\n ) {}\r\n\r\n get(token: any, notFoundValue?: any): any {\r\n if (token === ActivatedRoute && this.route) {\r\n return this.route;\r\n }\r\n\r\n // if (token === ChildrenOutletContexts) {\r\n // return this.childContexts;\r\n // }\r\n\r\n return this.parent.get(token, notFoundValue);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdTab, SdTabInfo } from '../models/tab-router.model';\r\nimport { SdTabRouterService } from '../services/tab-router.service';\r\n@Pipe({\r\n name: 'sdTabInfo'\r\n})\r\nexport class SdTabInfoPipe implements PipeTransform {\r\n constructor(private tabRouterService: SdTabRouterService) { }\r\n transform(tabInfo: SdTabInfo, tab: SdTab): Observable<SdTabInfo> {\r\n if (tabInfo) {\r\n return of(tabInfo);\r\n }\r\n return this.tabRouterService.builders.pipe(map(builders => {\r\n const builder = builders.find(e => e.component === tab.component);\r\n if (builder) {\r\n const { url, params, queryParams, data } = tab;\r\n tab.tabInfo = {\r\n name: typeof (builder.name) === 'function' ?\r\n builder.name({ url, params, queryParams, data }) : builder.name,\r\n initialName: typeof (builder.initialName) === 'function' ?\r\n builder.initialName({ url, params, queryParams }) : builder.initialName,\r\n tooltip: typeof (builder.tooltip) === 'function' ?\r\n builder.tooltip({ url, params, queryParams }) : builder.tooltip,\r\n color: typeof (builder.color) === 'function' ?\r\n builder.color({ url, params, queryParams }) : builder.color\r\n };\r\n return tab.tabInfo;\r\n }\r\n tab.tabInfo = {\r\n name: tab.url,\r\n initialName: null,\r\n };\r\n return tab.tabInfo;\r\n }));\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { RouterLinkWithHref } from \"@angular/router\";\r\n\r\n@Directive({\r\n selector: \"a[routerLink],area[routerLink]\",\r\n})\r\nexport class RouterLinkMouseDownDirective extends RouterLinkWithHref {\r\n @HostListener(\"mousedown\", [\r\n \"$event.button\",\r\n \"$event.ctrlKey\",\r\n \"$event.shiftKey\",\r\n \"$event.altKey\",\r\n \"$event.metaKey\",\r\n ])\r\n onMouseDown(\r\n button: number,\r\n ctrlKey: boolean,\r\n shiftKey: boolean,\r\n altKey: boolean,\r\n metaKey: boolean\r\n ): boolean {\r\n return this.onClick(button, ctrlKey, shiftKey, altKey, metaKey);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { SdTabRouterItemComponent } from './components/tab-router-item/tab-router-item.component';\r\nimport { SdTabRouterNavComponent } from './components/tab-router-nav/tab-router-nav.component';\r\nimport { SdTabRouterOutletComponent } from './components/tab-router-outlet/tab-router-outlet.component';\r\nimport { SdTabInfoPipe } from './pipes/tab-info.pipe';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { RouterLinkMouseDownDirective } from './directives/router-link-mouse-down.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n SdTabInfoPipe,\r\n RouterLinkMouseDownDirective,\r\n ],\r\n imports: [\r\n RouterModule,\r\n CommonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n DragDropModule\r\n ],\r\n exports: [\r\n SdTabRouterItemComponent,\r\n SdTabRouterNavComponent,\r\n SdTabRouterOutletComponent,\r\n ],\r\n providers: [],\r\n})\r\nexport class SdTabRouterModule {}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\n// Models\r\nexport * from './lib/models/tab-router.model';\r\nexport * from './lib/events/tab-router.event';\r\nexport * from './lib/actions/tab-router.action';\r\n\r\n// Decorators\r\nexport * from './lib/decorators/tab.decorator';\r\n\r\n// Service\r\nexport * from './lib/services/tab-router.service';\r\nexport * from './lib/services/tab-decorator.service';\r\n\r\n// Components\r\nexport * from './lib/components/tab-router-item/tab-router-item.component';\r\nexport * from './lib/components/tab-router-nav/tab-router-nav.component';\r\nexport * from './lib/components/tab-router-outlet/tab-router-outlet.component';\r\n\r\n// Module\r\nexport * from './lib/tab-router.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {RouterLinkMouseDownDirective as ɵb} from './src/lib/directives/router-link-mouse-down.directive';\nexport {SdTabInfoPipe as ɵa} from './src/lib/pipes/tab-info.pipe';"],"names":[],"mappings":"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"}