UNPKG

@hirebus/academy

Version:

React component library for academy and learning platforms

2 lines (1 loc) 4.5 kB
"use strict";const O=require("./index-BH5PkfxW.cjs"),I=require("react");function L(a,e){for(var t=0;t<e.length;t++){const s=e[t];if(typeof s!="string"&&!Array.isArray(s)){for(const r in s)if(r!=="default"&&!(r in a)){const n=Object.getOwnPropertyDescriptor(s,r);n&&Object.defineProperty(a,r,n.get?n:{enumerable:!0,get:()=>s[r]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}var M=Object.create,u=Object.defineProperty,Y=Object.getOwnPropertyDescriptor,k=Object.getOwnPropertyNames,N=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty,V=(a,e,t)=>e in a?u(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,B=(a,e)=>{for(var t in e)u(a,t,{get:e[t],enumerable:!0})},w=(a,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of k(e))!j.call(a,r)&&r!==t&&u(a,r,{get:()=>e[r],enumerable:!(s=Y(e,r))||s.enumerable});return a},K=(a,e,t)=>(t=a!=null?M(N(a)):{},w(!a||!a.__esModule?u(t,"default",{value:a,enumerable:!0}):t,a)),x=a=>w(u({},"__esModule",{value:!0}),a),o=(a,e,t)=>(V(a,typeof e!="symbol"?e+"":e,t),t),S={};B(S,{default:()=>T});var D=x(S),b=K(I),c=O.utils,E=O.patterns;const F="https://www.youtube.com/iframe_api",v="YT",H="onYouTubeIframeAPIReady",f=/[?&](?:list|channel)=([a-zA-Z0-9_-]+)/,m=/user\/([a-zA-Z0-9_-]+)\/?/,G=/youtube-nocookie\.com/,z="https://www.youtube-nocookie.com";class T extends b.Component{constructor(){super(...arguments),o(this,"callPlayer",c.callPlayer),o(this,"parsePlaylist",e=>{if(e instanceof Array)return{listType:"playlist",playlist:e.map(this.getID).join(",")};if(f.test(e)){const[,t]=e.match(f);return{listType:"playlist",list:t.replace(/^UC/,"UU")}}if(m.test(e)){const[,t]=e.match(m);return{listType:"user_uploads",list:t}}return{}}),o(this,"onStateChange",e=>{const{data:t}=e,{onPlay:s,onPause:r,onBuffer:n,onBufferEnd:P,onEnded:_,onReady:g,loop:y,config:{playerVars:l,onUnstarted:d}}=this.props,{UNSTARTED:h,PLAYING:p,PAUSED:i,BUFFERING:A,ENDED:C,CUED:R}=window[v].PlayerState;if(t===h&&d(),t===p&&(s(),P()),t===i&&r(),t===A&&n(),t===C){const U=!!this.callPlayer("getPlaylist");y&&!U&&(l.start?this.seekTo(l.start):this.play()),_()}t===R&&g()}),o(this,"mute",()=>{this.callPlayer("mute")}),o(this,"unmute",()=>{this.callPlayer("unMute")}),o(this,"ref",e=>{this.container=e})}componentDidMount(){this.props.onMount&&this.props.onMount(this)}getID(e){return!e||e instanceof Array||f.test(e)?null:e.match(E.MATCH_URL_YOUTUBE)[1]}load(e,t){const{playing:s,muted:r,playsinline:n,controls:P,loop:_,config:g,onError:y}=this.props,{playerVars:l,embedOptions:d}=g,h=this.getID(e);if(t){if(f.test(e)||m.test(e)||e instanceof Array){this.player.loadPlaylist(this.parsePlaylist(e));return}this.player.cueVideoById({videoId:h,startSeconds:(0,c.parseStartTime)(e)||l.start,endSeconds:(0,c.parseEndTime)(e)||l.end});return}(0,c.getSDK)(F,v,H,p=>p.loaded).then(p=>{this.container&&(this.player=new p.Player(this.container,{width:"100%",height:"100%",videoId:h,playerVars:{autoplay:s?1:0,mute:r?1:0,controls:P?1:0,start:(0,c.parseStartTime)(e),end:(0,c.parseEndTime)(e),origin:window.location.origin,playsinline:n?1:0,...this.parsePlaylist(e),...l},events:{onReady:()=>{_&&this.player.setLoop(!0),this.props.onReady()},onPlaybackRateChange:i=>this.props.onPlaybackRateChange(i.data),onPlaybackQualityChange:i=>this.props.onPlaybackQualityChange(i),onStateChange:this.onStateChange,onError:i=>y(i.data)},host:G.test(e)?z:void 0,...d}))},y),d.events&&console.warn("Using `embedOptions.events` will likely break things. Use ReactPlayer’s callback props instead, eg onReady, onPlay, onPause")}play(){this.callPlayer("playVideo")}pause(){this.callPlayer("pauseVideo")}stop(){document.body.contains(this.callPlayer("getIframe"))&&this.callPlayer("stopVideo")}seekTo(e,t=!1){this.callPlayer("seekTo",e),!t&&!this.props.playing&&this.pause()}setVolume(e){this.callPlayer("setVolume",e*100)}setPlaybackRate(e){this.callPlayer("setPlaybackRate",e)}setLoop(e){this.callPlayer("setLoop",e)}getDuration(){return this.callPlayer("getDuration")}getCurrentTime(){return this.callPlayer("getCurrentTime")}getSecondsLoaded(){return this.callPlayer("getVideoLoadedFraction")*this.getDuration()}render(){const{display:e}=this.props,t={width:"100%",height:"100%",display:e};return b.default.createElement("div",{style:t},b.default.createElement("div",{ref:this.ref}))}}o(T,"displayName","YouTube");o(T,"canPlay",E.canPlay.youtube);const q=O.getDefaultExportFromCjs(D),Q=L({__proto__:null,default:q},[D]);exports.YouTube=Q;