UNPKG

@nethesis/phone-island

Version:
3 lines (2 loc) 2.84 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");require("../node_modules/react-redux/es/index.js");var r=require("../store/index.js"),t=require("../node_modules/react-redux/es/hooks/useDispatch.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(e),i={large:{0:4,1:3,2:2,3:1,4:1,5:2,6:3,7:4},small:{0:2,1:1,2:1,3:2}};exports.AudioBars=function(n){var a=n.audioStream,c=void 0===a?null:a,o=n.audioElement,s=void 0===o?null:o,l=n.paused,d=void 0!==l&&l,m=n.size,f=void 0===m?"large":m,p=e.useRef(null),v=e.useRef(null),y=e.useRef(null),h=e.useRef(null),A=e.useRef(null),E=i[f],B=t.useDispatch(),x=e.useCallback((function(){var e;if(h.current&&(null===(e=p.current)||void 0===e?void 0:e.children))try{var r=new Uint8Array(h.current.frequencyBinCount);h.current.getByteFrequencyData(r);for(var t=p.current.children,n=Object.keys(E).length,u=0;u<n;++u){var i=r[E[u]]/255,a=t[u];a&&(a.style.height=i>0?"".concat(100*i,"%"):"0%")}d||(v.current=requestAnimationFrame(x))}catch(e){console.error("AudioBars animation error:",e)}}),[E,d]);return e.useEffect((function(){var e=function(){v.current&&(cancelAnimationFrame(v.current),v.current=null)},t=function(){if(A.current)try{A.current.disconnect()}catch(e){}};if(c&&!c.active)return console.warn("AudioBars: audio stream is not active"),e;try{var n=r.store.getState().audioBars,u=n.audioElementContext,i=n.audioElementAnalyser,a=n.audioElementSource,o=n.isReady;s&&o?(y.current=u,h.current=i,A.current=a):(y.current=new AudioContext,h.current=y.current.createAnalyser(),h.current.smoothingTimeConstant=.8,h.current.fftSize=32,c?A.current=y.current.createMediaStreamSource(c):s&&(A.current=y.current.createMediaElementSource(s),B.audioBars.setAudioElementContext(y.current),B.audioBars.setAudioElementAnalyser(h.current),B.audioBars.setAudioElementSource(A.current),B.audioBars.setIsReady(!0))),h.current&&A.current&&(t(),A.current.connect(h.current),s&&h.current.connect(y.current.destination),d||(e(),v.current=requestAnimationFrame(x)))}catch(r){console.error("AudioBars initialization error:",r),e()}return function(){e(),t()}}),[c,s,x,B.audioBars,d]),e.useEffect((function(){h.current&&(v.current&&(cancelAnimationFrame(v.current),v.current=null),d||(v.current=requestAnimationFrame(x)))}),[f,d,x]),u.default.createElement("div",{className:"".concat("small"===f?"pi-h-6 pi-w-6":"pi-h-12 pi-w-12"," pi-flex pi-justify-center pi-items-center")},u.default.createElement("div",{className:"".concat("small"===f?"pi-h-6":"pi-h-8"," pi-w-fit pi-flex pi-justify-center pi-items-center pi-gap-1 pi-overflow-hidden"),ref:p},(c||s)&&Object.keys(E).map((function(e){return u.default.createElement("span",{key:e,className:"pi-bg-emerald-700 dark:pi-bg-emerald-600 pi-w-0.5 pi-rounded-sm"})}))))}; //# sourceMappingURL=AudioBars.js.map