{"version":3,"file":"korrupt-kngx-navbar.mjs","sources":["../../../../packages/kngx-navbar/src/lib/helpers/latest-prop.ts","../../../../packages/kngx-navbar/src/lib/helpers/navbar-layer-instance.ts","../../../../packages/kngx-navbar/src/lib/helpers/release.decorator.ts","../../../../packages/kngx-navbar/src/lib/services/navbar.service.ts","../../../../packages/kngx-navbar/src/lib/components/navbar-outlet/navbar-outlet.component.ts","../../../../packages/kngx-navbar/src/lib/components/navbar-outlet/navbar-outlet.component.html","../../../../packages/kngx-navbar/src/lib/kngx-navbar.module.ts","../../../../packages/kngx-navbar/src/korrupt-kngx-navbar.ts"],"sourcesContent":["import { map, Observable } from 'rxjs';\nimport { KngxNavbarLayer } from '../interfaces/navbar-layer';\n\nexport type LatestPropResult<T extends KngxNavbarLayer, U extends keyof T> = Observable<{\n  id: number;\n  value: T[U];\n} | null>;\n\n\nexport function latestProp<T extends KngxNavbarLayer, U extends keyof T>(\n  prop: U\n): (source: Observable<T[]>) => LatestPropResult<T, U> {\n  return (source: Observable<T[]>) => {\n    return source.pipe(\n      map((layers) => {\n        const latest = layers\n          .reverse()\n          .find((layer) => layer[prop] !== undefined);\n\n        if (!latest?.id) return null;\n\n        const id = latest.id;\n        const value = latest[prop];\n\n        return { id, value };\n      })\n    );\n  };\n}\n","import { filter, map, Observable, Subject, takeUntil } from 'rxjs';\nimport { ExtractActions, KngxNavbarLayer, KngxNavbarLayerActionEvent, KngxNavbarLayerEvent} from '../interfaces';\n/**\n * Helper-object to manage navbar layers\n */\nexport class KngxNavbarLayerInstance<T extends KngxNavbarLayer> {\n  constructor(\n    readonly layer: T,\n    private readonly _eventsStream$: Observable<KngxNavbarLayerEvent<T>>,\n    readonly release: () => void,\n  ) {}\n\n  private readonly destroy$ = new Subject<void>();\n  private readonly events$ = this._eventsStream$.pipe(\n    takeUntil(this.destroy$),\n    filter((event) => event.id === this.layer.id)\n  );\n\n  public readonly buttonClicked: Observable<void> = this.events$.pipe(\n    filter(({ type }) => type === 'BUTTON'),\n    map(() => undefined)\n  );\n\n  public readonly actionClicked: Observable<ExtractActions<T>> = this.events$.pipe(\n    filter((event): event is KngxNavbarLayerActionEvent<T> => event.type === 'ACTION'),\n    map((event) => event.action)\n  )\n}\n","import { KngxNavbarLayerInstance } from \"./navbar-layer-instance\";\n\nexport const ReleaseLayer = (): PropertyDecorator => {\n    return function(target: any, propertyKey: string | symbol) {\n        let value: any;\n        const originalMethod = target.ngOnDestroy || new Function();\n\n\n        const getter = function() {\n            return value;\n        }\n\n        const setter = function(this: any, v: any) {\n            const proto = Object.getPrototypeOf(this);\n            \n            \n            proto.ngOnDestroy = () => {\n                originalMethod();\n                const layer: KngxNavbarLayerInstance<any> | null = proto[propertyKey];\n\n                if (layer) {\n                    layer.release();\n                }\n            }\n\n            value = v;\n        }\n\n        Object.defineProperty(target, propertyKey, {\n            get: getter,\n            set: setter,\n            enumerable: true,\n            configurable: true,\n        })\n    }\n}","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { KngxNavbarLayer, KngxNavbarLayerEvent } from '../interfaces';\nimport { KngxNavbarLayerInstance, latestProp } from '../helpers';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class KngxNavbarService {\n\n  private layers: BehaviorSubject<KngxNavbarLayer[]> = new BehaviorSubject<KngxNavbarLayer[]>([]);\n  readonly layers$ = this.layers.asObservable();\n\n  readonly events: Subject<KngxNavbarLayerEvent<unknown>> = new Subject<KngxNavbarLayerEvent<unknown>>();\n  readonly events$ = this.events.asObservable();\n\n  idx = 0;\n\n  readonly title$ = this.layers$.pipe(\n    latestProp('title')\n  )\n\n  readonly button$ = this.layers$.pipe(\n    latestProp('button')\n  )\n\n  readonly theme$ = this.layers$.pipe(\n    latestProp('theme')\n  )\n\n  public releaseLayer(id: number): void {\n    this.layers.next(this.layers.value.filter((e) => e.id !== id));\n  }\n\n  public registerNavbarLayer<T extends Omit<KngxNavbarLayer, 'id'>>(props: T): KngxNavbarLayerInstance<T & { id: number }> {\n    const id = ++this.idx;\n\n    const layer = { ...props, id };\n    const instance = new KngxNavbarLayerInstance(layer, this.events$, () => this.releaseLayer(id));\n\n    this.layers.next([...this.layers.value, layer]);\n\n    return instance as KngxNavbarLayerInstance<T & { id: number }>;\n  }\n\n}\n","import { Component, Input, OnDestroy } from '@angular/core';\nimport { KngxNavbarService } from '../../services/navbar.service';\nimport { Subject, map, takeUntil } from 'rxjs';\n\n@Component({\n  selector: 'kngx-navbar-outlet',\n  templateUrl: './navbar-outlet.component.html',\n  styleUrls: ['./navbar-outlet.component.scss'],\n})\nexport class KngxNavbarOutletComponent implements OnDestroy {\n  constructor(private readonly navbar: KngxNavbarService) {}\n\n  destroy$ = new Subject<void>();\n\n  readonly title$ = this.navbar.title$;\n  readonly button$ = this.navbar.button$;\n  readonly theme$ = this.navbar.theme$;\n\n  title?: string | null = null;\n  button?: string | null = null;\n  theme?: { color: string; background: string } | null = null;\n\n  titleSub = this.title$.pipe(takeUntil(this.destroy$)).subscribe((title) => this.title = title ? title.value : null);\n  buttonSub = this.button$.pipe(takeUntil(this.destroy$)).subscribe((button) => this.button = button ? button.value : null);\n  themeSub = this.theme$.pipe(takeUntil(this.destroy$)).subscribe((theme) => this.theme = theme ? theme.value : null);\n\n  color$ = this.theme$.pipe(\n    map((theme) => theme && theme.value ? theme.value.color : 'unset')\n  )\n\n  background$ = this.theme$.pipe(\n    map((theme) => theme && theme.value ? theme.value.background : 'unset')\n  )\n\n  @Input()\n  animations = true;\n\n  @Input()\n  center = true;\n\n  buttonClicked(id: number): void {\n    this.navbar.events.next({ type: 'BUTTON', id });\n  }\n\n  ngOnDestroy(): void {\n    this.destroy$.next();\n  }\n}\n","<nav class=\"kngx-navbar-outlet-component\"\n  [style.color]=\"color$ | async\"\n  [style.background]=\"background$ | async\"\n>\n  <div (click)=\"buttonClicked(button.id)\" class=\"kngx-navbar-button\" *ngIf=\"button$ | async as button\">\n    <ng-content select=\".button\"></ng-content>\n  </div>\n  <div [class.center]=\"center\" class=\"kngx-navbar-title\" *ngIf=\"title$ | async as title\">\n    <ng-content select=\".title\"></ng-content>\n  </div>\n</nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KngxNavbarService } from './services/navbar.service';\nimport { KngxNavbarOutletComponent } from './components';\n\n@NgModule({\n  imports: [CommonModule],\n  providers: [KngxNavbarService],\n  declarations: [KngxNavbarOutletComponent],\n  exports: [KngxNavbarOutletComponent],\n})\nexport class KngxNavbarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.KngxNavbarService"],"mappings":"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"}