use-video-interval
Version:
A React hook for executing a callback at customizable intervals during video playback.
3 lines (2 loc) • 713 B
JavaScript
import{useRef as e,useCallback as r,useEffect as t}from"react";function n(n){var a=n.videoRef,i=n.intervalCallbacks,c=n.options||{},o=c.threshold,u=void 0===o?.5:o,v=c.triggerOnce,d=void 0===v||v,f=e(new Set),s=r((function(e){for(var r=e.currentTime,t=0,n=Object.entries(i);t<n.length;t++){var a=n[t],c=a[0],o=a[1],v=parseFloat(c),s=Math.abs(r-v),l=f.current.has(v);s<=u&&(!d||!l)&&(o(),d&&f.current.add(v))}}),[i,u,d]);t((function(){var e=a.current,r=f.current;if(e){var t=function(){return s(e)};return e.addEventListener("timeupdate",t),function(){e.removeEventListener("timeupdate",t),r.clear()}}}),[s]),t((function(){f.current.clear()}),[i])}export{n as useVideoInterval};
//# sourceMappingURL=index.mjs.map