{"version":3,"file":"angular-material-rail-drawer.mjs","sources":["../../../projects/angular-material-rail-drawer/src/lib/default.config.ts","../../../projects/angular-material-rail-drawer/src/lib/animations.settings.ts","../../../projects/angular-material-rail-drawer/src/lib/drawer-rail.directive.ts","../../../projects/angular-material-rail-drawer/src/lib/drawer-rail.module.ts","../../../projects/angular-material-rail-drawer/src/public-api.ts","../../../projects/angular-material-rail-drawer/src/angular-material-rail-drawer.ts"],"sourcesContent":["export const miniConfig = {\n  defaultDuration: '100ms',\n  defaultMinWidth: '60px',\n  defaultMaxWidth: '200px',\n};\n","import {\n  group,\n  query,\n  animateChild,\n  animate,\n  style,\n  AnimationStyleMetadata,\n  AnimationGroupMetadata,\n} from '@angular/animations';\nimport { miniConfig } from './default.config';\n\nexport function sidebarClose(\n  minWidth: string = miniConfig.defaultMinWidth\n): AnimationStyleMetadata {\n  return style({\n    width: minWidth,\n    visibility: 'visible',\n    transform: 'none',\n    overflow: 'hidden',\n  });\n}\n\nexport function sidebarOpen(\n  maxWidth: string = miniConfig.defaultMaxWidth\n): AnimationStyleMetadata {\n  return style({\n    width: maxWidth,\n    visibility: 'visible',\n  });\n}\n\nexport function sidebarAnimationOpenGroup(\n  animationDuration: string = miniConfig.defaultDuration,\n  maxWidth: string = miniConfig.defaultMaxWidth\n): AnimationGroupMetadata {\n  return group([\n    query('@iconAnimation', animateChild(), { optional: true }),\n    query('@labelAnimation', animateChild(), { optional: true }),\n    animate(`${animationDuration} ease-in-out`, sidebarOpen(maxWidth)),\n  ]);\n}\n\nexport function sidebarAnimationCloseGroup(\n  animationDuration: string = miniConfig.defaultDuration,\n  minWidth: string = miniConfig.defaultMinWidth\n): AnimationGroupMetadata {\n  return group([\n    query('@iconAnimation', animateChild(), { optional: true }),\n    query('@labelAnimation', animateChild(), { optional: true }),\n    animate(`${animationDuration} ease-in-out`, sidebarClose(minWidth)),\n  ]);\n}\n","import {\n  forwardRef,\n  Inject,\n  Directive,\n  ElementRef,\n  OnInit,\n  OnDestroy,\n  Host,\n  Self,\n  Optional,\n  Renderer2,\n  Input,\n  AfterViewInit,\n} from '@angular/core';\nimport { AnimationMetadata, AnimationBuilder } from '@angular/animations';\n\nimport {\n  MatSidenav,\n  MatDrawer,\n  MatSidenavContainer,\n  MatDrawerContainer,\n} from '@angular/material/sidenav';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { miniConfig } from './default.config';\nimport {\n  sidebarAnimationCloseGroup,\n  sidebarAnimationOpenGroup,\n} from './animations.settings';\nimport { Directionality } from '@angular/cdk/bidi';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'mat-sidenav[mode=\"rail\"], mat-drawer[mode=\"rail\"], mat-sidenav[rail-mode], mat-drawer[rail-mode]',\n  // eslint-disable-next-line @angular-eslint/no-host-metadata-property\n  host: {\n    '[class.mat-drawer-side]': 'true',\n  },\n})\nexport class MatDrawerRailDirective\n  implements OnInit, OnDestroy, AfterViewInit\n{\n  public onDestory: Subject<void> = new Subject();\n\n  private drawer: MatSidenav | MatDrawer;\n  private container: MatSidenavContainer | MatDrawerContainer;\n\n  private containerContent?: HTMLElement;\n\n  @Input()\n  public openAnimation?: AnimationMetadata | AnimationMetadata[];\n\n  @Input()\n  public closeAnimation?: AnimationMetadata | AnimationMetadata[];\n\n  @Input()\n  public closeWidth: string = miniConfig.defaultMinWidth;\n\n  @Input()\n  public expandedWidth: string = miniConfig.defaultMaxWidth;\n\n  constructor(\n    private builder: AnimationBuilder,\n    private el: ElementRef<HTMLElement>,\n    private renderer2: Renderer2,\n    @Host() @Self() @Optional() sidenav: MatSidenav,\n    @Host() @Self() @Optional() drawer: MatDrawer,\n    @Inject(forwardRef(() => MatSidenavContainer))\n    @Optional()\n    matSideNavContainer: MatSidenavContainer,\n    @Inject(forwardRef(() => MatDrawerContainer))\n    @Optional()\n    matDrawerContainer: MatDrawerContainer,\n    // tslint:disable-next-line: variable-name\n    @Optional() private _dir: Directionality\n  ) {\n    this.container = matSideNavContainer || matDrawerContainer;\n    this.drawer = sidenav || drawer;\n    this.container.hasBackdrop = false;\n    this.drawer.autoFocus = false;\n  }\n\n  public ngOnInit(): void {\n    this.closeAnimation =\n      this.closeAnimation ||\n      sidebarAnimationCloseGroup(miniConfig.defaultDuration, this.closeWidth);\n    this.openAnimation =\n      this.openAnimation ||\n      sidebarAnimationOpenGroup(miniConfig.defaultDuration, this.expandedWidth);\n    this.renderer2.setStyle(\n      this.el.nativeElement.querySelector('.mat-drawer-inner-container'),\n      'overflow',\n      'hidden'\n    );\n    this.drawer.closedStart.pipe(takeUntil(this.onDestory)).subscribe(() => {\n      this.closeMenu();\n    });\n\n    this.drawer._closedStream.pipe(takeUntil(this.onDestory)).subscribe(() => {\n      this.renderer2.setStyle(this.el.nativeElement, 'visibility', 'visible');\n      this.renderer2.setStyle(this.el.nativeElement, 'display', 'block');\n    });\n\n    this.drawer.openedStart.pipe(takeUntil(this.onDestory)).subscribe(() => {\n      this.correctContentMargin(this.expandedWidth);\n      const factory = this.builder.build(this.openAnimation ?? []);\n      const player = factory.create(this.el.nativeElement);\n      player.play();\n    });\n  }\n\n  ngAfterViewInit() {\n    if (this.drawer.opened) {\n      this.correctContentMargin(this.expandedWidth);\n    } else {\n      this.renderer2.setStyle(this.el.nativeElement, 'visibility', 'visible');\n      this.renderer2.setStyle(this.el.nativeElement, 'display', 'block');\n      this.closeMenu();\n    }\n  }\n\n  private closeMenu() {\n    this.correctContentMargin(this.closeWidth);\n    const factory = this.builder.build(this.closeAnimation ?? []);\n    const player = factory.create(this.el.nativeElement);\n    player.play();\n  }\n\n  private correctContentMargin(width: string) {\n    this.containerContent =\n      (this.containerContent\n        ? this.containerContent\n        : this.el.nativeElement?.parentElement?.querySelector(\n            '.mat-drawer-content'\n          )) ?? undefined;\n    if (\n      (this.drawer.position !== 'end' &&\n        this._dir &&\n        this._dir.value !== 'rtl') ||\n      (this.drawer.position === 'end' && this._dir && this._dir.value === 'rtl')\n    ) {\n      this.renderer2.setStyle(this.containerContent, 'marginLeft', width);\n    } else {\n      this.renderer2.setStyle(this.containerContent, 'marginRight', width);\n    }\n  }\n\n  public ngOnDestroy(): void {\n    this.onDestory.next();\n    this.onDestory.complete();\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatDrawerRailDirective } from './drawer-rail.directive';\n\n@NgModule({\n  imports: [MatSidenavModule],\n  declarations: [MatDrawerRailDirective],\n  exports: [MatDrawerRailDirective],\n})\nexport class DrawerRailModule {}\n","/*\n * Public API Surface of angular-material-rail-drawer\n */\nexport * from './lib/default.config';\nexport * from './lib/animations.settings';\nexport * from './lib/drawer-rail.directive';\nexport * from './lib/drawer-rail.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}