UNPKG

@jwplayer/jwplayer-react

Version:

A react component that creates an instance of JW Player

1 lines 4.01 kB
(()=>{var e={644(e){e.exports=new Set(["hlsjsProgressive","__abSendDomainToFeeds","_abZoomThumbnail","advertising","aboutlink","abouttext","aestoken","allowFullscreen","analytics","androidhls","aspectratio","autoPause","autostart","base","captions","cast","controls","defaultBandwidthEstimate","description","displaydescription","displayHeading","displayPlaybackLabel","displaytitle","drm","duration","enableDefaultCaptions","events","file","forceLocalizationDefaults","fwassetid","floating","ga","generateSEOMetadata","height","hlsjsConfig","hlsjsdefault","horizontalVolumeSlider","image","intl","key","listbar","liveSyncDuration","liveTimeout","localization","logo","mediaid","mute","nextUpDisplay","nextupoffset","pad","ph","pid","pipIcon","playbackRateControls","playbackRates","playlist","playlistIndex","plugins","preload","qualityLabel","qualityLabels","recommendations","related","renderCaptionsNatively","repeat","safarihlsjs","sdkplatform","selectedBitrate","setTimeEvents","skin","sharing","sources","stagevideo","streamtype","stretching","title","tracks","type","variations","volume","width","withCredentials","doNotTrack","doNotTrackCookies","images"])}},t={};function r(a){var i=t[a];if(void 0!==i)return i.exports;var n=t[a]={exports:{}};return e[a](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";r.r(a),r.d(a,{default:()=>h});const e=require("react");var t=r.n(e);const i="all",n="^on(.*)";var s=r(644),o=r.n(s);let l=-1;function d(e,t){const r=e.match(t)||["",""];return r[1].charAt(0).toLowerCase()+r[1].slice(1)}const c=require("react/jsx-runtime");function p(e){return(t,r)=>{Object.keys(e).forEach(a=>{const s=d(a,n);s===t&&e[a](r),s===i&&e[a](t,r)})}}class u extends t().Component{constructor(e){super(e),this.ref=e.ref||t().createRef(),this.config=function(e){const t={};return Object.keys(e).forEach(r=>{o().has(r)&&(t[r]=e[r])}),{...e.config,...t,isReactComponent:!0}}(e),this.player=null,this.didMountCallback=e.didMountCallback,this.willUnmountCallback=e.willUnmountCallback,this.id=e.id||(l++,`jwplayer-${l}`),this.onHandler=null,this.library=e.library}async componentDidMount(){if(await function(e){if(!window.jwplayer&&!e)throw new Error("jwplayer-react requires either a library prop, or a library script");return window.jwplayer?Promise.resolve():function(e){return new Promise((t,r)=>{const a=document.createElement("script");a.onload=t,a.onerror=r,a.src=e,document.body.append(a)})}(e)}(this.library),this.player=this.createPlayer(),this.createEventListeners(),this.didMountCallback){const{player:e,id:t}=this;this.didMountCallback({player:e,id:t})}}shouldComponentUpdate(e){return!(!this.player||this.didOnEventsChange(e)&&(this.updateOnEventListener(e),1))}componentWillUnmount(){if(this.willUnmountCallback){const{player:e,id:t}=this;this.willUnmountCallback({player:e,id:t})}this.player&&(this.player.off(),this.player.remove(),this.player=null)}createPlayer(){const{config:e,ref:t}=this,r={...window.jwDefaults,...e},a=t.current;return window.jwplayer(a.id).setup(r)}didOnEventsChange(e){const t=e=>e.match(n),r=Object.keys(this.props).filter(t).sort(),a=Object.keys(e).filter(t).sort();return a.length!==r.length||a.some((t,a)=>r[a]!==t||e[t]!==this.props[t])}createEventListeners(){Object.keys(this.props).forEach(e=>{const t=d(e,"^once(.*)");t&&this.player.once(t,this.props[e])}),this.onHandler=p(this.props),this.player.on(i,this.onHandler)}updateOnEventListener(e){this.onHandler&&this.player.off(i,this.onHandler),this.onHandler=p(e),this.player.on(i,this.onHandler)}render(){return(0,c.jsx)("div",{id:this.id,ref:this.ref})}}const h=u})(),module.exports=a})();