{"version":3,"file":"ngx-feature-flags.mjs","sources":["../../../projects/ngx-feature-flags/src/lib/ngx-feature-flags.service.ts","../../../projects/ngx-feature-flags/src/lib/show-if-feature.directive.ts","../../../projects/ngx-feature-flags/src/lib/show-if-not-feature.directive.ts","../../../projects/ngx-feature-flags/src/lib/ngx-feature-flags.module.ts","../../../projects/ngx-feature-flags/src/lib/feature-flags.guard.ts","../../../projects/ngx-feature-flags/src/public-api.ts","../../../projects/ngx-feature-flags/src/ngx-feature-flags.ts"],"sourcesContent":["import { Subject, Observable } from 'rxjs';\n\nexport class NgxFeatureFlagsService {\n\n  private featureFlags: Map<string, boolean>;\n  private initialized = false;\n\n  private refresh: Subject<boolean>;\n  public refresh$: Observable<boolean>;\n\n  get Initialized() {\n    return this.initialized;\n  }\n\n  constructor(private initFun: () => Promise<Map<string, boolean>>) {\n    this.featureFlags = new Map();\n    this.refresh = new Subject();\n    this.refresh$ = this.refresh.asObservable();\n  }\n\n  public featureOff(featureName: string) {\n    return !this.featureOn(featureName);\n  }\n\n  public featureOn(featureName: string) {\n    if (!featureName) {\n      return true;\n    }\n    return this.featureFlags.has(featureName) && this.featureFlags.get(featureName);\n  }\n\n\n  // This method is called once and a list of features is stored in memory\n  public async initialize() {\n    this.featureFlags.clear();\n    this.featureFlags = await this.initFun();\n    this.initialized = true;\n    this.refresh.next(true);\n  }\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef, OnInit, OnDestroy } from '@angular/core';\nimport { NgxFeatureFlagsService } from './ngx-feature-flags.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n  selector: '[ngxShowIfFeature]'\n})\nexport class ShowIfFeatureDirective implements OnInit, OnDestroy {\n\n  private featureName: string;\n\n  @Input() set ngxShowIfFeature(feature: string) {\n    this.featureName = feature;\n    this.showOrHide();\n  }\n\n  private hasView = false;\n  private subs: Subscription;\n\n  constructor(private featureFlagService: NgxFeatureFlagsService, private templateRef: TemplateRef<any>, private vcr: ViewContainerRef) { }\n\n  ngOnInit() {\n    this.subs = new Subscription();\n    this.subs.add(this.featureFlagService.refresh$.subscribe(() => this.showOrHide()));\n  }\n\n  private showOrHide() {\n    if (this.featureName) {\n      const featureOn = this.featureFlagService.featureOn(this.featureName);\n\n      if (featureOn && !this.hasView) {\n        this.vcr.createEmbeddedView(this.templateRef);\n        this.hasView = true;\n      } else if (!featureOn && this.hasView) {\n        this.vcr.clear();\n        this.hasView = false;\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subs.unsubscribe();\n  }\n\n}\n","import { Directive, Input, TemplateRef, ViewContainerRef, OnInit, OnDestroy } from '@angular/core';\nimport { NgxFeatureFlagsService } from './ngx-feature-flags.service';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n  selector: '[ngxShowIfNotFeature]'\n})\nexport class ShowIfNotFeatureDirective implements OnInit, OnDestroy {\n\n  private featureName: string;\n\n  @Input() set ngxShowIfNotFeature(feature: string) {\n    this.featureName = feature;\n    this.showOrHide();\n  }\n\n  private hasView = false;\n  private subs: Subscription;\n\n  constructor(private featureFlagService: NgxFeatureFlagsService, private templateRef: TemplateRef<any>, private vcr: ViewContainerRef) { }\n\n  ngOnInit() {\n    this.subs = new Subscription();\n    this.subs.add(this.featureFlagService.refresh$.subscribe(() => this.showOrHide()));\n  }\n\n  private showOrHide() {\n    if (this.featureName) {\n      const featureOff = this.featureFlagService.featureOff(this.featureName);\n\n      if (featureOff && !this.hasView) {\n        this.vcr.createEmbeddedView(this.templateRef);\n        this.hasView = true;\n      } else if (!featureOff && this.hasView) {\n        this.vcr.clear();\n        this.hasView = false;\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subs.unsubscribe();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { ShowIfFeatureDirective } from './show-if-feature.directive';\nimport { ShowIfNotFeatureDirective } from './show-if-not-feature.directive';\n\n\n\n@NgModule({\n  declarations: [ShowIfFeatureDirective, ShowIfNotFeatureDirective],\n  imports: [\n  ],\n  exports: [ShowIfFeatureDirective, ShowIfNotFeatureDirective]\n})\nexport class NgxFeatureFlagsModule { }\n","import { Injectable } from '@angular/core';\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot } from '@angular/router';\nimport { NgxFeatureFlagsService } from './ngx-feature-flags.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FeatureFlagsGuard implements CanActivate, CanActivateChild {\n\n  constructor(private featureFlagService: NgxFeatureFlagsService) { }\n\n  async canActivate(route: ActivatedRouteSnapshot) {\n    const featureFlag = route.data.featureFlag;\n\n    if (!featureFlag) {\n      return true;\n    }\n\n    if (this.featureFlagService.Initialized) {\n      return this.featureFlagService.featureOn(featureFlag);\n    } else {\n      await this.featureFlagService.initialize();\n      return this.featureFlagService.featureOn(featureFlag);\n    }\n  }\n\n  async canActivateChild(route: ActivatedRouteSnapshot) {\n    return await this.canActivate(route);\n  }\n\n}\n","/*\n * Public API Surface of ngx-feature-flags\n */\n\nexport * from './lib/ngx-feature-flags.service';\nexport * from './lib/ngx-feature-flags.module';\nexport * from './lib/feature-flags.guard';\nexport * from './lib/show-if-feature.directive';\nexport * from './lib/show-if-not-feature.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxFeatureFlagsService"],"mappings":"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"}