Skip to content
Snippets Groups Projects
Select Git revision
  • 338fb8b695421bbe1264dc1265b7060e2c2a0957
  • annotation-on-video default protected
  • demo_ci
  • 3-upstream-01022023
  • master
  • gh3538-captions
  • 16-adapt-for-images-annot
  • 15-api-for-annotations-on-video
  • 15-annotations-on-videos
  • video_for_annotations
  • wip-1-annotations-on-videos
  • 9-videoviewer-tests
  • 9_wip_videotests
  • 6-fix-tests-and-ci
  • _fix_ci
  • wip-webpack-from-git
16 results

AudioViewer.js

Blame
  • AudioViewer.js 1.35 KiB
    import React, { Component, Fragment } from 'react';
    import PropTypes from 'prop-types';
    
    /** */
    export class AudioViewer extends Component {
      /* eslint-disable jsx-a11y/media-has-caption */
      /** */
      render() {
        const {
          captions, classes, audioOptions, audioResources,
        } = this.props;
    
        return (
          <div className={classes.container}>
            <audio className={classes.audio} {...audioOptions}>
              {audioResources.map(audio => (
                <Fragment key={audio.id}>
                  <source src={audio.id} type={audio.getFormat()} />
                </Fragment>
              ))}
              {captions.map(caption => (
                <Fragment key={caption.id}>
                  <track src={caption.id} label={caption.getDefaultLabel()} srcLang={caption.getProperty('language')} />
                </Fragment>
              ))}
            </audio>
          </div>
        );
      }
      /* eslint-enable jsx-a11y/media-has-caption */
    }
    
    AudioViewer.propTypes = {
      audioOptions: PropTypes.object, // eslint-disable-line react/forbid-prop-types
      audioResources: PropTypes.arrayOf(PropTypes.object), // eslint-disable-line react/forbid-prop-types
      captions: PropTypes.arrayOf(PropTypes.object), // eslint-disable-line react/forbid-prop-types
      classes: PropTypes.objectOf(PropTypes.string).isRequired,
    };
    
    AudioViewer.defaultProps = {
      audioOptions: {},
      audioResources: [],
      captions: [],
    };