/**
 * @license
 * Copyright Google Inc. All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import {Component, NgModule, OnInit, TemplateRef, ViewChild} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {Subject} from 'rxjs';
// #docregion NgIfSimple
@Component({
  selector: 'ng-if-simple',
  template: `
    {{show ? 'hide' : 'show'}} 
    show = {{show}}
    
Text to show
`
})
export class NgIfSimple {
  show: boolean = true;
}
// #enddocregion
// #docregion NgIfElse
@Component({
  selector: 'ng-if-else',
  template: `
    {{show ? 'hide' : 'show'}} 
    show = {{show}}
    Text to show
    Alternate text while primary text is hidden 
`
})
export class NgIfElse {
  show: boolean = true;
}
// #enddocregion
// #docregion NgIfThenElse
@Component({
  selector: 'ng-if-then-else',
  template: `
    {{show ? 'hide' : 'show'}} 
    Switch Primary 
    show = {{show}}
    this is ignored
    Primary text to show 
    Secondary text to show 
    Alternate text while primary text is hidden 
`
})
export class NgIfThenElse implements OnInit {
  thenBlock: TemplateRef|null = null;
  show: boolean = true;
  @ViewChild('primaryBlock', {static: true})
  primaryBlock: TemplateRef|null = null;
  @ViewChild('secondaryBlock')
  secondaryBlock: TemplateRef|null = null;
  switchPrimary() {
    this.thenBlock = this.thenBlock === this.primaryBlock ? this.secondaryBlock : this.primaryBlock;
  }
  ngOnInit() { this.thenBlock = this.primaryBlock; }
}
// #enddocregion
// #docregion NgIfAs
@Component({
  selector: 'ng-if-let',
  template: `
    Next User 
    
      Hello {{user.last}}, {{user.first}}!
    
    Waiting... (user is {{user|json}}) 
`
})
export class NgIfAs {
  userObservable = new Subject<{first: string, last: string}>();
  first = ['John', 'Mike', 'Mary', 'Bob'];
  firstIndex = 0;
  last = ['Smith', 'Novotny', 'Angular'];
  lastIndex = 0;
  nextUser() {
    let first = this.first[this.firstIndex++];
    if (this.firstIndex >= this.first.length) this.firstIndex = 0;
    let last = this.last[this.lastIndex++];
    if (this.lastIndex >= this.last.length) this.lastIndex = 0;
    this.userObservable.next({first, last});
  }
}
// #enddocregion
@Component({
  selector: 'example-app',
  template: `