UNPKG

@braineet/ui

Version:

Braineet design system

86 lines 2.69 kB
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;