UNPKG

inferno-youtube

Version:

inferno.js powered YouTube player component

3 lines (2 loc) 6.09 kB
'use strict';function _interopDefault(a){return a&&"object"==typeof a&&"default"in a?a["default"]:a}var _classCallCheck=_interopDefault(require("@babel/runtime/helpers/classCallCheck")),_createClass=_interopDefault(require("@babel/runtime/helpers/createClass")),_assertThisInitialized=_interopDefault(require("@babel/runtime/helpers/assertThisInitialized")),_inherits=_interopDefault(require("@babel/runtime/helpers/inherits")),_possibleConstructorReturn=_interopDefault(require("@babel/runtime/helpers/possibleConstructorReturn")),_getPrototypeOf=_interopDefault(require("@babel/runtime/helpers/getPrototypeOf")),_defineProperty=_interopDefault(require("@babel/runtime/helpers/defineProperty")),inferno=require("inferno");function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}var youTubePlayer=require("youtube-player"),isEqual=require("fast-deep-equal");function shouldUpdateVideo(a,b){if(a.videoId!==b.videoId)return!0;var c=a.opts.playerVars||{},d=b.opts.playerVars||{};return c.start!==d.start||c.end!==d.end}function filterResetOptions(a){return _objectSpread(_objectSpread({},a),{},{playerVars:_objectSpread(_objectSpread({},a.playerVars),{},{autoplay:0,start:0,end:0})})}function shouldResetPlayer(a,b){return!isEqual(filterResetOptions(a.opts),filterResetOptions(b.opts))}function shouldUpdatePlayer(a,b){return a.id===b.id||a.className===b.className}var YouTube=function(a){function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),_defineProperty(_assertThisInitialized(d),"onPlayerReady",function(a){return d.props.onReady(a)}),_defineProperty(_assertThisInitialized(d),"onPlayerError",function(a){return d.props.onError(a)}),_defineProperty(_assertThisInitialized(d),"onPlayerStateChange",function(a){switch(d.props.onStateChange(a),a.data){case b.PlayerState.ENDED:d.props.onEnd(a);break;case b.PlayerState.PLAYING:d.props.onPlay(a);break;case b.PlayerState.PAUSED:d.props.onPause(a);}}),_defineProperty(_assertThisInitialized(d),"onPlayerPlaybackRateChange",function(a){return d.props.onPlaybackRateChange(a)}),_defineProperty(_assertThisInitialized(d),"onPlayerPlaybackQualityChange",function(a){return d.props.onPlaybackQualityChange(a)}),_defineProperty(_assertThisInitialized(d),"createPlayer",function(){if("undefined"!=typeof document){var a=_objectSpread(_objectSpread({},d.props.opts),{},{videoId:d.props.videoId});d.internalPlayer=youTubePlayer(d.container,a),d.internalPlayer.on("ready",d.onPlayerReady),d.internalPlayer.on("error",d.onPlayerError),d.internalPlayer.on("stateChange",d.onPlayerStateChange),d.internalPlayer.on("playbackRateChange",d.onPlayerPlaybackRateChange),d.internalPlayer.on("playbackQualityChange",d.onPlayerPlaybackQualityChange)}}),_defineProperty(_assertThisInitialized(d),"resetPlayer",function(){return d.internalPlayer.destroy().then(d.createPlayer)}),_defineProperty(_assertThisInitialized(d),"updatePlayer",function(){d.internalPlayer.getIframe().then(function(a){d.props.id?a.setAttribute("id",d.props.id):a.removeAttribute("id"),d.props.className?a.setAttribute("class",d.props.className):a.removeAttribute("class")})}),_defineProperty(_assertThisInitialized(d),"updateVideo",function(){if("undefined"==typeof d.props.videoId||null===d.props.videoId)return void d.internalPlayer.stopVideo();var a=!1,b={videoId:d.props.videoId};return"playerVars"in d.props.opts&&(a=1===d.props.opts.playerVars.autoplay,"start"in d.props.opts.playerVars&&(b.startSeconds=d.props.opts.playerVars.start),"end"in d.props.opts.playerVars&&(b.endSeconds=d.props.opts.playerVars.end)),a?void d.internalPlayer.loadVideoById(b):void d.internalPlayer.cueVideoById(b)}),_defineProperty(_assertThisInitialized(d),"refContainer",function(a){d.container=a}),d.container=null,d.internalPlayer=null,d}_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"componentDidMount",value:function(){this.createPlayer()}},{key:"componentDidUpdate",value:function(a){shouldUpdatePlayer(a,this.props)&&this.updatePlayer(),shouldResetPlayer(a,this.props)&&this.resetPlayer(),shouldUpdateVideo(a,this.props)&&this.updateVideo()}},{key:"componentWillUnmount",value:function(){this.internalPlayer.destroy()}},{key:"render",value:function(){return this.props.containerClassName||this.props.children?inferno.createVNode(1,"div",this.props.containerClassName,[inferno.createVNode(1,"div",this.props.className,null,1,{id:this.props.id},null,this.refContainer),this.props.children],0):inferno.createVNode(1,"div",this.props.className,null,1,{id:this.props.id},null,this.refContainer)}}]),b}(inferno.Component);_defineProperty(YouTube,"defaultProps",{id:null,className:null,opts:{},containerClassName:"",onReady:function(){},onError:function(){},onPlay:function(){},onPause:function(){},onEnd:function(){},onStateChange:function(){},onPlaybackRateChange:function(){},onPlaybackQualityChange:function(){}}),_defineProperty(YouTube,"PlayerState",{UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5}),module.exports=YouTube; //# sourceMappingURL=index.cjs.min.js.map