@braineet/ui
Version:
Braineet design system
86 lines • 2.69 kB
JavaScript
var youtubeParser = function youtubeParser(url) {
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
var match = url.match(regExp);
return match && match[7].length === 11 ? match[7] : false;
};
var vimeoParser = function vimeoParser(url) {
var vimeoRegex = /(?:vimeo)\.com.*(?:videos|video|channels|)\/([\d]+)/i;
var parsed = url.match(vimeoRegex);
return parsed && parsed.length > 1 ? "https://player.vimeo.com/video/" + parsed[1] : false;
};
var getEmbedUrlAndDisplay = function getEmbedUrlAndDisplay(url, fileType, mode) {
if (url.match(/\.(pdf|txt|rtf|xml)$/) != null || fileType === 'pdf' || fileType === 'text' || fileType === 'xml' || fileType === 'iframe') {
return {
url: url,
type: 'iframe',
iconModal: 'file_full',
canDownload: false,
canOpen: true,
fileType: fileType
};
}
if (url.match(/\.(jpg|jpeg|gif|png|tiff|bmp)$/) != null || fileType === 'image') {
return {
url: url,
type: 'image',
canDownload: false,
canOpen: true,
iconModal: 'camera',
fileType: 'image'
};
}
if (url.match(/\.(ogg|oga|wma|mp3)$/) != null || fileType === 'audio') {
return {
url: url,
type: 'audio',
canDownload: false,
canOpen: true,
iconModal: 'media',
fileType: 'video'
};
}
if (url.match(/\.(mp4|webm|ogv)$/) != null || fileType === 'video') {
return {
url: url,
type: 'video',
canDownload: false,
canOpen: true,
iconModal: 'media',
fileType: 'video'
};
}
if (url.match(/\.(xlsx|xls|odp|ods|odt|odg|pptx|ppt|ppsx|doc|docx)$/) != null || fileType === 'excel' || fileType === 'openoffice_impress' || fileType === 'openoffice_calc' || fileType === 'openoffice_writer' || fileType === 'openoffice_draw' || fileType === 'powerpoint' || fileType === 'word') {
return {
url: "https://view.officeapps.live.com/op/" + mode + ".aspx?src=" + encodeURIComponent(url),
type: 'iframe',
canDownload: true,
canOpen: false,
iconModal: 'file_full',
fileType: fileType
};
}
var embedYoutubeCode = youtubeParser(url);
if (embedYoutubeCode) {
return {
url: "https://www.youtube.com/embed/" + embedYoutubeCode,
type: 'iframe',
canDownload: false,
canOpen: true,
iconModal: 'media',
fileType: 'video'
};
}
var embedVimeo = vimeoParser(url);
if (embedVimeo) {
return {
url: embedVimeo,
type: 'iframe',
canDownload: false,
canOpen: true,
iconModal: 'media',
fileType: 'video'
};
}
return false;
};
export default getEmbedUrlAndDisplay;