Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 1x 32x 32x 32x 32x 32x 1x 1x | import {createRef, forwardRef, Suspense, useRef} from 'react' import PropTypes from 'prop-types' import useDetectVideoType from './hooks/useDetectVideoType.js' import useScrollAutoplayEffect from './hooks/useScrollAutoplayEffect.js' import useVideoPlayer from './hooks/useVideoPlayer.js' import { AUTOPLAY, AUTOPLAY_DEFAULT_VALUE, AUTOPLAY_OPTIONS, BASE_CLASS, INTERSECTION_OBSERVER_DEFAULT_CONFIGURATION, NO_OP, UNKNOWN } from './settings/index.js' const AtomVideoPlayer = forwardRef( ( { autoPlay = AUTOPLAY_DEFAULT_VALUE, controls = true, fallbackComponent = null, fallbackWhileNotOnViewport = false, intersectionObserverConfiguration = INTERSECTION_OBSERVER_DEFAULT_CONFIGURATION, muted = false, onLoadVideo = NO_OP, playsInline = false, src = '', timeLimit, timeOffset, title, loop = false }, forwardedRef = createRef() ) => { const [Component, props] = useVideoPlayer({ autoPlay, controls, muted, onLoadVideo, playsInline, src, timeLimit, title, timeOffset, loop }) const componentRef = useRef(null) const autoPlayState = useScrollAutoplayEffect({ autoPlay, intersectionObserverConfiguration, muted, ref: componentRef }) const needsToRenderFallbackComponent = fallbackWhileNotOnViewport === true && autoPlay === AUTOPLAY.ON_VIEWPORT && !autoPlayState return ( <div ref={componentRef} className={BASE_CLASS}> {needsToRenderFallbackComponent ? ( fallbackComponent ) : ( <Suspense fallback={fallbackComponent}> <Component {...{ ...props, autoPlay: autoPlayState, ref: forwardedRef }} /> </Suspense> )} </div> ) } ) AtomVideoPlayer.displayName = 'AtomVideoPlayer' AtomVideoPlayer.propTypes = { autoPlay: PropTypes.oneOf(AUTOPLAY_OPTIONS), controls: PropTypes.bool, fallbackComponent: PropTypes.node, fallbackWhileNotOnViewport: PropTypes.bool, intersectionObserverConfiguration: PropTypes.shape({ root: PropTypes.instanceOf(Element), rootMargin: PropTypes.string, threshold: PropTypes.number }), muted: PropTypes.bool, onLoadVideo: PropTypes.func, playsInline: PropTypes.bool, src: PropTypes.oneOfType([PropTypes.string, PropTypes.func]), timeLimit: PropTypes.number, timeOffset: PropTypes.number, title: PropTypes.string, loop: PropTypes.bool } export default AtomVideoPlayer export {AUTOPLAY, UNKNOWN, useDetectVideoType} |