@paperbits/core
Version:
Paperbits core components.
44 lines (36 loc) • 2.45 kB
text/typescript
import * as MediaUtils from "@paperbits/common/media/mediaUtils";
import { IContentDropHandler, IContentDescriptor, IDataTransfer, IWidgetHandler } from "@paperbits/common/editing";
import { VideoPlayerModel } from "./videoPlayerModel";
export class VideoPlayerHandlers implements IWidgetHandler<VideoPlayerModel>, IContentDropHandler {
public static DefaultThumbnailUri = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjQ4cHgiIGhlaWdodD0iNDhweCIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48ZyAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC41LCAwLjUpIj4KPHJlY3QgeD0iMiIgeT0iNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNDQ0NDQ0IiBzdHJva2Utd2lkdGg9IjMiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiIHN0cm9rZS1taXRlcmxpbWl0PSIxMCIgd2lkdGg9IjQ0IiBoZWlnaHQ9IjQwIiBzdHJva2UtbGluZWpvaW49Im1pdGVyIi8+Cjxwb2x5Z29uIGRhdGEtY29sb3I9ImNvbG9yLTIiIGZpbGw9Im5vbmUiIHN0cm9rZT0iIzQ0NDQ0NCIgc3Ryb2tlLXdpZHRoPSIzIiBzdHJva2UtbGluZWNhcD0ic3F1YXJlIiBzdHJva2UtbWl0ZXJsaW1pdD0iMTAiIHBvaW50cz0iJiMxMDsmIzk7MTcsMTQgMzMsMjQgMTcsMzQgIiBzdHJva2UtbGluZWpvaW49Im1pdGVyIi8+CjwvZz48L3N2Zz4=";
public async getWidgetModel(): Promise<VideoPlayerModel> {
return new VideoPlayerModel();
}
protected matches(filename: string): boolean {
if (filename && ![".webm", ".mp4", ".m4v", ".ogg", ".ogv", ".ogx", ".ogm"].some(e => filename.endsWith(e))) {
return false;
}
return true;
}
public getContentDescriptorFromDataTransfer(dataTransfer: IDataTransfer): IContentDescriptor {
if (!this.matches(dataTransfer.name)) {
return null;
}
const source: any = dataTransfer.source;
const getThumbnailPromise = async (): Promise<string> => {
if (dataTransfer.source instanceof File || dataTransfer.source.constructor["name"] === "File") {
return await MediaUtils.getVideoThumbnailAsDataUrl(<any>source);
}
return <string>dataTransfer.source;
};
const descriptor: IContentDescriptor = {
title: "Video recording",
description: dataTransfer.name,
iconUrl: VideoPlayerHandlers.DefaultThumbnailUri,
getPreviewUrl: getThumbnailPromise,
getThumbnailUrl: getThumbnailPromise,
uploadables: [source]
};
return descriptor;
}
}