playable
Version:
Video player based on HTML5Video
70 lines (51 loc) • 1.57 kB
text/typescript
import PreviewThumbnailView from './preview-thumbnail.view';
import {
IPreviewService,
INormalizedFramesQuality,
} from '../preview-service/types';
import { IPreviewThumbnail } from './types';
export default class PreviewThumbnail implements IPreviewThumbnail {
static moduleName = 'previewThumbnail';
static View = PreviewThumbnailView;
static dependencies = ['previewService'];
private _previewService: IPreviewService;
private _currentFrames: INormalizedFramesQuality[];
view: PreviewThumbnailView;
constructor({ previewService }: { previewService: IPreviewService }) {
this._previewService = previewService;
this._initUI();
}
private _initUI() {
this.view = new PreviewThumbnail.View();
}
getElement(): HTMLElement {
return this.view.getElement();
}
showAt(second: number) {
const config: INormalizedFramesQuality[] = this._previewService.getAt(
second,
);
if (!config) {
this.view.showAsEmpty();
return;
}
this.view.showWithPreview();
if (this._currentFrames) {
if (this._currentFrames[0].spriteUrl !== config[0].spriteUrl) {
this.view.clearLowQualityPreview();
}
if (this._currentFrames[1].spriteUrl !== config[1].spriteUrl) {
this.view.clearHighQualityPreview();
}
}
this.view.setLowQualityPreview(config[0]);
this.view.setHighQualityPreview(config[1]);
this._currentFrames = config;
}
setTime(time: string) {
this.view.setTime(time);
}
destroy(): void {
this.view.destroy();
}
}