dev@171: /** dev@171: * Created by lucast on 21/03/2017. dev@171: */ dev@171: import {Component, Input} from "@angular/core"; dev@178: import Waves from 'waves-ui'; dev@178: import {EventEmitter} from 'events'; dev@178: dev@178: export interface PartialEventEmitter { dev@178: on(event: string|symbol, listener: Function): void; dev@178: } dev@178: dev@178: class NotifyingTimeContext extends Waves.core.TimelineTimeContext dev@178: implements PartialEventEmitter { dev@178: dev@178: private eventEmitter: EventEmitter; dev@178: dev@178: constructor(pixelsPerSecond: number, visibleWidth: number) { dev@178: super(pixelsPerSecond, visibleWidth); dev@178: this.eventEmitter = new EventEmitter(); dev@178: } dev@178: dev@178: get offset(){ dev@178: return super.offset; dev@178: } dev@178: dev@178: set offset(value: number) { dev@178: if (value !== this.offset) { dev@178: this.eventEmitter.emit('offset'); dev@178: } dev@178: super.offset = value; dev@178: } dev@178: dev@178: get zoom(){ dev@178: return super.zoom; dev@178: } dev@178: dev@178: set zoom(value: number) { dev@178: if (value !== this.zoom) { dev@178: this.eventEmitter.emit('zoom'); dev@178: } dev@178: super.zoom = value; dev@178: } dev@178: dev@178: on(event: string|symbol, listener: Function): void { dev@178: this.eventEmitter.on(event, listener); dev@178: } dev@178: } dev@171: dev@171: @Component({ dev@171: selector: 'ugly-notebook-feed', dev@171: templateUrl: './notebook-feed.component.html', dev@171: styleUrls: ['./notebook-feed.component.css'] dev@171: }) dev@171: export class NotebookFeedComponent { dev@171: private _audioBuffer: AudioBuffer; dev@181: sharedTimeContext: TimelineTimeContext; dev@171: dev@171: dev@171: @Input() dev@171: set audioBuffer(buffer: AudioBuffer) { dev@171: this._audioBuffer = buffer || undefined; dev@171: if (this.audioBuffer) { dev@171: dev@171: } dev@171: } dev@171: dev@171: get audioBuffer(): AudioBuffer { dev@171: return this._audioBuffer; dev@171: } dev@181: dev@181: constructor() { dev@181: this.sharedTimeContext = new NotifyingTimeContext(100, 1000); dev@181: } dev@171: }