annotate src/app/app.module.ts @ 31:f6ea31a3b1a3

Encapsulate audio playing and decoding logic in a ng2 service, provided by the root module.
author Lucas Thompson <dev@lucas.im>
date Wed, 30 Nov 2016 10:21:27 +0000
parents 3e96bcbfa5c5
children f6e58c2accb0
rev   line source
angular-cli@0 1 import { BrowserModule } from '@angular/platform-browser';
angular-cli@0 2 import { NgModule } from '@angular/core';
angular-cli@0 3 import { FormsModule } from '@angular/forms';
angular-cli@0 4 import { HttpModule } from '@angular/http';
angular-cli@0 5
angular-cli@0 6 import { AppComponent } from './app.component';
dev@31 7 import { MaterialModule } from "@angular/material";
dev@5 8 import { WaveformComponent } from './waveform/waveform.component';
dev@13 9 import { AudioFileOpenComponent } from './audio-file-open/audio-file-open.component';
dev@21 10 import { PlaybackControlComponent } from './playback-control/playback-control.component';
dev@31 11 import { AudioPlayerService } from "./services/audio-player.service";
dev@31 12
dev@31 13 function createAudioContext(): AudioContext {
dev@31 14 return new (
dev@31 15 (window as any).AudioContext
dev@31 16 || (window as any).webkitAudioContext
dev@31 17 )();
dev@31 18 }
angular-cli@0 19
angular-cli@0 20 @NgModule({
angular-cli@0 21 declarations: [
dev@1 22 AppComponent,
dev@13 23 WaveformComponent,
dev@21 24 AudioFileOpenComponent,
dev@21 25 PlaybackControlComponent
angular-cli@0 26 ],
angular-cli@0 27 imports: [
angular-cli@0 28 BrowserModule,
angular-cli@0 29 FormsModule,
dev@3 30 HttpModule,
dev@3 31 MaterialModule.forRoot()
angular-cli@0 32 ],
dev@1 33 providers: [
dev@31 34 {provide: HTMLAudioElement, useValue: new Audio()}, // TODO use something more generic than HTMLAudioElement
dev@31 35 {provide: 'AudioContext', useValue: createAudioContext()}, // use a string token, Safari doesn't seem to like AudioContext
dev@31 36 AudioPlayerService
dev@1 37 ],
angular-cli@0 38 bootstrap: [AppComponent]
angular-cli@0 39 })
dev@1 40 export class AppModule {
dev@1 41
dev@1 42 }