{"version":3,"file":"ngx-feature-toggle.mjs","sources":["../../../projects/ngx-feature-toggle/src/lib/ngx-feature-toggle.directive.ts","../../../projects/ngx-feature-toggle/src/lib/ngx-feature-toggle-provider.component.ts","../../../projects/ngx-feature-toggle/src/lib/ngx-feature-toggle.module.ts","../../../projects/ngx-feature-toggle/src/lib/ngx-feature-toggle-route-guard.router.ts","../../../projects/ngx-feature-toggle/src/public-api.ts","../../../projects/ngx-feature-toggle/src/ngx-feature-toggle.ts"],"sourcesContent":["import { Directive, Input, OnInit, TemplateRef, ViewContainerRef, DoCheck, isDevMode } from '@angular/core';\n\nimport { isOn } from 'feature-toggle-service';\n\n@Directive({\n  // tslint:disable-next-line: directive-selector\n  selector: '[featureToggle]',\n})\nexport class FeatureToggleDirective implements OnInit, DoCheck {\n  @Input() public featureToggle: string[] | string | undefined;\n  private isOn = false;\n\n  constructor(private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef) {}\n\n  ngOnInit() {\n    if (!this.featureToggle) {\n      throw new Error('Attribute `featureToggle` should not be null or empty');\n    }\n    this.shouldRender();\n  }\n\n  ngDoCheck() {\n    if (this.isOn !== this.isOnCheck(this.featureToggle)) {\n      this.shouldRender();\n    }\n  }\n\n  private shouldRender() {\n    this.isOn = this.isOnCheck(this.featureToggle);\n    if (this.isOn) {\n      this.viewContainer.createEmbeddedView(this.templateRef);\n    } else {\n      this.viewContainer.clear();\n    }\n  }\n\n  isOnCheck(featureToggle: string[] | string | undefined) {\n    if (typeof featureToggle !== 'string' && !Array.isArray(featureToggle)) {\n      if (isDevMode()) {\n        console.error('`NgxFeatureToggle`: `featureToggle` should receive an array or an string as a value.');\n      }\n      return false;\n    }\n\n    return ([].concat(featureToggle as any) as string[]).every(toggle =>\n      toggle[0] === '!' ? !isOn(toggle.replace('!', '')) : isOn(toggle),\n    );\n  }\n}\n","import { Component, Input, OnInit, DoCheck } from '@angular/core';\nimport { set, FeatureToggleServiceConfig } from 'feature-toggle-service';\n\n@Component({\n  selector: 'feature-toggle-provider',\n  template: '<ng-content></ng-content>',\n})\nexport class FeatureToggleProviderComponent implements DoCheck, OnInit {\n  @Input()\n  features: FeatureToggleServiceConfig = {};\n\n  private currentConfig: FeatureToggleServiceConfig = {};\n\n  ngOnInit() {\n    if (typeof this.features !== 'object') {\n      throw new Error('Attribute `features` should not be null or empty');\n    }\n    this.setFeatureToggles();\n  }\n\n  ngDoCheck() {\n    this.setFeatureToggles();\n  }\n\n  private setFeatureToggles() {\n    if (this.currentConfig !== this.features) {\n      // Using `Object.assign()` method for bundle size decreasing purposes\n      // It's required since it needs a new memory reference\n      // for the new object value\n      this.currentConfig = Object.assign({}, this.features);\n      set(this.features);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeatureToggleProviderComponent } from './ngx-feature-toggle-provider.component';\nimport { FeatureToggleDirective } from './ngx-feature-toggle.directive';\n\n@NgModule({\n  declarations: [FeatureToggleProviderComponent, FeatureToggleDirective],\n  exports: [FeatureToggleProviderComponent, FeatureToggleDirective],\n  imports: [CommonModule],\n})\nexport class FeatureToggleModule {}\n","import { Injectable, isDevMode } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route, CanActivateChild, Router, CanLoad, CanActivate } from '@angular/router';\nimport { isOn } from 'feature-toggle-service';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxFeatureToggleRouteGuard implements CanActivateChild, CanLoad, CanActivate {\n  constructor(private router: Router) {}\n\n  isDevMode() {\n    return isDevMode();\n  }\n\n  private isOnCheck(route: ActivatedRouteSnapshot | Route): boolean {\n    if (\n      !route ||\n      !route.data ||\n      (typeof route.data.featureToggle !== 'string' && !Array.isArray(route.data.featureToggle))\n    ) {\n      if (this.isDevMode()) {\n        console.error(\n          // tslint:disable-next-line: max-line-length\n          '`NgxFeatureToggleRouteGuard` need to receive `featureToggle` as data as an array or string in your route configuration.',\n        );\n      }\n      return false;\n    }\n\n    const hasAllTogglesOn = ([].concat(route.data.featureToggle as any) as string[]).every(toggle =>\n      toggle[0] === '!' ? !isOn(toggle.replace('!', '')) : isOn(toggle),\n    );\n\n    if (!hasAllTogglesOn && route.data.redirectTo) {\n      this.router.navigate([].concat(route.data.redirectTo));\n    }\n\n    return hasAllTogglesOn;\n  }\n\n  canLoad(route: Route): boolean {\n    return this.isOnCheck(route);\n  }\n\n  canActivateChild(route: ActivatedRouteSnapshot | Route): boolean {\n    return this.isOnCheck(route);\n  }\n\n  canActivate(route: ActivatedRouteSnapshot | Route): boolean {\n    return this.isOnCheck(route);\n  }\n}\n","/*\n * Public API Surface of ngx-feature-toggle\n */\n\nexport * from './lib/ngx-feature-toggle.directive';\nexport * from './lib/ngx-feature-toggle-provider.component';\nexport * from './lib/ngx-feature-toggle.module';\nexport * from './lib/ngx-feature-toggle-route-guard.router';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}