@oplayer/react
Version:
React wrapper for oplayer.
9 lines (8 loc) • 2.53 kB
JavaScript
/**
* name: @oplayer/react
* version: v1.2.11-beta.2
* description: React wrapper for oplayer.
* author: shiyiya
* homepage: https://github.com/shiyiya/oplayer
*/
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("react/jsx-runtime"),require("@oplayer/core"),require("react")):"function"==typeof define&&define.amd?define(["exports","react/jsx-runtime","@oplayer/core","react"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).oplayer_react={},e.jsxRuntime,e.OPlayer,e.React)}(this,(function(e,r,t,n){"use strict";const u=["playing","duration","aspectRatio","plugins","onEvent","source"];const o=n.forwardRef(((e,o)=>{const s=e.playing,a=e.duration,l=e.aspectRatio,f=void 0===l?9/16:l,d=e.plugins,p=void 0===d?[]:d,y=e.onEvent,m=e.source,b=function(e,r){if(null==e)return{};var t={};for(var n in e)if({}.hasOwnProperty.call(e,n)){if(r.includes(n))continue;t[n]=e[n]}return t}(e,u),v=n.useRef(y);v.current=y;const g=n.useRef(null),h=i(m),j=g.current&&g.current.$root,P=n.useCallback((e=>{if(null!==e&&!j){const r=m instanceof Promise?b:Object.assign({},b,{source:m});g.current=t.make(e,r).use(p).create(),m instanceof Promise&&g.current.changeSource(m),"number"==typeof a&&g.current.seek(a/1e3),y&&g.current.on((e=>{var r;return null==(r=v.current)?void 0:r.call(v,e)}))}}),[]);return c(j,(()=>{s?g.current.isPlaying||g.current.play():g.current.isPlaying&&g.current.pause()}),[s]),c(j,(()=>{m&&(m instanceof Promise?h!=m:m.src&&(null==h?void 0:h.src)!==m.src)&&g.current.changeSource(m)}),[m]),c(j&&"number"==typeof a,(()=>{g.current.seek(a/1e3)}),[a]),c(j,(()=>{b.muted?g.current.mute():g.current.unmute()}),[b.muted]),c(j,(()=>{g.current.setPlaybackRate(b.playbackRate)}),[b.playbackRate]),n.useEffect((()=>()=>{var e;null==(e=g.current)||e.destroy(),g.current=null}),[]),n.useImperativeHandle(o,(()=>g.current),[]),n.useMemo((()=>0==f?r.jsx("div",{ref:P}):r.jsx("div",{style:{width:"100%",paddingTop:100*f+"%",backgroundColor:"#f4f4f4",position:"relative"},children:r.jsx("div",{style:{position:"absolute",top:0,left:0,width:"100%",height:"100%"},ref:P})})),[])})),c=(e,r,t)=>{n.useEffect((()=>{if(Boolean(e))return r()}),t)};function i(e){const r=n.useRef();return n.useEffect((()=>{r.current=e}),[e]),r.current}e.default=o,e.usePrevious=i,Object.keys(t).forEach((r=>{"default"===r||Object.prototype.hasOwnProperty.call(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:()=>t[r]})})),Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));