From 662082a2f2edc863e8ca9cefdd7a3c88ad49ea0d Mon Sep 17 00:00:00 2001 From: Pete Cook Date: Tue, 7 Mar 2023 13:15:42 +0000 Subject: [PATCH] 2.12.0 --- CHANGELOG.md | 10 ++++++++++ dist/ReactPlayer.js | 2 +- dist/ReactPlayer.js.map | 2 +- dist/ReactPlayer.standalone.es6.js | 21 ++++++++++----------- dist/ReactPlayer.standalone.js | 21 ++++++++++----------- dist/ReactPlayer.standalone.js.map | 2 +- package.json | 4 ++-- 7 files changed, 35 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cd438f0..dee31bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,18 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v2.12.0](https://github.com/cookpete/react-player/compare/v2.11.2...v2.12.0) + +- Added Vimeo Muteability [`#1588`](https://github.com/cookpete/react-player/pull/1588) +- Add forceSafariHLS option for FilePlayer [`#1560`](https://github.com/cookpete/react-player/pull/1560) +- fix: standalone has side effects [`#1586`](https://github.com/cookpete/react-player/pull/1586) +- Update DASH example [`#1589`](https://github.com/cookpete/react-player/issues/1589) +- Support live youtube URLs [`#1580`](https://github.com/cookpete/react-player/issues/1580) + #### [v2.11.2](https://github.com/cookpete/react-player/compare/v2.11.1...v2.11.2) +> 10 February 2023 + - Remove module property from package.json [`#1574`](https://github.com/cookpete/react-player/issues/1574) #### [v2.11.1](https://github.com/cookpete/react-player/compare/v2.11.0...v2.11.1) diff --git a/dist/ReactPlayer.js b/dist/ReactPlayer.js index 075b0e1b..ef632eb5 100644 --- a/dist/ReactPlayer.js +++ b/dist/ReactPlayer.js @@ -1,2 +1,2 @@ -var ReactPlayer=function(e){function t(t){for(var n,o,a=t[0],i=t[1],u=0,c=[];ue.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:o.a,i=b(t);return i&&r(i)?Promise.resolve(i):new Promise((function(r,o){if(m[e])m[e].push({resolve:r,reject:o});else{m[e]=[{resolve:r,reject:o}];var i=function(t){m[e].forEach((function(e){return e.resolve(t)}))};if(n){var u=window[n];window[n]=function(){u&&u(),i(b(t))}}a(e,(function(r){r?(m[e].forEach((function(e){return e.reject(r)})),m[e]=null):n||i(b(t))}))}}))}function g(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o1?r-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:document.createElement("video"),t=!1===/iPhone|iPod/.test(navigator.userAgent);return e.webkitSupportsPresentationMode&&"function"==typeof e.webkitSetPresentationMode&&t}},function(e,t,n){"use strict";n.d(t,"l",(function(){return i})),n.d(t,"g",(function(){return f})),n.d(t,"k",(function(){return p})),n.d(t,"i",(function(){return y})),n.d(t,"h",(function(){return d})),n.d(t,"e",(function(){return h})),n.d(t,"f",(function(){return b})),n.d(t,"j",(function(){return m})),n.d(t,"a",(function(){return g})),n.d(t,"d",(function(){return O})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return k})),n.d(t,"m",(function(){return j}));var r=n(1);function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:"player";return n.player?n.player.getInternalPlayer(e):null})),E(j(n),"seekTo",(function(e,t){if(!n.player)return null;n.player.seekTo(e,t)})),E(j(n),"handleReady",(function(){n.props.onReady(j(n))})),E(j(n),"getActivePlayer",Object(u.a)((function(n){for(var r=0,o=[].concat(I,m(e));r0&&e<1){var r=this.player.getDuration();return r?void this.player.seekTo(r*e):void console.warn("ReactPlayer: could not seek using fraction – duration not yet available")}this.player.seekTo(e)}else 0!==e&&(this.seekOnPlay=e,setTimeout((function(){n.seekOnPlay=null}),5e3))}},{key:"render",value:function(){var e=this.props.activePlayer;return e?o.a.createElement(e,s({},this.props,{onMount:this.handlePlayerMount,onReady:this.handleReady,onPlay:this.handlePlay,onPause:this.handlePause,onEnded:this.handleEnded,onLoaded:this.handleLoaded,onError:this.handleError})):null}}])&&p(t.prototype,n),r&&p(t,r),u}(r.Component);v(g,"displayName","Player"),v(g,"propTypes",u.b),v(g,"defaultProps",u.a)},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r=n(13);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return m}));var r=n(0),o=n.n(r);function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1,g=m&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||v)&&!window.MSStream,P=/www\.dropbox\.com\/.+/,O=/https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/,w=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(y,e);var t,n,r,u=p(y);function y(){var e;c(this,y);for(var t=arguments.length,n=new Array(t),r=0;r0?n.end(n.length-1):t}},{key:"getCurrentTime",value:function(){return this.player?this.player.currentTime:null}},{key:"getSecondsLoaded",value:function(){if(!this.player)return null;var e=this.player.buffered;if(0===e.length)return 0;var t=e.end(e.length-1),n=this.getDuration();return t>n?n:t}},{key:"getSource",value:function(e){var t=this.shouldUseHLS(e),n=this.shouldUseDASH(e),r=this.shouldUseFLV(e);if(!(e instanceof Array||Object(a.d)(e)||t||n||r))return P.test(e)?e.replace("www.dropbox.com","dl.dropboxusercontent.com"):e}},{key:"render",value:function(){var e=this.props,t=e.url,n=e.playing,r=e.loop,a=e.controls,i=e.muted,u=e.config,c=e.width,s=e.height,f=this.shouldUseAudio(this.props)?"audio":"video",p={width:"auto"===c?c:"100%",height:"auto"===s?s:"100%"};return o.a.createElement(f,l({ref:this.ref,src:this.getSource(t),style:p,preload:"auto",autoPlay:n||void 0,controls:a,muted:i,loop:r},u.attributes),t instanceof Array&&t.map(this.renderSourceElement),u.tracks.map(this.renderTrack))}}])&&s(t.prototype,n),r&&s(t,r),y}(r.Component);b(w,"displayName","FilePlayer"),b(w,"canPlay",i.m.file)}]).default; +var ReactPlayer=function(e){function t(t){for(var n,o,a=t[0],i=t[1],u=0,c=[];ue.length)&&(t=e.length);for(var n=0,r=new Array(t);n2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){return!0},a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:o.a,i=b(t);return i&&r(i)?Promise.resolve(i):new Promise((function(r,o){if(m[e])m[e].push({resolve:r,reject:o});else{m[e]=[{resolve:r,reject:o}];var i=function(t){m[e].forEach((function(e){return e.resolve(t)}))};if(n){var u=window[n];window[n]=function(){u&&u(),i(b(t))}}a(e,(function(r){r?(m[e].forEach((function(e){return e.reject(r)})),m[e]=null):n||i(b(t))}))}}))}function g(e){for(var t,n=arguments.length,r=new Array(n>1?n-1:0),o=1;o1?r-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:document.createElement("video"),t=!1===/iPhone|iPod/.test(navigator.userAgent);return e.webkitSupportsPresentationMode&&"function"==typeof e.webkitSetPresentationMode&&t}},function(e,t,n){"use strict";n.d(t,"l",(function(){return i})),n.d(t,"g",(function(){return f})),n.d(t,"k",(function(){return p})),n.d(t,"i",(function(){return y})),n.d(t,"h",(function(){return d})),n.d(t,"e",(function(){return h})),n.d(t,"f",(function(){return b})),n.d(t,"j",(function(){return m})),n.d(t,"a",(function(){return g})),n.d(t,"d",(function(){return O})),n.d(t,"b",(function(){return w})),n.d(t,"c",(function(){return k})),n.d(t,"m",(function(){return j}));var r=n(1);function o(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw i}}}}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:"player";return n.player?n.player.getInternalPlayer(e):null})),E(j(n),"seekTo",(function(e,t){if(!n.player)return null;n.player.seekTo(e,t)})),E(j(n),"handleReady",(function(){n.props.onReady(j(n))})),E(j(n),"getActivePlayer",Object(u.a)((function(n){for(var r=0,o=[].concat(I,m(e));r0&&e<1){var r=this.player.getDuration();return r?void this.player.seekTo(r*e):void console.warn("ReactPlayer: could not seek using fraction – duration not yet available")}this.player.seekTo(e)}else 0!==e&&(this.seekOnPlay=e,setTimeout((function(){n.seekOnPlay=null}),5e3))}},{key:"render",value:function(){var e=this.props.activePlayer;return e?o.a.createElement(e,s({},this.props,{onMount:this.handlePlayerMount,onReady:this.handleReady,onPlay:this.handlePlay,onPause:this.handlePause,onEnded:this.handleEnded,onLoaded:this.handleLoaded,onError:this.handleError})):null}}])&&p(t.prototype,n),r&&p(t,r),u}(r.Component);v(g,"displayName","Player"),v(g,"propTypes",u.b),v(g,"defaultProps",u.a)},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r=n(13);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var u=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw u.name="Invariant Violation",u}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},function(e,t,n){"use strict";n.r(t),n.d(t,"default",(function(){return m}));var r=n(0),o=n.n(r);function a(e){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function u(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n1,g=m&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||v)&&!window.MSStream,P=m&&/^((?!chrome|android).)*safari/i.test(navigator.userAgent)&&!window.MSStream,O=/www\.dropbox\.com\/.+/,w=/https:\/\/watch\.cloudflarestream\.com\/([a-z0-9]+)/,k=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&f(e,t)}(y,e);var t,n,r,u=p(y);function y(){var e;c(this,y);for(var t=arguments.length,n=new Array(t),r=0;r0?n.end(n.length-1):t}},{key:"getCurrentTime",value:function(){return this.player?this.player.currentTime:null}},{key:"getSecondsLoaded",value:function(){if(!this.player)return null;var e=this.player.buffered;if(0===e.length)return 0;var t=e.end(e.length-1),n=this.getDuration();return t>n?n:t}},{key:"getSource",value:function(e){var t=this.shouldUseHLS(e),n=this.shouldUseDASH(e),r=this.shouldUseFLV(e);if(!(e instanceof Array||Object(a.d)(e)||t||n||r))return O.test(e)?e.replace("www.dropbox.com","dl.dropboxusercontent.com"):e}},{key:"render",value:function(){var e=this.props,t=e.url,n=e.playing,r=e.loop,a=e.controls,i=e.muted,u=e.config,c=e.width,s=e.height,f=this.shouldUseAudio(this.props)?"audio":"video",p={width:"auto"===c?c:"100%",height:"auto"===s?s:"100%"};return o.a.createElement(f,l({ref:this.ref,src:this.getSource(t),style:p,preload:"auto",autoPlay:n||void 0,controls:a,muted:i,loop:r},u.attributes),t instanceof Array&&t.map(this.renderSourceElement),u.tracks.map(this.renderTrack))}}])&&s(t.prototype,n),r&&s(t,r),y}(r.Component);b(k,"displayName","FilePlayer"),b(k,"canPlay",i.m.file)}]).default; //# sourceMappingURL=ReactPlayer.js.map \ No newline at end of file diff --git a/dist/ReactPlayer.js.map b/dist/ReactPlayer.js.map index 75b033d2..8b151b8a 100644 --- a/dist/ReactPlayer.js.map +++ b/dist/ReactPlayer.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://ReactPlayer/webpack/bootstrap","webpack://ReactPlayer/external \"React\"","webpack://ReactPlayer/./src/utils.js","webpack://ReactPlayer/./src/patterns.js","webpack://ReactPlayer/./node_modules/prop-types/index.js","webpack://ReactPlayer/./src/props.js","webpack://ReactPlayer/./node_modules/react-fast-compare/index.js","webpack://ReactPlayer/./node_modules/deepmerge/dist/cjs.js","webpack://ReactPlayer/./node_modules/memoize-one/dist/memoize-one.esm.js","webpack://ReactPlayer/./node_modules/load-script/index.js","webpack://ReactPlayer/./src/ReactPlayer.js","webpack://ReactPlayer/./src/Player.js","webpack://ReactPlayer/(webpack)/buildin/global.js","webpack://ReactPlayer/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://ReactPlayer/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://ReactPlayer/./src/Preview.js","webpack://ReactPlayer/./src/players/index.js","webpack://ReactPlayer/./src/index.js","webpack://ReactPlayer/./src/players/YouTube.js","webpack://ReactPlayer/./src/players/SoundCloud.js","webpack://ReactPlayer/./src/players/Vimeo.js","webpack://ReactPlayer/./src/players/Facebook.js","webpack://ReactPlayer/./src/players/Streamable.js","webpack://ReactPlayer/./src/players/Wistia.js","webpack://ReactPlayer/./src/players/Twitch.js","webpack://ReactPlayer/./src/players/DailyMotion.js","webpack://ReactPlayer/./src/players/Mixcloud.js","webpack://ReactPlayer/./src/players/Vidyard.js","webpack://ReactPlayer/./src/players/Kaltura.js","webpack://ReactPlayer/./src/players/FilePlayer.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","installedModules","0","__webpack_require__","exports","module","l","e","Promise","resolve","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","oe","err","console","error","jsonpArray","window","oldJsonpFunction","slice","s","React","MATCH_START_QUERY","MATCH_END_QUERY","MATCH_START_STAMP","MATCH_NUMERIC","parseTimeParam","url","pattern","Array","match","stamp","seconds","array","exec","count","period","parseInt","parseTimeString","test","parseStartTime","parseEndTime","randomString","Math","random","toString","substr","queryString","keys","map","join","getGlobal","requests","getSDK","sdkGlobal","sdkReady","isLoaded","fetchScript","loadScript","existingGlobal","reject","onLoaded","sdk","forEach","request","previousOnReady","omit","arrays","omitKeys","concat","output","indexOf","callPlayer","method","this","player","message","constructor","displayName","warn","args","isMediaStream","MediaStream","isBlobUrl","supportsWebKitPresentationMode","video","document","createElement","notMobile","navigator","userAgent","webkitSupportsPresentationMode","webkitSetPresentationMode","MATCH_URL_YOUTUBE","MATCH_URL_SOUNDCLOUD","MATCH_URL_VIMEO","MATCH_URL_FACEBOOK","MATCH_URL_FACEBOOK_WATCH","MATCH_URL_STREAMABLE","MATCH_URL_WISTIA","MATCH_URL_TWITCH_VIDEO","MATCH_URL_TWITCH_CHANNEL","MATCH_URL_DAILYMOTION","MATCH_URL_MIXCLOUD","MATCH_URL_VIDYARD","MATCH_URL_KALTURA","AUDIO_EXTENSIONS","VIDEO_EXTENSIONS","HLS_EXTENSIONS","DASH_EXTENSIONS","FLV_EXTENSIONS","canPlay","youtube","every","item","soundcloud","vimeo","facebook","streamable","wistia","twitch","dailymotion","mixcloud","vidyard","kaltura","file","canPlayFile","src","require","string","PropTypes","bool","number","oneOfType","shape","func","node","propTypes","playing","loop","controls","volume","muted","playbackRate","width","height","style","progressInterval","playsinline","pip","stopOnUnmount","light","playIcon","previewTabIndex","fallback","oEmbedUrl","wrapper","render","isRequired","config","options","playerVars","embedOptions","onUnstarted","appId","version","playerId","attributes","params","playerOptions","title","tracks","forceVideo","forceAudio","forceHLS","forceDASH","forceFLV","hlsOptions","hlsVersion","dashVersion","flvVersion","customControls","onReady","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onPlaybackRateChange","onProgress","onClickPreview","onEnablePIP","onDisablePIP","noop","defaultProps","visual","buying","liking","download","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","api","autopause","byline","portrait","hide_cover","hasElementType","Element","hasMap","Map","hasSet","Set","hasArrayBuffer","ArrayBuffer","isView","a","b","equal","it","isArray","size","entries","next","done","has","RegExp","source","flags","valueOf","$$typeof","isMergeableObject","isNonNullObject","stringValue","REACT_ELEMENT_TYPE","isReactElement","isSpecial","cloneUnlessOtherwiseSpecified","clone","deepmerge","val","defaultArrayMerge","target","element","getKeys","getOwnPropertySymbols","filter","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","_","mergeObject","destination","propertyIsUnsafe","customMerge","getMergeFunction","arrayMerge","sourceIsArray","all","Error","reduce","prev","deepmerge_1","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","arguments","apply","stdOnEnd","script","cb","onload","onerror","ieOnEnd","onreadystatechange","readyState","opts","head","getElementsByTagName","type","charset","async","attrs","attr","setAttribute","setAttributes","text","appendChild","Preview","lazy","IS_BROWSER","IS_GLOBAL","global","SUPPORTED_PROPS","UniversalSuspense","Suspense","customPlayers","createReactPlayer","players","showPreview","props","setState","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","fraction","seekTo","memoize","merge","getActivePlayer","getConfig","ref","references","activePlayer","lazyPlayer","handleReady","nextProps","nextState","state","prevProps","onClick","handleClickPreview","Wrapper","getAttributes","wrapperRef","undefined","renderPreview","renderActivePlayer","Component","Player","canEnablePIP","load","progress","isReady","playedSeconds","loadedSeconds","duration","played","loaded","prevPlayed","prevLoaded","progressTimeout","setTimeout","progressFrequency","mounted","isLoading","setVolume","loadOnReady","play","handleDurationCheck","isPlaying","startOnPlay","setPlaybackRate","seekOnPlay","loopOnEnded","clearTimeout","durationCheckTimeout","onDurationCalled","stop","disablePIP","disableDeferredLoading","forceLoad","pause","enablePIP","mute","unmute","setLoop","amount","onMount","handlePlayerMount","handlePlay","handlePause","handleEnded","handleLoaded","handleError","g","Function","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","ReactPropTypes","any","arrayOf","elementType","instanceOf","objectOf","oneOf","exact","checkPropTypes","cache","image","fetchImage","isValidElement","fetch","replace","then","response","json","thumbnail_url","isElement","flexCenter","display","alignItems","justifyContent","styles","preview","backgroundImage","backgroundSize","backgroundPosition","cursor","shadow","background","borderRadius","position","borderStyle","borderWidth","borderColor","marginLeft","defaultPlayIcon","className","tabIndex","onKeyPress","handleKeyPress","pictureInPictureEnabled","MATCH_PLAYLIST","MATCH_USER_UPLOADS","MATCH_NOCOOKIE","YouTube","listType","playlist","getID","list","event","PlayerState","UNSTARTED","PLAYING","PAUSED","BUFFERING","ENDED","CUED","isPlaylist","start","container","id","loadPlaylist","parsePlaylist","cueVideoById","videoId","startSeconds","endSeconds","end","YT","autoplay","origin","events","onStateChange","host","body","contains","rate","SoundCloud","iframe","SC","Widget","Events","PLAY","PLAY_PROGRESS","PAUSE","FINISH","ERROR","currentTime","currentPosition","fractionLoaded","loadedProgress","callback","encodeURIComponent","frameBorder","allow","Vimeo","ready","querySelector","on","refreshDuration","secondsLoaded","promise","overflow","SDK_URL","Facebook","FB","XFBML","parse","init","xfbml","Event","subscribe","msg","playerID","instance","getElementById","visibility","data-href","data-autoplay","data-allowfullscreen","data-controls","Streamable","playerjs","percent","scrolling","Wistia","control","defineControl","_wq","autoPlay","silentAutoPlay","controlsVisibleOnLoad","fullscreenButton","playbar","playbackRateControl","qualityControl","volumeControl","settingsControl","smallPlayButton","unbind","videoID","Twitch","isChannel","setChannel","setVideo","channel","time","READY","ONLINE","OFFLINE","SEEK","addEventListener","DailyMotion","DM","apiready","seeked","video_end","durationchange","onDurationChange","waiting","bufferedTime","Mixcloud","PlayerWidget","ended","query","feed","Vidyard","addReadyListener","renderPlayer","uuid","getPlayerMetadata","meta","length_in_seconds","VidyardV4","destroyPlayer","Kaltura","addListeners","referrerPolicy","HAS_NAVIGATOR","IS_IPAD_PRO","platform","maxTouchPoints","IS_IOS","MSStream","MATCH_DROPBOX_URL","MATCH_CLOUDFLARE_STREAM","FilePlayer","webkitPresentationMode","index","track","prevPlayer","getSource","shouldUseAudio","removeListeners","srcObject","hls","destroy","onPlayBackRateChange","onPresentationModeChange","shouldUseHLS","removeEventListener","poster","dash","reset","Hls","MANIFEST_PARSED","loadSource","attachMedia","shouldUseDASH","dashjs","MediaPlayer","initialize","getDebug","setLogToBrowserConsole","updateSettings","debug","logLevel","Debug","LOG_LEVEL_NONE","shouldUseFLV","flvjs","flv","createPlayer","attachMediaElement","URL","createObjectURL","removeAttribute","requestPictureInPicture","pictureInPictureElement","exitPictureInPicture","seekable","Infinity","buffered","useHLS","useDASH","useFLV","preload","renderSourceElement","renderTrack"],"mappings":"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","file":"ReactPlayer.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + chunkId + \".ReactPlayer.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// The chunk loading function for additional chunks\n \t// Since all referenced chunks are already included\n \t// in this file, this function is empty here.\n \t__webpack_require__.e = function requireEnsure() {\n \t\treturn Promise.resolve();\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonpReactPlayer\"] = window[\"webpackJsonpReactPlayer\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 15);\n","module.exports = React;","import loadScript from 'load-script'\nimport merge from 'deepmerge'\n\nconst MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/\nconst MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/\nconst MATCH_START_STAMP = /(\\d+)(h|m|s)/g\nconst MATCH_NUMERIC = /^\\d+$/\n\n// Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\nfunction parseTimeParam (url, pattern) {\n if (url instanceof Array) {\n return undefined\n }\n const match = url.match(pattern)\n if (match) {\n const stamp = match[1]\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp)\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp)\n }\n }\n return undefined\n}\n\nfunction parseTimeString (stamp) {\n let seconds = 0\n let array = MATCH_START_STAMP.exec(stamp)\n while (array !== null) {\n const [, count, period] = array\n if (period === 'h') seconds += parseInt(count, 10) * 60 * 60\n if (period === 'm') seconds += parseInt(count, 10) * 60\n if (period === 's') seconds += parseInt(count, 10)\n array = MATCH_START_STAMP.exec(stamp)\n }\n return seconds\n}\n\nexport function parseStartTime (url) {\n return parseTimeParam(url, MATCH_START_QUERY)\n}\n\nexport function parseEndTime (url) {\n return parseTimeParam(url, MATCH_END_QUERY)\n}\n\n// http://stackoverflow.com/a/38622545\nexport function randomString () {\n return Math.random().toString(36).substr(2, 5)\n}\n\nexport function queryString (object) {\n return Object\n .keys(object)\n .map(key => `${key}=${object[key]}`)\n .join('&')\n}\n\nfunction getGlobal (key) {\n if (window[key]) {\n return window[key]\n }\n if (window.exports && window.exports[key]) {\n return window.exports[key]\n }\n if (window.module && window.module.exports && window.module.exports[key]) {\n return window.module.exports[key]\n }\n return null\n}\n\n// Util function to load an external SDK\n// or return the SDK if it is already loaded\nconst requests = {}\nexport function getSDK (url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = loadScript) {\n const existingGlobal = getGlobal(sdkGlobal)\n if (existingGlobal && isLoaded(existingGlobal)) {\n return Promise.resolve(existingGlobal)\n }\n return new Promise((resolve, reject) => {\n // If we are already loading the SDK, add the resolve and reject\n // functions to the existing array of requests\n if (requests[url]) {\n requests[url].push({ resolve, reject })\n return\n }\n requests[url] = [{ resolve, reject }]\n const onLoaded = sdk => {\n // When loaded, resolve all pending request promises\n requests[url].forEach(request => request.resolve(sdk))\n }\n if (sdkReady) {\n const previousOnReady = window[sdkReady]\n window[sdkReady] = function () {\n if (previousOnReady) previousOnReady()\n onLoaded(getGlobal(sdkGlobal))\n }\n }\n fetchScript(url, err => {\n if (err) {\n // Loading the SDK failed – reject all requests and\n // reset the array of requests for this SDK\n requests[url].forEach(request => request.reject(err))\n requests[url] = null\n } else if (!sdkReady) {\n onLoaded(getGlobal(sdkGlobal))\n }\n })\n })\n}\n\nexport function getConfig (props, defaultProps) {\n return merge(defaultProps.config, props.config)\n}\n\nexport function omit (object, ...arrays) {\n const omitKeys = [].concat(...arrays)\n const output = {}\n const keys = Object.keys(object)\n for (const key of keys) {\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key]\n }\n }\n return output\n}\n\nexport function callPlayer (method, ...args) {\n // Util method for calling a method on this.player\n // but guard against errors and console.warn instead\n if (!this.player || !this.player[method]) {\n let message = `ReactPlayer: ${this.constructor.displayName} player could not call %c${method}%c – `\n if (!this.player) {\n message += 'The player was not available'\n } else if (!this.player[method]) {\n message += 'The method was not available'\n }\n console.warn(message, 'font-weight: bold', '')\n return null\n }\n return this.player[method](...args)\n}\n\nexport function isMediaStream (url) {\n return (\n typeof window !== 'undefined' &&\n typeof window.MediaStream !== 'undefined' &&\n url instanceof window.MediaStream\n )\n}\n\nexport function isBlobUrl (url) {\n return /^blob:/.test(url)\n}\n\nexport function supportsWebKitPresentationMode (video = document.createElement('video')) {\n // Check if Safari supports PiP, and is not on mobile (other than iPad)\n // iPhone safari appears to \"support\" PiP through the check, however PiP does not function\n const notMobile = /iPhone|iPod/.test(navigator.userAgent) === false\n return video.webkitSupportsPresentationMode && typeof video.webkitSetPresentationMode === 'function' && notMobile\n}\n","import { isMediaStream, isBlobUrl } from './utils'\n\nexport const MATCH_URL_YOUTUBE = /(?:youtu\\.be\\/|youtube(?:-nocookie)?\\.com\\/(?:embed\\/|v\\/|watch\\/|watch\\?v=|watch\\?.+&v=|shorts\\/))((\\w|-){11})|youtube\\.com\\/playlist\\?list=|youtube\\.com\\/user\\//\nexport const MATCH_URL_SOUNDCLOUD = /(?:soundcloud\\.com|snd\\.sc)\\/[^.]+$/\nexport const MATCH_URL_VIMEO = /vimeo\\.com\\/(?!progressive_redirect).+/\nexport const MATCH_URL_FACEBOOK = /^https?:\\/\\/(www\\.)?facebook\\.com.*\\/(video(s)?|watch|story)(\\.php?|\\/).+$/\nexport const MATCH_URL_FACEBOOK_WATCH = /^https?:\\/\\/fb\\.watch\\/.+$/\nexport const MATCH_URL_STREAMABLE = /streamable\\.com\\/([a-z0-9]+)$/\nexport const MATCH_URL_WISTIA = /(?:wistia\\.(?:com|net)|wi\\.st)\\/(?:medias|embed)\\/(?:iframe\\/)?(.*)$/\nexport const MATCH_URL_TWITCH_VIDEO = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/\nexport const MATCH_URL_TWITCH_CHANNEL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-zA-Z0-9_]+)($|\\?)/\nexport const MATCH_URL_DAILYMOTION = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?(?:[\\w.#_-]+)?/\nexport const MATCH_URL_MIXCLOUD = /mixcloud\\.com\\/([^/]+\\/[^/]+)/\nexport const MATCH_URL_VIDYARD = /vidyard.com\\/(?:watch\\/)?([a-zA-Z0-9-_]+)/\nexport const MATCH_URL_KALTURA = /^https?:\\/\\/[a-zA-Z]+\\.kaltura.(com|org)\\/p\\/([0-9]+)\\/sp\\/([0-9]+)00\\/embedIframeJs\\/uiconf_id\\/([0-9]+)\\/partner_id\\/([0-9]+)(.*)entry_id.([a-zA-Z0-9-_].*)$/\nexport const AUDIO_EXTENSIONS = /\\.(m4a|m4b|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i\nexport const VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)(#t=[,\\d+]+)?($|\\?)/i\nexport const HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i\nexport const DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i\nexport const FLV_EXTENSIONS = /\\.(flv)($|\\?)/i\n\nconst canPlayFile = url => {\n if (url instanceof Array) {\n for (const item of url) {\n if (typeof item === 'string' && canPlayFile(item)) {\n return true\n }\n if (canPlayFile(item.src)) {\n return true\n }\n }\n return false\n }\n if (isMediaStream(url) || isBlobUrl(url)) {\n return true\n }\n return (\n AUDIO_EXTENSIONS.test(url) ||\n VIDEO_EXTENSIONS.test(url) ||\n HLS_EXTENSIONS.test(url) ||\n DASH_EXTENSIONS.test(url) ||\n FLV_EXTENSIONS.test(url)\n )\n}\n\nexport const canPlay = {\n youtube: url => {\n if (url instanceof Array) {\n return url.every(item => MATCH_URL_YOUTUBE.test(item))\n }\n return MATCH_URL_YOUTUBE.test(url)\n },\n soundcloud: url => MATCH_URL_SOUNDCLOUD.test(url) && !AUDIO_EXTENSIONS.test(url),\n vimeo: url => MATCH_URL_VIMEO.test(url) && !VIDEO_EXTENSIONS.test(url) && !HLS_EXTENSIONS.test(url),\n facebook: url => MATCH_URL_FACEBOOK.test(url) || MATCH_URL_FACEBOOK_WATCH.test(url),\n streamable: url => MATCH_URL_STREAMABLE.test(url),\n wistia: url => MATCH_URL_WISTIA.test(url),\n twitch: url => MATCH_URL_TWITCH_VIDEO.test(url) || MATCH_URL_TWITCH_CHANNEL.test(url),\n dailymotion: url => MATCH_URL_DAILYMOTION.test(url),\n mixcloud: url => MATCH_URL_MIXCLOUD.test(url),\n vidyard: url => MATCH_URL_VIDYARD.test(url),\n kaltura: url => MATCH_URL_KALTURA.test(url),\n file: canPlayFile\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","import PropTypes from 'prop-types'\n\nconst { string, bool, number, array, oneOfType, shape, object, func, node } = PropTypes\n\nexport const propTypes = {\n url: oneOfType([string, array, object]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([string, number]),\n height: oneOfType([string, number]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n stopOnUnmount: bool,\n light: oneOfType([bool, string, object]),\n playIcon: node,\n previewTabIndex: number,\n fallback: node,\n oEmbedUrl: string,\n wrapper: oneOfType([\n string,\n func,\n shape({ render: func.isRequired })\n ]),\n config: shape({\n soundcloud: shape({\n options: object\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n onUnstarted: func\n }),\n facebook: shape({\n appId: string,\n version: string,\n playerId: string,\n attributes: object\n }),\n dailymotion: shape({\n params: object\n }),\n vimeo: shape({\n playerOptions: object,\n title: string\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceDASH: bool,\n forceFLV: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string,\n flvVersion: string\n }),\n wistia: shape({\n options: object,\n playerId: string,\n customControls: array\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object,\n playerId: string\n }),\n vidyard: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onPlaybackRateChange: func,\n onProgress: func,\n onClickPreview: func,\n onEnablePIP: func,\n onDisablePIP: func\n}\n\nconst noop = () => {}\n\nexport const defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: '640px',\n height: '360px',\n style: {},\n progressInterval: 1000,\n playsinline: false,\n pip: false,\n stopOnUnmount: true,\n light: false,\n fallback: null,\n wrapper: 'div',\n previewTabIndex: 0,\n oEmbedUrl: 'https://noembed.com/embed?url={url}',\n config: {\n soundcloud: {\n options: {\n visual: true, // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n onUnstarted: noop\n },\n facebook: {\n appId: '1309697205772819',\n version: 'v3.3',\n playerId: null,\n attributes: {}\n },\n dailymotion: {\n params: {\n api: 1,\n 'endscreen-enable': false\n }\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n title: null\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n forceFLV: false,\n hlsOptions: {},\n hlsVersion: '1.1.4',\n dashVersion: '3.1.3',\n flvVersion: '1.5.0'\n },\n wistia: {\n options: {},\n playerId: null,\n customControls: null\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {},\n playerId: null\n },\n vidyard: {\n options: {}\n }\n },\n onReady: noop,\n onStart: noop,\n onPlay: noop,\n onPause: noop,\n onBuffer: noop,\n onBufferEnd: noop,\n onEnded: noop,\n onError: noop,\n onDuration: noop,\n onSeek: noop,\n onPlaybackRateChange: noop,\n onProgress: noop,\n onClickPreview: noop,\n onEnablePIP: noop,\n onDisablePIP: noop\n}\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","function areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n return lastResult;\n }\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n }\n return memoized;\n}\n\nexport default memoizeOne;\n","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n","import React, { Component, Suspense, lazy } from 'react'\nimport merge from 'deepmerge'\nimport memoize from 'memoize-one'\nimport isEqual from 'react-fast-compare'\n\nimport { propTypes, defaultProps } from './props'\nimport { omit } from './utils'\nimport Player from './Player'\n\nconst Preview = lazy(() => import(/* webpackChunkName: 'reactPlayerPreview' */'./Preview'))\n\nconst IS_BROWSER = typeof window !== 'undefined' && window.document\nconst IS_GLOBAL = typeof global !== 'undefined' && global.window && global.window.document\nconst SUPPORTED_PROPS = Object.keys(propTypes)\n\n// Return null when rendering on the server\n// as Suspense is not supported yet\nconst UniversalSuspense = IS_BROWSER || IS_GLOBAL ? Suspense : () => null\n\nconst customPlayers = []\n\nexport const createReactPlayer = (players, fallback) => {\n return class ReactPlayer extends Component {\n static displayName = 'ReactPlayer'\n static propTypes = propTypes\n static defaultProps = defaultProps\n static addCustomPlayer = player => { customPlayers.push(player) }\n static removeCustomPlayers = () => { customPlayers.length = 0 }\n\n static canPlay = url => {\n for (const Player of [...customPlayers, ...players]) {\n if (Player.canPlay(url)) {\n return true\n }\n }\n return false\n }\n\n static canEnablePIP = url => {\n for (const Player of [...customPlayers, ...players]) {\n if (Player.canEnablePIP && Player.canEnablePIP(url)) {\n return true\n }\n }\n return false\n }\n\n state = {\n showPreview: !!this.props.light\n }\n\n // Use references, as refs is used by React\n references = {\n wrapper: wrapper => { this.wrapper = wrapper },\n player: player => { this.player = player }\n }\n\n shouldComponentUpdate (nextProps, nextState) {\n return !isEqual(this.props, nextProps) || !isEqual(this.state, nextState)\n }\n\n componentDidUpdate (prevProps) {\n const { light } = this.props\n if (!prevProps.light && light) {\n this.setState({ showPreview: true })\n }\n if (prevProps.light && !light) {\n this.setState({ showPreview: false })\n }\n }\n\n handleClickPreview = (e) => {\n this.setState({ showPreview: false })\n this.props.onClickPreview(e)\n }\n\n showPreview = () => {\n this.setState({ showPreview: true })\n }\n\n getDuration = () => {\n if (!this.player) return null\n return this.player.getDuration()\n }\n\n getCurrentTime = () => {\n if (!this.player) return null\n return this.player.getCurrentTime()\n }\n\n getSecondsLoaded = () => {\n if (!this.player) return null\n return this.player.getSecondsLoaded()\n }\n\n getInternalPlayer = (key = 'player') => {\n if (!this.player) return null\n return this.player.getInternalPlayer(key)\n }\n\n seekTo = (fraction, type) => {\n if (!this.player) return null\n this.player.seekTo(fraction, type)\n }\n\n handleReady = () => {\n this.props.onReady(this)\n }\n\n getActivePlayer = memoize(url => {\n for (const player of [...customPlayers, ...players]) {\n if (player.canPlay(url)) {\n return player\n }\n }\n if (fallback) {\n return fallback\n }\n return null\n })\n\n getConfig = memoize((url, key) => {\n const { config } = this.props\n return merge.all([\n defaultProps.config,\n defaultProps.config[key] || {},\n config,\n config[key] || {}\n ])\n })\n\n getAttributes = memoize(url => {\n return omit(this.props, SUPPORTED_PROPS)\n })\n\n renderPreview (url) {\n if (!url) return null\n const { light, playIcon, previewTabIndex, oEmbedUrl } = this.props\n return (\n \n )\n }\n\n renderActivePlayer = url => {\n if (!url) return null\n const player = this.getActivePlayer(url)\n if (!player) return null\n const config = this.getConfig(url, player.key)\n return (\n \n )\n }\n\n render () {\n const { url, style, width, height, fallback, wrapper: Wrapper } = this.props\n const { showPreview } = this.state\n const attributes = this.getAttributes(url)\n const wrapperRef = typeof Wrapper === 'string' ? this.references.wrapper : undefined\n return (\n \n \n {showPreview\n ? this.renderPreview(url)\n : this.renderActivePlayer(url)}\n \n \n )\n }\n }\n}\n","import React, { Component } from 'react'\nimport isEqual from 'react-fast-compare'\n\nimport { propTypes, defaultProps } from './props'\nimport { isMediaStream } from './utils'\n\nconst SEEK_ON_PLAY_EXPIRY = 5000\n\nexport default class Player extends Component {\n static displayName = 'Player'\n static propTypes = propTypes\n static defaultProps = defaultProps\n\n mounted = false\n isReady = false\n isPlaying = false // Track playing state internally to prevent bugs\n isLoading = true // Use isLoading to prevent onPause when switching URL\n loadOnReady = null\n startOnPlay = true\n seekOnPlay = null\n onDurationCalled = false\n\n componentDidMount () {\n this.mounted = true\n }\n\n componentWillUnmount () {\n clearTimeout(this.progressTimeout)\n clearTimeout(this.durationCheckTimeout)\n if (this.isReady && this.props.stopOnUnmount) {\n this.player.stop()\n\n if (this.player.disablePIP) {\n this.player.disablePIP()\n }\n }\n this.mounted = false\n }\n\n componentDidUpdate (prevProps) {\n // If there isn’t a player available, don’t do anything\n if (!this.player) {\n return\n }\n // Invoke player methods based on changed props\n const { url, playing, volume, muted, playbackRate, pip, loop, activePlayer, disableDeferredLoading } = this.props\n if (!isEqual(prevProps.url, url)) {\n if (this.isLoading && !activePlayer.forceLoad && !disableDeferredLoading && !isMediaStream(url)) {\n console.warn(`ReactPlayer: the attempt to load ${url} is being deferred until the player has loaded`)\n this.loadOnReady = url\n return\n }\n this.isLoading = true\n this.startOnPlay = true\n this.onDurationCalled = false\n this.player.load(url, this.isReady)\n }\n if (!prevProps.playing && playing && !this.isPlaying) {\n this.player.play()\n }\n if (prevProps.playing && !playing && this.isPlaying) {\n this.player.pause()\n }\n if (!prevProps.pip && pip && this.player.enablePIP) {\n this.player.enablePIP()\n }\n if (prevProps.pip && !pip && this.player.disablePIP) {\n this.player.disablePIP()\n }\n if (prevProps.volume !== volume && volume !== null) {\n this.player.setVolume(volume)\n }\n if (prevProps.muted !== muted) {\n if (muted) {\n this.player.mute()\n } else {\n this.player.unmute()\n if (volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(() => this.player.setVolume(volume))\n }\n }\n }\n if (prevProps.playbackRate !== playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate)\n }\n if (prevProps.loop !== loop && this.player.setLoop) {\n this.player.setLoop(loop)\n }\n }\n\n handlePlayerMount = player => {\n if (this.player) {\n this.progress() // Ensure onProgress is still called in strict mode\n return // Return here to prevent loading twice in strict mode\n }\n this.player = player\n this.player.load(this.props.url)\n this.progress()\n }\n\n getDuration () {\n if (!this.isReady) return null\n return this.player.getDuration()\n }\n\n getCurrentTime () {\n if (!this.isReady) return null\n return this.player.getCurrentTime()\n }\n\n getSecondsLoaded () {\n if (!this.isReady) return null\n return this.player.getSecondsLoaded()\n }\n\n getInternalPlayer = (key) => {\n if (!this.player) return null\n return this.player[key]\n }\n\n progress = () => {\n if (this.props.url && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0\n const loadedSeconds = this.getSecondsLoaded()\n const duration = this.getDuration()\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration\n }\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds\n progress.loaded = loadedSeconds / duration\n }\n // Only call onProgress if values have changed\n if (progress.playedSeconds !== this.prevPlayed || progress.loadedSeconds !== this.prevLoaded) {\n this.props.onProgress(progress)\n }\n this.prevPlayed = progress.playedSeconds\n this.prevLoaded = progress.loadedSeconds\n }\n }\n this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval)\n }\n\n seekTo (amount, type) {\n // When seeking before player is ready, store value and seek later\n if (!this.isReady) {\n if (amount !== 0) {\n this.seekOnPlay = amount\n setTimeout(() => { this.seekOnPlay = null }, SEEK_ON_PLAY_EXPIRY)\n }\n return\n }\n const isFraction = !type ? (amount > 0 && amount < 1) : type === 'fraction'\n if (isFraction) {\n // Convert fraction to seconds based on duration\n const duration = this.player.getDuration()\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available')\n return\n }\n this.player.seekTo(duration * amount)\n return\n }\n this.player.seekTo(amount)\n }\n\n handleReady = () => {\n if (!this.mounted) return\n this.isReady = true\n this.isLoading = false\n const { onReady, playing, volume, muted } = this.props\n onReady()\n if (!muted && volume !== null) {\n this.player.setVolume(volume)\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true)\n this.loadOnReady = null\n } else if (playing) {\n this.player.play()\n }\n this.handleDurationCheck()\n }\n\n handlePlay = () => {\n this.isPlaying = true\n this.isLoading = false\n const { onStart, onPlay, playbackRate } = this.props\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate && playbackRate !== 1) {\n this.player.setPlaybackRate(playbackRate)\n }\n onStart()\n this.startOnPlay = false\n }\n onPlay()\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay)\n this.seekOnPlay = null\n }\n this.handleDurationCheck()\n }\n\n handlePause = (e) => {\n this.isPlaying = false\n if (!this.isLoading) {\n this.props.onPause(e)\n }\n }\n\n handleEnded = () => {\n const { activePlayer, loop, onEnded } = this.props\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0)\n }\n if (!loop) {\n this.isPlaying = false\n onEnded()\n }\n }\n\n handleError = (...args) => {\n this.isLoading = false\n this.props.onError(...args)\n }\n\n handleDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout)\n const duration = this.getDuration()\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration(duration)\n this.onDurationCalled = true\n }\n } else {\n this.durationCheckTimeout = setTimeout(this.handleDurationCheck, 100)\n }\n }\n\n handleLoaded = () => {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n this.isLoading = false\n }\n\n render () {\n const Player = this.props.activePlayer\n if (!Player) {\n return null\n }\n return (\n \n )\n }\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import React, { Component } from 'react'\n\nconst ICON_SIZE = '64px'\n\nconst cache = {}\n\nexport default class Preview extends Component {\n mounted = false\n state = {\n image: null\n }\n\n componentDidMount () {\n this.mounted = true\n this.fetchImage(this.props)\n }\n\n componentDidUpdate (prevProps) {\n const { url, light } = this.props\n if (prevProps.url !== url || prevProps.light !== light) {\n this.fetchImage(this.props)\n }\n }\n\n componentWillUnmount () {\n this.mounted = false\n }\n\n fetchImage ({ url, light, oEmbedUrl }) {\n if (React.isValidElement(light)) {\n return\n }\n if (typeof light === 'string') {\n this.setState({ image: light })\n return\n }\n if (cache[url]) {\n this.setState({ image: cache[url] })\n return\n }\n this.setState({ image: null })\n return window.fetch(oEmbedUrl.replace('{url}', url))\n .then(response => response.json())\n .then(data => {\n if (data.thumbnail_url && this.mounted) {\n const image = data.thumbnail_url.replace('height=100', 'height=480').replace('-d_295x166', '-d_640')\n this.setState({ image })\n cache[url] = image\n }\n })\n }\n\n handleKeyPress = e => {\n if (e.key === 'Enter' || e.key === ' ') {\n this.props.onClick()\n }\n }\n\n render () {\n const { light, onClick, playIcon, previewTabIndex } = this.props\n const { image } = this.state\n const isElement = React.isValidElement(light)\n const flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n const styles = {\n preview: {\n width: '100%',\n height: '100%',\n backgroundImage: image && !isElement ? `url(${image})` : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer',\n ...flexCenter\n },\n shadow: {\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE,\n position: isElement ? 'absolute' : undefined,\n ...flexCenter\n },\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n }\n const defaultPlayIcon = (\n
\n
\n
\n )\n return (\n \n {isElement ? light : null}\n {playIcon || defaultPlayIcon}\n
\n )\n }\n}\n","import { lazy } from 'react'\nimport { supportsWebKitPresentationMode } from '../utils'\nimport { canPlay, AUDIO_EXTENSIONS } from '../patterns'\n\nexport default [\n {\n key: 'youtube',\n name: 'YouTube',\n canPlay: canPlay.youtube,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerYouTube' */'./YouTube'))\n },\n {\n key: 'soundcloud',\n name: 'SoundCloud',\n canPlay: canPlay.soundcloud,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerSoundCloud' */'./SoundCloud'))\n },\n {\n key: 'vimeo',\n name: 'Vimeo',\n canPlay: canPlay.vimeo,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerVimeo' */'./Vimeo'))\n },\n {\n key: 'facebook',\n name: 'Facebook',\n canPlay: canPlay.facebook,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerFacebook' */'./Facebook'))\n },\n {\n key: 'streamable',\n name: 'Streamable',\n canPlay: canPlay.streamable,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerStreamable' */'./Streamable'))\n },\n {\n key: 'wistia',\n name: 'Wistia',\n canPlay: canPlay.wistia,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerWistia' */'./Wistia'))\n },\n {\n key: 'twitch',\n name: 'Twitch',\n canPlay: canPlay.twitch,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerTwitch' */'./Twitch'))\n },\n {\n key: 'dailymotion',\n name: 'DailyMotion',\n canPlay: canPlay.dailymotion,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerDailyMotion' */'./DailyMotion'))\n },\n {\n key: 'mixcloud',\n name: 'Mixcloud',\n canPlay: canPlay.mixcloud,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerMixcloud' */'./Mixcloud'))\n },\n {\n key: 'vidyard',\n name: 'Vidyard',\n canPlay: canPlay.vidyard,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerVidyard' */'./Vidyard'))\n },\n {\n key: 'kaltura',\n name: 'Kaltura',\n canPlay: canPlay.kaltura,\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerKaltura' */'./Kaltura'))\n },\n {\n key: 'file',\n name: 'FilePlayer',\n canPlay: canPlay.file,\n canEnablePIP: url => {\n return canPlay.file(url) && (document.pictureInPictureEnabled || supportsWebKitPresentationMode()) && !AUDIO_EXTENSIONS.test(url)\n },\n lazyPlayer: lazy(() => import(/* webpackChunkName: 'reactPlayerFilePlayer' */'./FilePlayer'))\n }\n]\n","import players from './players'\nimport { createReactPlayer } from './ReactPlayer'\n\n// Fall back to FilePlayer if nothing else can play the URL\nconst fallback = players[players.length - 1]\n\nexport default createReactPlayer(players, fallback)\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime, parseEndTime } from '../utils'\nimport { canPlay, MATCH_URL_YOUTUBE } from '../patterns'\n\nconst SDK_URL = 'https://www.youtube.com/iframe_api'\nconst SDK_GLOBAL = 'YT'\nconst SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady'\nconst MATCH_PLAYLIST = /[?&](?:list|channel)=([a-zA-Z0-9_-]+)/\nconst MATCH_USER_UPLOADS = /user\\/([a-zA-Z0-9_-]+)\\/?/\nconst MATCH_NOCOOKIE = /youtube-nocookie\\.com/\nconst NOCOOKIE_HOST = 'https://www.youtube-nocookie.com'\n\nexport default class YouTube extends Component {\n static displayName = 'YouTube'\n static canPlay = canPlay.youtube\n callPlayer = callPlayer\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n getID (url) {\n if (!url || url instanceof Array || MATCH_PLAYLIST.test(url)) {\n return null\n }\n return url.match(MATCH_URL_YOUTUBE)[1]\n }\n\n load (url, isReady) {\n const { playing, muted, playsinline, controls, loop, config, onError } = this.props\n const { playerVars, embedOptions } = config\n const id = this.getID(url)\n if (isReady) {\n if (MATCH_PLAYLIST.test(url) || MATCH_USER_UPLOADS.test(url) || url instanceof Array) {\n this.player.loadPlaylist(this.parsePlaylist(url))\n return\n }\n this.player.cueVideoById({\n videoId: id,\n startSeconds: parseStartTime(url) || playerVars.start,\n endSeconds: parseEndTime(url) || playerVars.end\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, YT => YT.loaded).then(YT => {\n if (!this.container) return\n this.player = new YT.Player(this.container, {\n width: '100%',\n height: '100%',\n videoId: id,\n playerVars: {\n autoplay: playing ? 1 : 0,\n mute: muted ? 1 : 0,\n controls: controls ? 1 : 0,\n start: parseStartTime(url),\n end: parseEndTime(url),\n origin: window.location.origin,\n playsinline: playsinline ? 1 : 0,\n ...this.parsePlaylist(url),\n ...playerVars\n },\n events: {\n onReady: () => {\n if (loop) {\n this.player.setLoop(true) // Enable playlist looping\n }\n this.props.onReady()\n },\n onPlaybackRateChange: event => this.props.onPlaybackRateChange(event.data),\n onStateChange: this.onStateChange,\n onError: event => onError(event.data)\n },\n host: MATCH_NOCOOKIE.test(url) ? NOCOOKIE_HOST : undefined,\n ...embedOptions\n })\n }, onError)\n if (embedOptions.events) {\n console.warn('Using `embedOptions.events` will likely break things. Use ReactPlayer’s callback props instead, eg onReady, onPlay, onPause')\n }\n }\n\n parsePlaylist = (url) => {\n if (url instanceof Array) {\n return {\n listType: 'playlist',\n playlist: url.map(this.getID).join(',')\n }\n }\n if (MATCH_PLAYLIST.test(url)) {\n const [, playlistId] = url.match(MATCH_PLAYLIST)\n return {\n listType: 'playlist',\n list: playlistId.replace(/^UC/, 'UU')\n }\n }\n if (MATCH_USER_UPLOADS.test(url)) {\n const [, username] = url.match(MATCH_USER_UPLOADS)\n return {\n listType: 'user_uploads',\n list: username\n }\n }\n return {}\n }\n\n onStateChange = (event) => {\n const { data } = event\n const { onPlay, onPause, onBuffer, onBufferEnd, onEnded, onReady, loop, config: { playerVars, onUnstarted } } = this.props\n const { UNSTARTED, PLAYING, PAUSED, BUFFERING, ENDED, CUED } = window[SDK_GLOBAL].PlayerState\n if (data === UNSTARTED) onUnstarted()\n if (data === PLAYING) {\n onPlay()\n onBufferEnd()\n }\n if (data === PAUSED) onPause()\n if (data === BUFFERING) onBuffer()\n if (data === ENDED) {\n const isPlaylist = !!this.callPlayer('getPlaylist')\n // Only loop manually if not playing a playlist\n if (loop && !isPlaylist) {\n if (playerVars.start) {\n this.seekTo(playerVars.start)\n } else {\n this.play()\n }\n }\n onEnded()\n }\n if (data === CUED) onReady()\n }\n\n play () {\n this.callPlayer('playVideo')\n }\n\n pause () {\n this.callPlayer('pauseVideo')\n }\n\n stop () {\n if (!document.body.contains(this.callPlayer('getIframe'))) return\n this.callPlayer('stopVideo')\n }\n\n seekTo (amount) {\n this.callPlayer('seekTo', amount)\n if (!this.props.playing) {\n this.pause()\n }\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n\n mute = () => {\n this.callPlayer('mute')\n }\n\n unmute = () => {\n this.callPlayer('unMute')\n }\n\n setPlaybackRate (rate) {\n this.callPlayer('setPlaybackRate', rate)\n }\n\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n\n getDuration () {\n return this.callPlayer('getDuration')\n }\n\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n\n getSecondsLoaded () {\n return this.callPlayer('getVideoLoadedFraction') * this.getDuration()\n }\n\n ref = container => {\n this.container = container\n }\n\n render () {\n const { display } = this.props\n const style = {\n width: '100%',\n height: '100%',\n display\n }\n return (\n
\n
\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport { canPlay } from '../patterns'\n\nconst SDK_URL = 'https://w.soundcloud.com/player/api.js'\nconst SDK_GLOBAL = 'SC'\n\nexport default class SoundCloud extends Component {\n static displayName = 'SoundCloud'\n static canPlay = canPlay.soundcloud\n static loopOnEnded = true\n callPlayer = callPlayer\n duration = null\n currentTime = null\n fractionLoaded = null\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url, isReady) {\n getSDK(SDK_URL, SDK_GLOBAL).then(SC => {\n if (!this.iframe) return\n const { PLAY, PLAY_PROGRESS, PAUSE, FINISH, ERROR } = SC.Widget.Events\n if (!isReady) {\n this.player = SC.Widget(this.iframe)\n this.player.bind(PLAY, this.props.onPlay)\n this.player.bind(PAUSE, () => {\n const remaining = this.duration - this.currentTime\n if (remaining < 0.05) {\n // Prevent onPause firing right before onEnded\n return\n }\n this.props.onPause()\n })\n this.player.bind(PLAY_PROGRESS, e => {\n this.currentTime = e.currentPosition / 1000\n this.fractionLoaded = e.loadedProgress\n })\n this.player.bind(FINISH, () => this.props.onEnded())\n this.player.bind(ERROR, e => this.props.onError(e))\n }\n this.player.load(url, {\n ...this.props.config.options,\n callback: () => {\n this.player.getDuration(duration => {\n this.duration = duration / 1000\n this.props.onReady()\n })\n }\n })\n })\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('seekTo', seconds * 1000)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n\n mute = () => {\n this.setVolume(0)\n }\n\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.currentTime\n }\n\n getSecondsLoaded () {\n return this.fractionLoaded * this.duration\n }\n\n ref = iframe => {\n this.iframe = iframe\n }\n\n render () {\n const { display } = this.props\n const style = {\n width: '100%',\n height: '100%',\n display\n }\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport { canPlay } from '../patterns'\n\nconst SDK_URL = 'https://player.vimeo.com/api/player.js'\nconst SDK_GLOBAL = 'Vimeo'\n\nexport default class Vimeo extends Component {\n static displayName = 'Vimeo'\n static canPlay = canPlay.vimeo\n static forceLoad = true // Prevent checking isLoading when URL changes\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n this.duration = null\n getSDK(SDK_URL, SDK_GLOBAL).then(Vimeo => {\n if (!this.container) return\n const { playerOptions, title } = this.props.config\n this.player = new Vimeo.Player(this.container, {\n url,\n autoplay: this.props.playing,\n muted: this.props.muted,\n loop: this.props.loop,\n playsinline: this.props.playsinline,\n controls: this.props.controls,\n ...playerOptions\n })\n this.player.ready().then(() => {\n const iframe = this.container.querySelector('iframe')\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n if (title) {\n iframe.title = title\n }\n }).catch(this.props.onError)\n this.player.on('loaded', () => {\n this.props.onReady()\n this.refreshDuration()\n })\n this.player.on('play', () => {\n this.props.onPlay()\n this.refreshDuration()\n })\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', e => this.props.onSeek(e.seconds))\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ seconds }) => {\n this.currentTime = seconds\n })\n this.player.on('progress', ({ seconds }) => {\n this.secondsLoaded = seconds\n })\n this.player.on('bufferstart', this.props.onBuffer)\n this.player.on('bufferend', this.props.onBufferEnd)\n this.player.on('playbackratechange', e => this.props.onPlaybackRateChange(e.playbackRate))\n }, this.props.onError)\n }\n\n refreshDuration () {\n this.player.getDuration().then(duration => {\n this.duration = duration\n })\n }\n\n play () {\n const promise = this.callPlayer('play')\n if (promise) {\n promise.catch(this.props.onError)\n }\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n this.callPlayer('unload')\n }\n\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n\n setPlaybackRate (rate) {\n this.callPlayer('setPlaybackRate', rate)\n }\n\n mute = () => {\n this.setVolume(0)\n }\n\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.currentTime\n }\n\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n\n ref = container => {\n this.container = container\n }\n\n render () {\n const { display } = this.props\n const style = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n display\n }\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport { canPlay } from '../patterns'\n\nconst SDK_URL = 'https://connect.facebook.net/en_US/sdk.js'\nconst SDK_GLOBAL = 'FB'\nconst SDK_GLOBAL_READY = 'fbAsyncInit'\nconst PLAYER_ID_PREFIX = 'facebook-player-'\n\nexport default class Facebook extends Component {\n static displayName = 'Facebook'\n static canPlay = canPlay.facebook\n static loopOnEnded = true\n callPlayer = callPlayer\n playerID = this.props.config.playerId || `${PLAYER_ID_PREFIX}${randomString()}`\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url, isReady) {\n if (isReady) {\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => FB.XFBML.parse())\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => {\n FB.init({\n appId: this.props.config.appId,\n xfbml: true,\n version: this.props.config.version\n })\n FB.Event.subscribe('xfbml.render', msg => {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n this.props.onLoaded()\n })\n FB.Event.subscribe('xfbml.ready', msg => {\n if (msg.type === 'video' && msg.id === this.playerID) {\n this.player = msg.instance\n this.player.subscribe('startedPlaying', this.props.onPlay)\n this.player.subscribe('paused', this.props.onPause)\n this.player.subscribe('finishedPlaying', this.props.onEnded)\n this.player.subscribe('startedBuffering', this.props.onBuffer)\n this.player.subscribe('finishedBuffering', this.props.onBufferEnd)\n this.player.subscribe('error', this.props.onError)\n if (this.props.muted) {\n this.callPlayer('mute')\n } else {\n this.callPlayer('unmute')\n }\n this.props.onReady()\n\n // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n document.getElementById(this.playerID).querySelector('iframe').style.visibility = 'visible'\n }\n })\n })\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n mute = () => {\n this.callPlayer('mute')\n }\n\n unmute = () => {\n this.callPlayer('unmute')\n }\n\n getDuration () {\n return this.callPlayer('getDuration')\n }\n\n getCurrentTime () {\n return this.callPlayer('getCurrentPosition')\n }\n\n getSecondsLoaded () {\n return null\n }\n\n render () {\n const { attributes } = this.props.config\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport { canPlay, MATCH_URL_STREAMABLE } from '../patterns'\n\nconst SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js'\nconst SDK_GLOBAL = 'playerjs'\n\nexport default class Streamable extends Component {\n static displayName = 'Streamable'\n static canPlay = canPlay.streamable\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(playerjs => {\n if (!this.iframe) return\n this.player = new playerjs.Player(this.iframe)\n this.player.setLoop(this.props.loop)\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', this.props.onSeek)\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ duration, seconds }) => {\n this.duration = duration\n this.currentTime = seconds\n })\n this.player.on('buffered', ({ percent }) => {\n if (this.duration) {\n this.secondsLoaded = this.duration * percent\n }\n })\n if (this.props.muted) {\n this.player.mute()\n }\n }, this.props.onError)\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n\n mute = () => {\n this.callPlayer('mute')\n }\n\n unmute = () => {\n this.callPlayer('unmute')\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.currentTime\n }\n\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n\n ref = iframe => {\n this.iframe = iframe\n }\n\n render () {\n const id = this.props.url.match(MATCH_URL_STREAMABLE)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport { canPlay, MATCH_URL_WISTIA } from '../patterns'\n\nconst SDK_URL = 'https://fast.wistia.com/assets/external/E-v1.js'\nconst SDK_GLOBAL = 'Wistia'\nconst PLAYER_ID_PREFIX = 'wistia-player-'\n\nexport default class Wistia extends Component {\n static displayName = 'Wistia'\n static canPlay = canPlay.wistia\n static loopOnEnded = true\n callPlayer = callPlayer\n playerID = this.props.config.playerId || `${PLAYER_ID_PREFIX}${randomString()}`\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n const { playing, muted, controls, onReady, config, onError } = this.props\n getSDK(SDK_URL, SDK_GLOBAL).then(Wistia => {\n if (config.customControls) {\n config.customControls.forEach(control => Wistia.defineControl(control))\n }\n window._wq = window._wq || []\n window._wq.push({\n id: this.playerID,\n options: {\n autoPlay: playing,\n silentAutoPlay: 'allow',\n muted: muted,\n controlsVisibleOnLoad: controls,\n fullscreenButton: controls,\n playbar: controls,\n playbackRateControl: controls,\n qualityControl: controls,\n volumeControl: controls,\n settingsControl: controls,\n smallPlayButton: controls,\n ...config.options\n },\n onReady: player => {\n this.player = player\n this.unbind()\n this.player.bind('play', this.onPlay)\n this.player.bind('pause', this.onPause)\n this.player.bind('seek', this.onSeek)\n this.player.bind('end', this.onEnded)\n this.player.bind('playbackratechange', this.onPlaybackRateChange)\n onReady()\n }\n })\n }, onError)\n }\n\n unbind () {\n this.player.unbind('play', this.onPlay)\n this.player.unbind('pause', this.onPause)\n this.player.unbind('seek', this.onSeek)\n this.player.unbind('end', this.onEnded)\n this.player.unbind('playbackratechange', this.onPlaybackRateChange)\n }\n\n // Proxy methods to prevent listener leaks\n onPlay = (...args) => this.props.onPlay(...args)\n onPause = (...args) => this.props.onPause(...args)\n onSeek = (...args) => this.props.onSeek(...args)\n onEnded = (...args) => this.props.onEnded(...args)\n onPlaybackRateChange = (...args) => this.props.onPlaybackRateChange(...args)\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n this.unbind()\n this.callPlayer('remove')\n }\n\n seekTo (seconds) {\n this.callPlayer('time', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('volume', fraction)\n }\n\n mute = () => {\n this.callPlayer('mute')\n }\n\n unmute = () => {\n this.callPlayer('unmute')\n }\n\n setPlaybackRate (rate) {\n this.callPlayer('playbackRate', rate)\n }\n\n getDuration () {\n return this.callPlayer('duration')\n }\n\n getCurrentTime () {\n return this.callPlayer('time')\n }\n\n getSecondsLoaded () {\n return null\n }\n\n render () {\n const { url } = this.props\n const videoID = url && url.match(MATCH_URL_WISTIA)[1]\n const className = `wistia_embed wistia_async_${videoID}`\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime, randomString } from '../utils'\nimport { canPlay, MATCH_URL_TWITCH_CHANNEL, MATCH_URL_TWITCH_VIDEO } from '../patterns'\n\nconst SDK_URL = 'https://player.twitch.tv/js/embed/v1.js'\nconst SDK_GLOBAL = 'Twitch'\nconst PLAYER_ID_PREFIX = 'twitch-player-'\n\nexport default class Twitch extends Component {\n static displayName = 'Twitch'\n static canPlay = canPlay.twitch\n static loopOnEnded = true\n callPlayer = callPlayer\n playerID = this.props.config.playerId || `${PLAYER_ID_PREFIX}${randomString()}`\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url, isReady) {\n const { playsinline, onError, config, controls } = this.props\n const isChannel = MATCH_URL_TWITCH_CHANNEL.test(url)\n const id = isChannel ? url.match(MATCH_URL_TWITCH_CHANNEL)[1] : url.match(MATCH_URL_TWITCH_VIDEO)[1]\n if (isReady) {\n if (isChannel) {\n this.player.setChannel(id)\n } else {\n this.player.setVideo('v' + id)\n }\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL).then(Twitch => {\n this.player = new Twitch.Player(this.playerID, {\n video: isChannel ? '' : id,\n channel: isChannel ? id : '',\n height: '100%',\n width: '100%',\n playsinline: playsinline,\n autoplay: this.props.playing,\n muted: this.props.muted,\n // https://github.com/CookPete/react-player/issues/733#issuecomment-549085859\n controls: isChannel ? true : controls,\n time: parseStartTime(url),\n ...config.options\n })\n const { READY, PLAYING, PAUSE, ENDED, ONLINE, OFFLINE, SEEK } = Twitch.Player\n this.player.addEventListener(READY, this.props.onReady)\n this.player.addEventListener(PLAYING, this.props.onPlay)\n this.player.addEventListener(PAUSE, this.props.onPause)\n this.player.addEventListener(ENDED, this.props.onEnded)\n this.player.addEventListener(SEEK, this.props.onSeek)\n\n // Prevent weird isLoading behaviour when streams are offline\n this.player.addEventListener(ONLINE, this.props.onLoaded)\n this.player.addEventListener(OFFLINE, this.props.onLoaded)\n }, onError)\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n this.callPlayer('pause')\n }\n\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n\n getDuration () {\n return this.callPlayer('getDuration')\n }\n\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n\n getSecondsLoaded () {\n return null\n }\n\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime } from '../utils'\nimport { canPlay, MATCH_URL_DAILYMOTION } from '../patterns'\n\nconst SDK_URL = 'https://api.dmcdn.net/all.js'\nconst SDK_GLOBAL = 'DM'\nconst SDK_GLOBAL_READY = 'dmAsyncInit'\n\nexport default class DailyMotion extends Component {\n static displayName = 'DailyMotion'\n static canPlay = canPlay.dailymotion\n static loopOnEnded = true\n callPlayer = callPlayer\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n const { controls, config, onError, playing } = this.props\n const [, id] = url.match(MATCH_URL_DAILYMOTION)\n if (this.player) {\n this.player.load(id, {\n start: parseStartTime(url),\n autoplay: playing\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, DM => DM.player).then(DM => {\n if (!this.container) return\n const Player = DM.player\n this.player = new Player(this.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: {\n controls: controls,\n autoplay: this.props.playing,\n mute: this.props.muted,\n start: parseStartTime(url),\n origin: window.location.origin,\n ...config.params\n },\n events: {\n apiready: this.props.onReady,\n seeked: () => this.props.onSeek(this.player.currentTime),\n video_end: this.props.onEnded,\n durationchange: this.onDurationChange,\n pause: this.props.onPause,\n playing: this.props.onPlay,\n waiting: this.props.onBuffer,\n error: event => onError(event)\n }\n })\n }, onError)\n }\n\n onDurationChange = () => {\n const duration = this.getDuration()\n this.props.onDuration(duration)\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n\n getDuration () {\n return this.player.duration || null\n }\n\n getCurrentTime () {\n return this.player.currentTime\n }\n\n getSecondsLoaded () {\n return this.player.bufferedTime\n }\n\n ref = container => {\n this.container = container\n }\n\n render () {\n const { display } = this.props\n const style = {\n width: '100%',\n height: '100%',\n display\n }\n return (\n
\n
\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, queryString } from '../utils'\nimport { canPlay, MATCH_URL_MIXCLOUD } from '../patterns'\n\nconst SDK_URL = 'https://widget.mixcloud.com/media/js/widgetApi.js'\nconst SDK_GLOBAL = 'Mixcloud'\n\nexport default class Mixcloud extends Component {\n static displayName = 'Mixcloud'\n static canPlay = canPlay.mixcloud\n static loopOnEnded = true\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(Mixcloud => {\n this.player = Mixcloud.PlayerWidget(this.iframe)\n this.player.ready.then(() => {\n this.player.events.play.on(this.props.onPlay)\n this.player.events.pause.on(this.props.onPause)\n this.player.events.ended.on(this.props.onEnded)\n this.player.events.error.on(this.props.error)\n this.player.events.progress.on((seconds, duration) => {\n this.currentTime = seconds\n this.duration = duration\n })\n this.props.onReady()\n })\n }, this.props.onError)\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n\n setVolume (fraction) {\n // No volume support\n }\n\n mute = () => {\n // No volume support\n }\n\n unmute = () => {\n // No volume support\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.currentTime\n }\n\n getSecondsLoaded () {\n return null\n }\n\n ref = iframe => {\n this.iframe = iframe\n }\n\n render () {\n const { url, config } = this.props\n const id = url.match(MATCH_URL_MIXCLOUD)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n const query = queryString({\n ...config.options,\n feed: `/${id}/`\n })\n // We have to give the iframe a key here to prevent a\n // weird dialog appearing when loading a new track\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport { canPlay, MATCH_URL_VIDYARD } from '../patterns'\n\nconst SDK_URL = 'https://play.vidyard.com/embed/v4.js'\nconst SDK_GLOBAL = 'VidyardV4'\nconst SDK_GLOBAL_READY = 'onVidyardAPI'\n\nexport default class Vidyard extends Component {\n static displayName = 'Vidyard'\n static canPlay = canPlay.vidyard\n callPlayer = callPlayer\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n const { playing, config, onError, onDuration } = this.props\n const id = url && url.match(MATCH_URL_VIDYARD)[1]\n if (this.player) {\n this.stop()\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(Vidyard => {\n if (!this.container) return\n Vidyard.api.addReadyListener((data, player) => {\n if (this.player) {\n return\n }\n this.player = player\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('seek', this.props.onSeek)\n this.player.on('playerComplete', this.props.onEnded)\n }, id)\n Vidyard.api.renderPlayer({\n uuid: id,\n container: this.container,\n autoplay: playing ? 1 : 0,\n ...config.options\n })\n Vidyard.api.getPlayerMetadata(id).then(meta => {\n this.duration = meta.length_in_seconds\n onDuration(meta.length_in_seconds)\n })\n }, onError)\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n window.VidyardV4.api.destroyPlayer(this.player)\n }\n\n seekTo (amount) {\n this.callPlayer('seek', amount)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n mute = () => {\n this.setVolume(0)\n }\n\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n\n setPlaybackRate (rate) {\n this.callPlayer('setPlaybackSpeed', rate)\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.callPlayer('currentTime')\n }\n\n getSecondsLoaded () {\n return null\n }\n\n ref = container => {\n this.container = container\n }\n\n render () {\n const { display } = this.props\n const style = {\n width: '100%',\n height: '100%',\n display\n }\n return (\n
\n
\n
\n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport { canPlay } from '../patterns'\n\nconst SDK_URL = 'https://cdn.embed.ly/player-0.1.0.min.js'\nconst SDK_GLOBAL = 'playerjs'\n\nexport default class Kaltura extends Component {\n static displayName = 'Kaltura'\n static canPlay = canPlay.kaltura\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n }\n\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(playerjs => {\n if (!this.iframe) return\n this.player = new playerjs.Player(this.iframe)\n this.player.on('ready', () => {\n // An arbitrary timeout is required otherwise\n // the event listeners won’t work\n setTimeout(() => {\n this.player.isReady = true\n this.player.setLoop(this.props.loop)\n if (this.props.muted) {\n this.player.mute()\n }\n this.addListeners(this.player, this.props)\n this.props.onReady()\n }, 500)\n })\n }, this.props.onError)\n }\n\n addListeners (player, props) {\n player.on('play', props.onPlay)\n player.on('pause', props.onPause)\n player.on('ended', props.onEnded)\n player.on('error', props.onError)\n player.on('timeupdate', ({ duration, seconds }) => {\n this.duration = duration\n this.currentTime = seconds\n })\n }\n\n play () {\n this.callPlayer('play')\n }\n\n pause () {\n this.callPlayer('pause')\n }\n\n stop () {\n // Nothing to do\n }\n\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n\n mute = () => {\n this.callPlayer('mute')\n }\n\n unmute = () => {\n this.callPlayer('unmute')\n }\n\n getDuration () {\n return this.duration\n }\n\n getCurrentTime () {\n return this.currentTime\n }\n\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n\n ref = iframe => {\n this.iframe = iframe\n }\n\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n \n )\n }\n}\n","import React, { Component } from 'react'\n\nimport { getSDK, isMediaStream, supportsWebKitPresentationMode } from '../utils'\nimport { canPlay, AUDIO_EXTENSIONS, HLS_EXTENSIONS, DASH_EXTENSIONS, FLV_EXTENSIONS } from '../patterns'\n\nconst HAS_NAVIGATOR = typeof navigator !== 'undefined'\nconst IS_IPAD_PRO = HAS_NAVIGATOR && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1\nconst IS_IOS = HAS_NAVIGATOR && (/iPad|iPhone|iPod/.test(navigator.userAgent) || IS_IPAD_PRO) && !window.MSStream\nconst HLS_SDK_URL = 'https://cdn.jsdelivr.net/npm/hls.js@VERSION/dist/hls.min.js'\nconst HLS_GLOBAL = 'Hls'\nconst DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js'\nconst DASH_GLOBAL = 'dashjs'\nconst FLV_SDK_URL = 'https://cdn.jsdelivr.net/npm/flv.js@VERSION/dist/flv.min.js'\nconst FLV_GLOBAL = 'flvjs'\nconst MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/\nconst MATCH_CLOUDFLARE_STREAM = /https:\\/\\/watch\\.cloudflarestream\\.com\\/([a-z0-9]+)/\nconst REPLACE_CLOUDFLARE_STREAM = 'https://videodelivery.net/{id}/manifest/video.m3u8'\n\nexport default class FilePlayer extends Component {\n static displayName = 'FilePlayer'\n static canPlay = canPlay.file\n\n componentDidMount () {\n this.props.onMount && this.props.onMount(this)\n this.addListeners(this.player)\n this.player.src = this.getSource(this.props.url) // Ensure src is set in strict mode\n if (IS_IOS) {\n this.player.load()\n }\n }\n\n componentDidUpdate (prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.removeListeners(this.prevPlayer, prevProps.url)\n this.addListeners(this.player)\n }\n\n if (\n this.props.url !== prevProps.url &&\n !isMediaStream(this.props.url)\n ) {\n this.player.srcObject = null\n }\n }\n\n componentWillUnmount () {\n this.player.src = ''\n this.removeListeners(this.player)\n if (this.hls) {\n this.hls.destroy()\n }\n }\n\n addListeners (player) {\n const { url, playsinline } = this.props\n player.addEventListener('play', this.onPlay)\n player.addEventListener('waiting', this.onBuffer)\n player.addEventListener('playing', this.onBufferEnd)\n player.addEventListener('pause', this.onPause)\n player.addEventListener('seeked', this.onSeek)\n player.addEventListener('ended', this.onEnded)\n player.addEventListener('error', this.onError)\n player.addEventListener('ratechange', this.onPlayBackRateChange)\n player.addEventListener('enterpictureinpicture', this.onEnablePIP)\n player.addEventListener('leavepictureinpicture', this.onDisablePIP)\n player.addEventListener('webkitpresentationmodechanged', this.onPresentationModeChange)\n if (!this.shouldUseHLS(url)) { // onReady is handled by hls.js\n player.addEventListener('canplay', this.onReady)\n }\n if (playsinline) {\n player.setAttribute('playsinline', '')\n player.setAttribute('webkit-playsinline', '')\n player.setAttribute('x5-playsinline', '')\n }\n }\n\n removeListeners (player, url) {\n player.removeEventListener('canplay', this.onReady)\n player.removeEventListener('play', this.onPlay)\n player.removeEventListener('waiting', this.onBuffer)\n player.removeEventListener('playing', this.onBufferEnd)\n player.removeEventListener('pause', this.onPause)\n player.removeEventListener('seeked', this.onSeek)\n player.removeEventListener('ended', this.onEnded)\n player.removeEventListener('error', this.onError)\n player.removeEventListener('ratechange', this.onPlayBackRateChange)\n player.removeEventListener('enterpictureinpicture', this.onEnablePIP)\n player.removeEventListener('leavepictureinpicture', this.onDisablePIP)\n player.removeEventListener('webkitpresentationmodechanged', this.onPresentationModeChange)\n if (!this.shouldUseHLS(url)) { // onReady is handled by hls.js\n player.removeEventListener('canplay', this.onReady)\n }\n }\n\n // Proxy methods to prevent listener leaks\n onReady = (...args) => this.props.onReady(...args)\n onPlay = (...args) => this.props.onPlay(...args)\n onBuffer = (...args) => this.props.onBuffer(...args)\n onBufferEnd = (...args) => this.props.onBufferEnd(...args)\n onPause = (...args) => this.props.onPause(...args)\n onEnded = (...args) => this.props.onEnded(...args)\n onError = (...args) => this.props.onError(...args)\n onPlayBackRateChange = (event) => this.props.onPlaybackRateChange(event.target.playbackRate)\n onEnablePIP = (...args) => this.props.onEnablePIP(...args)\n\n onDisablePIP = e => {\n const { onDisablePIP, playing } = this.props\n onDisablePIP(e)\n if (playing) {\n this.play()\n }\n }\n\n onPresentationModeChange = e => {\n if (this.player && supportsWebKitPresentationMode(this.player)) {\n const { webkitPresentationMode } = this.player\n if (webkitPresentationMode === 'picture-in-picture') {\n this.onEnablePIP(e)\n } else if (webkitPresentationMode === 'inline') {\n this.onDisablePIP(e)\n }\n }\n }\n\n onSeek = e => {\n this.props.onSeek(e.target.currentTime)\n }\n\n shouldUseAudio (props) {\n if (props.config.forceVideo) {\n return false\n }\n if (props.config.attributes.poster) {\n return false // Use