@mkhuda/react-shaka-player
Version:
React video player built with Shaka-Player
2 lines (1 loc) • 5.71 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),n=require("shaka-player/dist/shaka-player.ui");function r(e){if(e&&e.__esModule)return e;var n=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var t=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(n,r,t.get?t:{enumerable:!0,get:function(){return e[r]}})}})),n.default=e,Object.freeze(n)}var t=r(e),o=function(){return o=Object.assign||function(e){for(var n,r=1,t=arguments.length;r<t;r++)for(var o in n=arguments[r])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},o.apply(this,arguments)};function a(e,n,r,t){return new(r||(r=Promise))((function(o,a){function u(e){try{f(t.next(e))}catch(e){a(e)}}function i(e){try{f(t.throw(e))}catch(e){a(e)}}function f(e){var n;e.done?o(e.value):(n=e.value,n instanceof r?n:new r((function(e){e(n)}))).then(u,i)}f((t=t.apply(e,n||[])).next())}))}function u(e,n){var r,t,o,a,u={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function i(a){return function(i){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;u;)try{if(r=1,t&&(o=2&a[0]?t.return:a[0]?t.throw||((o=t.return)&&o.call(t),0):t.next)&&!(o=o.call(t,a[1])).done)return o;switch(t=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return u.label++,{value:a[1],done:!1};case 5:u.label++,t=a[1],a=[0];continue;case 7:a=u.ops.pop(),u.trys.pop();continue;default:if(!(o=u.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){u=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){u.label=a[1];break}if(6===a[0]&&u.label<o[1]){u.label=o[1],o=a;break}if(o&&u.label<o[2]){u.label=o[2],u.ops.push(a);break}o[2]&&u.ops.pop(),u.trys.pop();continue}a=n.call(e,u)}catch(e){a=[6,e],t=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,i])}}}var i,f={manifest:{dash:{ignoreMinBufferTime:!0}},streaming:{lowLatencyMode:!0,inaccurateManifestTolerance:0,rebufferingGoal:1,smallGapLimit:1,jumpLargeGaps:!0,durationBackoff:0}},s={addSeekBar:!1,controlPanelElements:["time_and_duration","mute","fullscreen"]},c={controlPanelElements:["play_pause","time_and_duration","mute","fullscreen"]};exports.SuperConfig=void 0,(i=exports.SuperConfig||(exports.SuperConfig={})).STREAMING="STREAMING",i.VOD="VOD";var l=function(e,r,o,a){var u=t.useState(null),i=u[0],f=u[1];return t.useEffect((function(){if(e){var t=new n.ui.Overlay(e,o.current,r.current);f(t)}return function(){i&&i.destroy()}}),[e]),t.useEffect((function(){if(i&&a.uiConfig)i.configure(a.uiConfig);else if(i&&a.superConfig)switch(a.superConfig){case exports.SuperConfig.STREAMING:i.configure(s);break;case exports.SuperConfig.VOD:i.configure(c);break;default:i.configure({})}}),[i,a]),i},p=function(e,r,o){var i=t.useState(null),s=i[0],c=i[1],p=l(s,e,r,o);return t.useEffect((function(){n.polyfill.installAll();var r=new n.Player(e.current);return c(r),function(){r.destroy()}}),[]),t.useEffect((function(){s&&o.onLoad&&o.onLoad({player:s,ui:p,videoElement:e.current})}),[s]),t.useEffect((function(){if(s&&o.config)s.configure(o.config);else if(s&&o.superConfig)if(o.superConfig===exports.SuperConfig.STREAMING)s.configure(f);else s.configure({})}),[s,o.config]),t.useEffect((function(){if(s&&o.src&&n.Player.isBrowserSupported()){a(void 0,void 0,void 0,(function(){var e;return u(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,s.load(o.src)];case 1:return n.sent(),[3,3];case 2:return e=n.sent(),o.onPlayerError&&o.onPlayerError(e),[3,3];case 3:return[2]}}))}))}}),[s,o.src]),{player:s,ui:p}},d=function(e,n){t.useEffect((function(){e&&(e.addEventListener("error",(function(e){n.onPlayerError&&n.onPlayerError(e)})),e.addEventListener("buffering",(function(e){var r=e.buffering;n.onBuffering&&n.onBuffering(r)})))}),[e])},y=function(e,n,r){t.useEffect((function(){if(n&&e){var t=n.getMediaElement();t.addEventListener("play",(function(){r.onPlay&&r.onPlay()})),t.addEventListener("pause",(function(){r.onPause&&r.onPause()})),t.addEventListener("ended",(function(){r.onEnded&&r.onEnded()}))}}),[n,e])},g=function(e,r){var a=t.useRef(null);t.useEffect((function(){if(e){var t=new n.util.Timer((function(){var n,t;n=e.getStats(),t={mediaCurrentTime:e.getMediaElement()&&Math.floor(e.getMediaElement().currentTime),mediaEndTime:Math.floor(e.seekRange().end)},r.onStatsChanged&&r.onStatsChanged(o(o({},n),t))}));t.tickEvery(1),a.current=t}return function(){e&&a&&a.current.stop()}}),[e])};exports.ReactShakaPlayer=function(e){var n=t.useRef(null),r=t.useRef(null),a=p(n,r,e),u=a.player,i=a.ui;d(u,e),y(i,u,e),g(u,e);var f=e.className;e.playerClassName,e.superConfig,e.config,e.uiConfig,e.onLoad,e.onPlay,e.onPause,e.onEnded,e.onBuffering,e.onStatsChanged,e.onPlayerError;var s=function(e,n){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&n.indexOf(t)<0&&(r[t]=e[t]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(t=Object.getOwnPropertySymbols(e);o<t.length;o++)n.indexOf(t[o])<0&&Object.prototype.propertyIsEnumerable.call(e,t[o])&&(r[t[o]]=e[t[o]])}return r}(e,["className","playerClassName","superConfig","config","uiConfig","onLoad","onPlay","onPause","onEnded","onBuffering","onStatsChanged","onPlayerError"]),c={maxWidth:"100%",width:"100%"},l=null==f?"mk-theme":"mk-theme "+e.className;return t.createElement("div",{style:c,ref:r,className:l},t.createElement("video",o({ref:n,className:e.playerClassName,style:c},s)))},exports.usePlayer=p,exports.usePlayerListener=d,exports.useStats=g,exports.useUI=l,exports.useUIListener=y;