{"version":3,"file":"novo-elements-elements-aside.mjs","sources":["../../../projects/novo-elements/src/elements/aside/aside-ref.ts","../../../projects/novo-elements/src/elements/aside/aside.animation.ts","../../../projects/novo-elements/src/elements/aside/aside.component.ts","../../../projects/novo-elements/src/elements/aside/aside.component.html","../../../projects/novo-elements/src/elements/aside/aside.service.ts","../../../projects/novo-elements/src/elements/aside/aside.module.ts","../../../projects/novo-elements/src/elements/aside/novo-elements-elements-aside.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { AsideComponent } from './aside.component';\n\nexport class NovoAsideRef<T = any, R = any> {\n  constructor(public component: any, public params: T, private overlayRef: OverlayRef) {}\n\n  private _beforeClose = new Subject<R>();\n  private _afterClosed = new Subject<R>();\n  isClosed: boolean = false;\n  componentInstance: AsideComponent;\n\n  // Gets a promise that is resolved when the dialog is closed.\n  get onClosed(): Promise<R> {\n    return this._afterClosed.toPromise();\n  }\n\n  afterClosed(): Observable<R> {\n    return this._afterClosed.asObservable();\n  }\n\n  beforeClose(): Observable<R> {\n    return this._beforeClose.asObservable();\n  }\n\n  close(result?: R): void {\n    // Listen for animation 'start' events\n    this.componentInstance.animationStateChanged\n      .pipe(\n        filter((event) => event.phaseName === 'start'),\n        take(1),\n      )\n      .subscribe(() => {\n        this._beforeClose.next(result);\n        this._beforeClose.complete();\n        this.overlayRef.detachBackdrop();\n      });\n\n    // Listen for animation 'done' events\n    this.componentInstance.animationStateChanged\n      .pipe(\n        filter((event) => event.phaseName === 'done' && event.toState === 'leave'),\n        take(1),\n      )\n      .subscribe(() => {\n        this.isClosed = true;\n        this.overlayRef.dispose();\n        this._afterClosed.next(result);\n        this._afterClosed.complete();\n\n        // Make sure to also clear the reference to the\n        // component instance to avoid memory leaks\n        this.componentInstance = null;\n      });\n\n    // Start exit animation\n    this.componentInstance.startExitAnimation();\n  }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const slideInOut = trigger('slideInOut', [\n  state('void', style({ transform: 'translateX(100%)' })),\n  state('enter', style({ transform: 'none' })),\n  state('leave', style({ transform: 'translateX(100%)' })),\n  transition('* => *', animate('800ms cubic-bezier(0.2, 1, 0.3, 1)')),\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport { ComponentPortal, Portal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, Injector, Output } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { slideInOut } from './aside.animation';\n\n@Component({\n    selector: 'novo-aside',\n    templateUrl: './aside.component.html',\n    styleUrls: ['./aside.component.scss'],\n    animations: [slideInOut],\n    standalone: false,\n})\nexport class AsideComponent {\n  @Output() animationStateChanged = new EventEmitter<AnimationEvent>();\n\n  animationState: 'void' | 'enter' | 'leave' = 'enter';\n\n  component: Portal<any>;\n\n  constructor(private injector: Injector, private asideRef: NovoAsideRef) {\n    this.component = new ComponentPortal(asideRef.component, null, injector);\n  }\n\n  onAnimationStart(event: AnimationEvent) {\n    this.animationStateChanged.emit(event);\n  }\n\n  onAnimationDone(event: AnimationEvent) {\n    this.animationStateChanged.emit(event);\n  }\n\n  startExitAnimation() {\n    this.animationState = 'leave';\n  }\n}\n","<div class=\"aside-panel\" [@slideInOut]=\"animationState\" (@slideInOut.start)=\"onAnimationStart($event)\"\n  (@slideInOut.done)=\"onAnimationDone($event)\">\n  <ng-template [cdkPortalOutlet]=\"component\"></ng-template>\n</div>","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector } from '@angular/core';\nimport { NovoAsideRef } from './aside-ref';\nimport { AsideComponent } from './aside.component';\n\ninterface AsideConfig extends OverlayConfig {\n  panelClass?: string;\n  hasBackdrop?: boolean;\n  backdropClass?: string;\n}\n\nconst DEFAULT_CONFIG: AsideConfig = {\n  hasBackdrop: true,\n  backdropClass: 'aside-overlay-backdrop',\n  panelClass: 'aside-overlay-panel',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class NovoAsideService {\n  constructor(private injector: Injector, private overlay: Overlay) {}\n\n  open<R = any>(component, params = {}, config = {}) {\n    // Override default configuration\n    const asideConfig = this.getOverlayConfig({ ...DEFAULT_CONFIG, ...config });\n\n    // Returns an OverlayRef which is a PortalHost\n    const overlayRef = this.createOverlay(asideConfig);\n\n    // Instantiate remote control\n    const asideRef = new NovoAsideRef<typeof params, R>(component, params, overlayRef);\n\n    const overlayComponent = this.attachAsideContainer(AsideComponent, overlayRef, asideConfig, asideRef);\n\n    // Pass the instance of the overlay component to the remote control\n    asideRef.componentInstance = overlayComponent;\n\n    overlayRef.backdropClick().subscribe(() => asideRef.close());\n\n    return asideRef;\n  }\n\n  private createOverlay(config: AsideConfig) {\n    return this.overlay.create(config);\n  }\n\n  private attachAsideContainer(component, overlayRef: OverlayRef, config: AsideConfig, asideRef: NovoAsideRef) {\n    const injector = this.createInjector(config, asideRef);\n\n    const containerPortal = new ComponentPortal(component, null, injector);\n    const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\n\n    return containerRef.instance;\n  }\n\n  private createInjector(config: AsideConfig, asideRef: NovoAsideRef): Injector {\n    return Injector.create({\n      parent: this.injector,\n      providers: [{ provide: NovoAsideRef, useValue: asideRef }],\n    });\n  }\n\n  private getOverlayConfig(config: AsideConfig): AsideConfig {\n    const scrollStrategy = config.hasBackdrop ? this.overlay.scrollStrategies.block() : this.overlay.scrollStrategies.noop();\n\n    return {\n      scrollStrategy,\n      hasBackdrop: config.hasBackdrop,\n      backdropClass: config.backdropClass,\n      panelClass: config.panelClass,\n    };\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { NgModule } from '@angular/core';\nimport { AsideComponent } from './aside.component';\nimport { NovoAsideService } from './aside.service';\n\n@NgModule({\n  imports: [OverlayModule, PortalModule],\n  declarations: [AsideComponent],\n  providers: [NovoAsideService],\n})\nexport class NovoAsideModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoAsideRef"],"mappings":"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"}