diff --git a/bower.json b/bower.json index 91a5527..936c70e 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "react-video", - "version": "1.2.0", + "version": "1.3.0", "description": "React component to load video from Vimeo or Youtube across any device", "homepage": "https://github.com/pedronauck/react-video", "authors": [ diff --git a/dist/react-video.css b/dist/react-video.css index f277c34..c3bf3e4 100644 --- a/dist/react-video.css +++ b/dist/react-video.css @@ -1,6 +1,6 @@ /* * React Video - React component to load video from Vimeo or Youtube across any device - * @version v1.2.0 + * @version v1.3.0 * @link https://github.com/pedronauck/react-video * @license MIT * @author Pedro Nauck (https://github.com/pedronauck) diff --git a/dist/react-video.js b/dist/react-video.js index 340e374..8d8df25 100644 --- a/dist/react-video.js +++ b/dist/react-video.js @@ -1,6 +1,6 @@ /* * React Video - React component to load video from Vimeo or Youtube across any device - * @version v1.2.0 + * @version v1.3.0 * @link https://github.com/pedronauck/react-video * @license MIT * @author Pedro Nauck (https://github.com/pedronauck) @@ -71,7 +71,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = React.createClass({ displayName: 'Video', propTypes: { - from: React.PropTypes.oneOf(['youtube', 'vimeo']).isRequired, + from: React.PropTypes.oneOf(['youtube', 'vimeo']), videoId: React.PropTypes.string.isRequired }, getDefaultProps:function() { @@ -86,9 +86,15 @@ return /******/ (function(modules) { // webpackBootstrap showingVideo: false }; }, + isYoutube:function() { + return this.props.from === 'youtube' || isNaN(this.props.id); + }, + isVimeo:function() { + return this.props.from === 'vimeo' || !isNaN(this.props.id); + }, componentDidMount:function() { - this.props.from === 'youtube' && this.fetchYoutubeData(); - this.props.from === 'vimeo' && this.fetchVimeoData(); + this.isYoutube() && this.fetchYoutubeData(); + this.isVimeo() && this.fetchVimeoData(); }, render:function() { return ( @@ -132,10 +138,10 @@ return /******/ (function(modules) { // webpackBootstrap ev.preventDefault(); }, getIframeUrl:function() { - if (this.props.from === 'youtube') { + if (this.isYoutube()) { return ("//youtube.com/embed/" + this.props.videoId + "?autoplay=1") } - else if (this.props.from === 'vimeo') { + else if (this.isVimeo()) { return ("//player.vimeo.com/video/" + this.props.videoId + "?autoplay=1") } }, diff --git a/dist/react-video.min.css b/dist/react-video.min.css index ec2ee29..d349cb2 100644 --- a/dist/react-video.min.css +++ b/dist/react-video.min.css @@ -1,6 +1,6 @@ /* * React Video - React component to load video from Vimeo or Youtube across any device - * @version v1.2.0 + * @version v1.3.0 * @link https://github.com/pedronauck/react-video * @license MIT * @author Pedro Nauck (https://github.com/pedronauck) diff --git a/dist/react-video.min.js b/dist/react-video.min.js index 6bff1c6..5602784 100644 --- a/dist/react-video.min.js +++ b/dist/react-video.min.js @@ -1,8 +1,8 @@ /* * React Video - React component to load video from Vimeo or Youtube across any device - * @version v1.2.0 + * @version v1.3.0 * @link https://github.com/pedronauck/react-video * @license MIT * @author Pedro Nauck (https://github.com/pedronauck) */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactVideo=t(require("react")):e.ReactVideo=t(e.React)}(this,function(e){return function(e){function t(r){if(o[r])return o[r].exports;var i=o[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){var r=o(1),i=(o(2),o(3)),n=o(4),s=o(5);e.exports=r.createClass({displayName:"Video",propTypes:{from:r.PropTypes.oneOf(["youtube","vimeo"]).isRequired,videoId:r.PropTypes.string.isRequired},getDefaultProps:function(){return{className:"video"}},getInitialState:function(){return{thumb:null,imageLoaded:!1,showingVideo:!1}},componentDidMount:function(){"youtube"===this.props.from&&this.fetchYoutubeData(),"vimeo"===this.props.from&&this.fetchVimeoData()},render:function(){return r.DOM.div({className:this.props.className},!this.state.imageLoaded&&s(null),this.renderImage(),this.renderIframe())},renderImage:function(){var e={backgroundImage:"url("+this.state.thumb+")"};return this.state.imageLoaded&&!this.state.showingVideo?r.DOM.div({className:"video-image",style:e},n({onClick:this.playVideo})):void 0},renderIframe:function(){var e={display:this.state.showingVideo?"block":"none",width:"100%",height:"100%"};return this.state.showingVideo?r.DOM.div({className:"video-embed",style:e},r.DOM.iframe({frameborder:"0",src:this.getIframeUrl()})):void 0},playVideo:function(e){this.setState({showingVideo:!0}),e.preventDefault()},getIframeUrl:function(){return"youtube"===this.props.from?"//youtube.com/embed/"+this.props.videoId+"?autoplay=1":"vimeo"===this.props.from?"//player.vimeo.com/video/"+this.props.videoId+"?autoplay=1":void 0},fetchYoutubeData:function(){var e=this.props.videoId,t="//gdata.youtube.com/feeds/api/videos/"+e+"?v=2&alt=json";i.get(t,function(e,t){var o=t.entry.media$group.media$thumbnail,r=o.sort(function(e,t){return t.width-e.width})[0].url;this.setState({thumb:r,imageLoaded:!0})}.bind(this))},fetchVimeoData:function(){var e=this.props.videoId,t="//vimeo.com/api/v2/video/"+e+".json";i.get(t,function(e,t){this.setState({thumb:t[0].thumbnail_large,imageLoaded:!0})}.bind(this))}})},function(t){t.exports=e},function(e){e.exports=function(e){return"object"!=typeof e?Array.prototype.join.call(arguments," "):Object.keys(e).filter(function(t){return e[t]}).join(" ")}},function(e){var t=function(e,t){var o=!1,r=function(){t(null,JSON.parse(o.responseText))},i=function(){4===o.readyState&&(200===o.status?t(null,JSON.parse(o.responseText)):t({error:"Sorry, an error ocurred on the server"},null))},n=function(){t({error:"Problem with your internet conection"},null)};try{o=new XDomainRequest,o.onload=r}catch(s){o=new XMLHttpRequest,o.onreadystatechange=i}o.onerror=n,o.open("GET",e,!0),o.send()};e.exports={get:t}},function(e,t,o){var r=o(1);e.exports=r.createClass({displayName:"exports",propTypes:{onClick:r.PropTypes.func},render:function(){return r.DOM.button({type:"button",className:"video-play-button",onClick:this.props.onClick},r.DOM.svg({xmlns:"http://www.w3.org/2000/svg",version:"1.1",viewBox:"0 0 100 100"},r.DOM.path({d:"M79.674,53.719c2.59-2.046,2.59-5.392,0-7.437L22.566,1.053C19.977-0.993,18,0.035,18,3.335v93.331c0,3.3,1.977,4.326,4.566,2.281L79.674,53.719z"})))}})},function(e,t,o){var r=o(1);e.exports=r.createClass({displayName:"exports",render:function(){return r.DOM.div({className:"video-loading"},r.DOM.svg({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",width:"32",height:"32"},r.DOM.path({opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"}),r.DOM.path({d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"})))}})}])}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.ReactVideo=t(require("react")):e.ReactVideo=t(e.React)}(this,function(e){return function(e){function t(i){if(o[i])return o[i].exports;var r=o[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){var i=o(1),r=(o(2),o(3)),n=o(4),s=o(5);e.exports=i.createClass({displayName:"Video",propTypes:{from:i.PropTypes.oneOf(["youtube","vimeo"]),videoId:i.PropTypes.string.isRequired},getDefaultProps:function(){return{className:"video"}},getInitialState:function(){return{thumb:null,imageLoaded:!1,showingVideo:!1}},isYoutube:function(){return"youtube"===this.props.from||isNaN(this.props.id)},isVimeo:function(){return"vimeo"===this.props.from||!isNaN(this.props.id)},componentDidMount:function(){this.isYoutube()&&this.fetchYoutubeData(),this.isVimeo()&&this.fetchVimeoData()},render:function(){return i.DOM.div({className:this.props.className},!this.state.imageLoaded&&s(null),this.renderImage(),this.renderIframe())},renderImage:function(){var e={backgroundImage:"url("+this.state.thumb+")"};return this.state.imageLoaded&&!this.state.showingVideo?i.DOM.div({className:"video-image",style:e},n({onClick:this.playVideo})):void 0},renderIframe:function(){var e={display:this.state.showingVideo?"block":"none",width:"100%",height:"100%"};return this.state.showingVideo?i.DOM.div({className:"video-embed",style:e},i.DOM.iframe({frameborder:"0",src:this.getIframeUrl()})):void 0},playVideo:function(e){this.setState({showingVideo:!0}),e.preventDefault()},getIframeUrl:function(){return this.isYoutube()?"//youtube.com/embed/"+this.props.videoId+"?autoplay=1":this.isVimeo()?"//player.vimeo.com/video/"+this.props.videoId+"?autoplay=1":void 0},fetchYoutubeData:function(){var e=this.props.videoId,t="//gdata.youtube.com/feeds/api/videos/"+e+"?v=2&alt=json";r.get(t,function(e,t){var o=t.entry.media$group.media$thumbnail,i=o.sort(function(e,t){return t.width-e.width})[0].url;this.setState({thumb:i,imageLoaded:!0})}.bind(this))},fetchVimeoData:function(){var e=this.props.videoId,t="//vimeo.com/api/v2/video/"+e+".json";r.get(t,function(e,t){this.setState({thumb:t[0].thumbnail_large,imageLoaded:!0})}.bind(this))}})},function(t){t.exports=e},function(e){e.exports=function(e){return"object"!=typeof e?Array.prototype.join.call(arguments," "):Object.keys(e).filter(function(t){return e[t]}).join(" ")}},function(e){var t=function(e,t){var o=!1,i=function(){t(null,JSON.parse(o.responseText))},r=function(){4===o.readyState&&(200===o.status?t(null,JSON.parse(o.responseText)):t({error:"Sorry, an error ocurred on the server"},null))},n=function(){t({error:"Problem with your internet conection"},null)};try{o=new XDomainRequest,o.onload=i}catch(s){o=new XMLHttpRequest,o.onreadystatechange=r}o.onerror=n,o.open("GET",e,!0),o.send()};e.exports={get:t}},function(e,t,o){var i=o(1);e.exports=i.createClass({displayName:"exports",propTypes:{onClick:i.PropTypes.func},render:function(){return i.DOM.button({type:"button",className:"video-play-button",onClick:this.props.onClick},i.DOM.svg({xmlns:"http://www.w3.org/2000/svg",version:"1.1",viewBox:"0 0 100 100"},i.DOM.path({d:"M79.674,53.719c2.59-2.046,2.59-5.392,0-7.437L22.566,1.053C19.977-0.993,18,0.035,18,3.335v93.331c0,3.3,1.977,4.326,4.566,2.281L79.674,53.719z"})))}})},function(e,t,o){var i=o(1);e.exports=i.createClass({displayName:"exports",render:function(){return i.DOM.div({className:"video-loading"},i.DOM.svg({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",width:"32",height:"32"},i.DOM.path({opacity:".25",d:"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"}),i.DOM.path({d:"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z"})))}})}])}); \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index b03a31a..3933acd 100644 --- a/docs/index.html +++ b/docs/index.html @@ -24,7 +24,7 @@