annotate src/app/app.module.ts @ 172:b15236b03a28

Add new components to bootstrapping.
author Lucas Thompson <dev@lucas.im>
date Tue, 21 Mar 2017 17:11:23 +0000
parents 262995cfd3e6
children ea735ebeed0e
rev   line source
angular-cli@0 1 import { BrowserModule } from '@angular/platform-browser';
dev@70 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@37 11 import { AudioPlayerService } from "./services/audio-player/audio-player.service";
dev@40 12 import { FeatureExtractionService } from "./services/feature-extraction/feature-extraction.service";
dev@44 13 import { FeatureExtractionMenuComponent } from "./feature-extraction-menu/feature-extraction-menu.component";
dev@115 14 import { ProgressSpinnerComponent } from "./progress-spinner/progress-spinner.component";
dev@135 15 import {
dev@135 16 AudioRecorderService,
dev@135 17 AudioInputProvider,
dev@135 18 MediaRecorderConstructor,
dev@135 19 MediaRecorder as IMediaRecorder,
dev@135 20 MediaRecorderOptions,
dev@135 21 ThrowingMediaRecorder,
dev@135 22 } from "./services/audio-recorder/audio-recorder.service";
dev@135 23 import {RecordingControlComponent} from "./recording-control/recording-control.component";
dev@172 24 import {NotebookFeedComponent} from "./notebook-feed/notebook-feed.component";
dev@172 25 import {AnalysisItemComponent} from "./analysis-item/analysis-item.component";
dev@31 26
dev@93 27 export function createAudioContext(): AudioContext {
dev@31 28 return new (
dev@31 29 (window as any).AudioContext
dev@31 30 || (window as any).webkitAudioContext
dev@31 31 )();
dev@31 32 }
angular-cli@0 33
dev@94 34 export function createAudioElement(): HTMLAudioElement {
dev@94 35 return new Audio();
dev@94 36 }
dev@94 37
dev@135 38 export function createAudioInputProvider(): AudioInputProvider {
dev@135 39 if (navigator.mediaDevices &&
dev@135 40 typeof navigator.mediaDevices.getUserMedia === 'function') {
dev@135 41 return () => navigator.mediaDevices.getUserMedia(
dev@135 42 {audio: true, video: false}
dev@135 43 );
dev@135 44 } else {
dev@135 45 return () => Promise.reject('Recording is not supported in this browser.');
dev@135 46 }
dev@135 47 }
dev@135 48
dev@135 49 declare const MediaRecorder: {
dev@135 50 prototype: IMediaRecorder;
dev@135 51 new(stream: MediaStream,
dev@135 52 options?: MediaRecorderOptions): IMediaRecorder;
dev@135 53 isTypeSupported(mimeType: string): boolean;
dev@135 54 };
dev@135 55
dev@135 56 export function createMediaRecorderFactory(): MediaRecorderConstructor {
dev@135 57 if (typeof MediaRecorder !== 'undefined') {
dev@135 58 return MediaRecorder;
dev@135 59 } else {
dev@135 60 return ThrowingMediaRecorder;
dev@135 61 }
dev@135 62 }
dev@135 63
angular-cli@0 64 @NgModule({
angular-cli@0 65 declarations: [
dev@1 66 AppComponent,
dev@13 67 WaveformComponent,
dev@21 68 AudioFileOpenComponent,
dev@44 69 PlaybackControlComponent,
dev@135 70 RecordingControlComponent,
dev@115 71 FeatureExtractionMenuComponent,
dev@172 72 ProgressSpinnerComponent,
dev@172 73 AnalysisItemComponent,
dev@172 74 NotebookFeedComponent
angular-cli@0 75 ],
angular-cli@0 76 imports: [
angular-cli@0 77 BrowserModule,
angular-cli@0 78 FormsModule,
dev@3 79 HttpModule,
dev@89 80 MaterialModule
angular-cli@0 81 ],
dev@1 82 providers: [
dev@94 83 {provide: HTMLAudioElement, useFactory: createAudioElement}, // TODO use something more generic than HTMLAudioElement
dev@94 84 {provide: 'AudioContext', useFactory: createAudioContext}, // use a string token, Safari doesn't seem to like AudioContext
dev@40 85 AudioPlayerService,
dev@135 86 {provide: 'AudioInputProvider', useFactory: createAudioInputProvider},
dev@135 87 AudioRecorderService,
dev@70 88 FeatureExtractionService,
dev@135 89 {provide: 'MediaRecorderFactory', useFactory: createMediaRecorderFactory},
dev@78 90 {provide: 'PiperRepoUri', useValue: 'assets/remote-plugins.json'}
dev@1 91 ],
angular-cli@0 92 bootstrap: [AppComponent]
angular-cli@0 93 })
dev@1 94 export class AppModule {
dev@1 95
dev@1 96 }