draftjs-md-converter-support-video
Version:
Converter for converting Draft.js state into Markdown and vice versa
57 lines (46 loc) • 1.53 kB
JavaScript
const vimReg = /(http|https)?:\/\/(www\.|player\.)?vimeo\.com\/(?:channels\/(?:\w+\/)?|groups\/([^\/]*)\/videos\/|video\/|)(\d+)(?:|\/\?)/;
const ytReg = /(?:https?:\/\/)?(?:www\.)?youtu\.?be(?:\.com)?\/?.*(?:watch|embed)?(?:.*v=|v\/|\/)([\w\-_]+)\&?/;
function getEmbedProviderUrl(provider) {
if (provider === 'youtube') return 'https://www.youtube.com/embed/';
if (provider === 'vimeo') return 'https://player.vimeo.com/video/';
return null;
}
function getEmbedProvider(string) {
if (ytReg.test(string)) return 'youtube';
if (vimReg.test(string)) return 'vimeo';
return null;
}
function getId(url, provider) {
const regExp = provider === 'youtube' ? ytReg : vimReg;
const match = url.match(regExp);
if (provider === 'youtube') {
if (match && match[1].length === 11) {
return match[1];
}
}
if (provider === 'vimeo') {
if (match && match[4].length <= 10) {
return match[4];
}
}
return 'error';
}
function buildEmbeddedUrl(string) {
const provider = getEmbedProvider(string);
const regExp = provider === 'youtube' ? ytReg : vimReg;
const userUrl = string.match(regExp)[0];
const id = getId(userUrl, provider);
return `${getEmbedProviderUrl(provider)}${id}`;
}
function testEmbed(string) {
const provider = getEmbedProvider(string);
const regExp = provider === 'youtube' ? ytReg : vimReg;
return regExp.test(string);
}
module.exports = {
buildEmbeddedUrl,
getEmbedProvider,
getId,
testEmbed
};
// module.exports.buildEmbeddedUrl = buildEmbeddedUrl;